onStop 与 onDestroy

onStop vs onDestroy

我曾尝试研究 activity 何时调用 onDestroy 方法,但我读到了一些令人困惑和相互矛盾的信息。一般来说,我的问题是:在什么情况下 onDestroy 方法实际上是在 activity 上调用的?更具体地说,如果我有两个活动,activity A 和 activity B,如果 activity A 是 运行 并且我创建一个意图并切换到 activity B ,activityA只停了,还是被毁了?

如官方所述documentation:

onDestroy()

在你的 activity 被摧毁之前你接到的最后一个电话。这可能是因为 activity 正在完成(有人在其上调用了 finish() ,或者是因为系统正在临时销毁 activity 的这个实例以保存 space。你可以区分这两个场景用isFinishing()方法。

在您的示例中,Activity A 已停止并可能被系统销毁


注意 根据 documentation link 以上:

…do not count on [onDestroy()] being called as a place for saving data … [see] either onPause() or onSaveInstanceState(Bundle).

onDestroy() 被调用时:

  • 用户从"recent apps"屏幕中取出activity。
  • 用户从"recent apps"屏幕中取出activity。

onStop() 被调用时:

  • 用户离开当前activity。

因此在您的示例中,当用户启动 Activity B 时,Activity A 调用 onStop()

编辑: 根据文档,onDestroy() 方法并不总是被调用。 onStop() 总是以 Honeycomb 开头调用,因此请将您在 activity 停止之前明确需要执行的代码移动到那里。

Starting with Honeycomb, an application is not in the killable state until its onStop() has returned. https://developer.android.com/reference/android/app/Activity#ActivityLifecycle

希望对您有所帮助 :D