在我的应用程序中,我有一个功能,允许用户更新一组个性化的应用程序设置,由一个名为 useNew 的布尔标志触发。保持中断的可能性,如果a)用户取消操作或b)活动处理意外杀死此逻辑,我将 useNew 重置为false。 我把重置逻辑放在onStop中,因为Android指定,在Honeycomb之后,它是保证被调用的最后一个生命周期事件:https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
除了一个以外,所有情况下都能正常运行。如果我在Studio中运行应用程序,然后在应用程序仍然打开的情况下,尝试再次从Studio运行它,我收到此警告消息,这将导致我的会话终止。
选择“重新启动应用”会关闭我的活动,而不会调用onStop。我的标志永远不会重置,在下一个应用程序运行时,逻辑会失败。
我的问题:这种行为在Studio中是单独出现的,还是在极少数情况下可以跳过onStop?
答案 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()方法将任何持久性数据(例如用户编辑)写入存储。