重新启动Android应用程序绕过onStop

时间:2017-07-12 20:48:48

标签: android android-lifecycle

在我的应用程序中,我有一个功能,允许用户更新一组个性化的应用程序设置,由一个名为 useNew 的布尔标志触发。保持中断的可能性,如果a)用户取消操作或b)活动处理意外杀死此逻辑,我将 useNew 重置为false。 我把重置逻辑放在onStop中,因为Android指定,在Honeycomb之后,它是保证被调用的最后一个生命周期事件:https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

除了一个以外,所有情况下都能正常运行。如果我在Studio中运行应用程序,然后在应用程序仍然打开的情况下,尝试再次从Studio运行它,我收到此警告消息,这将导致我的会话终止。 enter image description here

选择“重新启动应用”会关闭我的活动,而不会调用onStop。我的标志永远不会重置,在下一个应用程序运行时,逻辑会失败。

我的问题:这种行为在Studio中是单独出现的,还是在极少数情况下可以跳过onStop?

2 个答案:

答案 0 :(得分:0)

当Android Studio杀死应用程序以重新启动它时,操作很有力,因此它不会遵循任何生命周期语义。它没有经过"正常"驱动Math.NumberTheory.Powers.General> :set +s Math.NumberTheory.Powers.General> integerRoot 786 ((10^32)^786) 100000000000000000000000000000000 (0.04 secs, 227,064 bytes) Math.NumberTheory.Powers.General> integerRoot 787 ((10^32)^787) 生命周期状态的机制。可以把它想象成为托管应用程序的进程运行Activity

答案 1 :(得分:0)

你确定没有调用onStop吗?可能发生的是调用onStop但没有运行相应的代码。在强制重启应用程序的Android Studio中,它会立即终止您的应用程序。

从Google文档中,onStop是一种可用的方法。

  

对于[killable方法],在该方法返回之后,托管该活动的进程可能在任何时候被系统杀死,而不会执行其代码的另一行。

相反,任何持久保存数据的代码(即自动保存用户数据)都应放在onPause()中。

  

您应该使用onPause()方法将任何持久性数据(例如用户编辑)写入存储。