onStop vs onDestroy

Tho*_*mas 9 android activity-lifecycle android-activity

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

Joa*_*iba 7

如官方文档中所述:

onDestroy()
Run Code Online (Sandbox Code Playgroud)

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

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


请注意以上documentation链接:

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

  • OnDestroy 将直接从 onCreate 中对 finish() 的任何调用中调用,跳过 onStop。当 onStop 返回时,在杀死后可以忽略 onDestroy。从 Honeycomb 开始,应用程序在 onStop() 返回之前不会处于可终止状态;pre-honeycomb onPause 是可杀死的状态。 (2认同)