【发布时间】:2018-07-24 13:29:00
【问题描述】:
有没有办法完全删除以前的活动?
说明:
我有一个 SplashScreen 活动,我正在加载数据等,然后当它完成时,我将导航到 MainActivity,如下所示:
startActivity(Intent(applicationContext, MainActivity::class.java))
finish()
我的MainActivity 出现在前台,在这里没问题,但是当我是listening to Lifecycle Event 和ProcessLifeCycleOwner library 时,在这种特殊情况下:
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun appWillEnterBackground() {
Log.e("INACTIVE", "BECOME INACTIVE")
}
当我使用MainActivity 时,我的两个活动都使用这种方法。我的SplashScreenActivity应该不能进入这个方法,因为我finish()吧。
我尝试在finish() 之后返回,我在Manifest.xml 中尝试了"noHistory=true",但都没有成功。
有什么建议吗?
【问题讨论】:
-
谁是生命周期观察者?你的活动?你可能会泄露你的启动活动
-
你在完成你的启动画面时做过这样的事情吗:myLifecycleOwner.getLifecycle().removeObserver(this);
-
不,我没有做这样的事情,但我找到了一种方法。在我的 Splashscreen onDestroy() 方法上,我将布尔值设置为 false,然后在任何我想要的地方使用它,以跳过使用 SplashScreen 活动“销毁”的步骤
-
这不是好的解决方案,你必须找到问题的根源。您可能会泄漏启动画面,这可能会导致以后出现问题
-
我的 Splashscreen 调用 webservice 并从 Firebase 获取一些数据。当我通过回调得到所有东西时,当过程完成时,我只需调用 start MainActivity
标签: android kotlin background android-lifecycle foreground