onStop vs onDestroy

时间:2015-03-30 20:05:23

标签: android android-activity activity-lifecycle

我试图准确研究何时为某项活动调用onDestroy方法,但我已经阅读了一些令人困惑和冲突的信息。一般来说,我的问题是:在什么情况下onDestroy方法实际上调用了一个活动?更具体地说,如果我有两个活动,即活动A和活动B,如果活动A正在运行并且我创建了一个意图并切换到活动B,那么活动A是仅停止还是被销毁?

2 个答案:

答案 0 :(得分:7)

如官方documentation中所述:

onDestroy()

您的活动被销毁之前收到的最后一个电话。这可能是因为活动正在完成(有人在其上调用finish(),或者因为系统暂时销毁此活动实例以节省空间。您可以使用isFinishing()方法区分这两种情况。

在您的示例中,活动A已停止,可能会被系统销毁

<小时/> 注意上面的每个documentation链接:

...不要指望[onDestroy()]被称为保存数据的地方...... [请参阅] onPause()onSaveInstanceState(Bundle)

答案 1 :(得分:-5)

只要在以下情况下调用

onDestroy()

  • 用户从“最近的应用”屏幕中取出活动。
  • 用户从“最近的应用”屏幕中取出活动。
只要在以下情况下调用

onStop()

  • 用户离开当前活动。

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

修改: 根据文档,并不总是调用onDestroy()方法。始终使用Honeycomb调用onStop(),因此在活动停止之前移动您明确需要执行的代码。

  

从Honeycomb开始,应用程序在返回onStop()之前不处于killable状态。   https://developer.android.com/reference/android/app/Activity#ActivityLifecycle

希望这有帮助:D