上一个活动仍然存在

时间:2018-07-24 13:29:01

标签: android kotlin background android-lifecycle foreground

是否可以完全删除以前的活动?

说明:

我有一个SplashScreen活动,我正在其中装载数据,等等,然后当它完成时,我导航到MainActivity,就像这样:

startActivity(Intent(applicationContext, MainActivity::class.java))
finish()

我的MainActivity排在前台,这没问题,但是在listening to Lifecycle EventProcessLifeCycleOwner library的情况下,在这种情况下:

@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun appWillEnterBackground() {
    Log.e("INACTIVE", "BECOME INACTIVE")
}

当我在MainActivity上时,我的两项活动都正在使用此方法。我的SplashScreen活动不能输入此方法,因为我finish()

我尝试在finish()之后返回,我在"noHistory=true"中尝试了Manifest.xml,但都没有起作用。

有什么建议吗?

5 个答案:

答案 0 :(得分:0)

您可以尝试array方法。

  

finishAffinity():完成此活动以及位于其下方的所有活动。   具有相似关系的当前任务。

答案 1 :(得分:0)

首先调用完成方法,然后开始新的活动。

finish()
startActivity(Intent(applicationContext, MainActivity::class.java));

答案 2 :(得分:0)

您可以对MainActivity使用singletop启动类型。

    <activity android:name=".SingleTaskActivity"
              android:launchMode="singleTask">

答案 3 :(得分:0)

在要杀死的活动中创建广播接收器。使用“ ACTION_KILL_THIS_ACTIVITY”之类的意图动作来注册它。在此广播接收器的onReceive方法中,添加finish();线。当您的新活动开始时,您准备杀死另一个活动,因此从新活动的onCreate()方法中,调用

sendBroadcast(new Intent("ACTION_KILL_THIS_ACTIVITY"));

答案 4 :(得分:0)

与其传递applicationContext而不是传递SplashScreenActivity.this作为参数,所以您的代码将如下所示:

startActivity(Intent(SplashScreenActivity.this, MainActivity.class)); finish();