我试图研究活动调用onDestroy方法的确切时间,但我读到了一些令人困惑和冲突的信息。一般来说,我的问题是:在什么情况下,onDestroy方法实际上是在活动上调用的?更具体地说,如果我有两个活动,活动A和活动B,如果活动A正在运行,并且我创建了一个意图并切换到活动B,那么活动A是只停止了,还是被销毁了?
发布于 2015-03-31 04:09:21
正如官方documentation中声明的那样
onDestroy()在你的活动被销毁之前你收到的最后一个电话。这可能是因为活动正在结束(有人对其调用finish() ),也可能是因为系统临时销毁了该活动的此实例以节省空间。您可以使用isFinishing()方法区分这两种场景。
在您的示例中,活动A已停止,可能会被系统销毁
以上每个documentation链接的注释:
…不要指望将
onDestroy()作为保存数据…的位置来调用请参阅onPause()或onSaveInstanceState(Bundle)。
发布于 2015-03-31 05:14:08
只要执行以下操作,就会调用onDestroy():
只要执行以下操作,就会调用onStop():
因此,在您的示例中,当用户启动活动B时,活动A称为onStop()。
编辑:根据文档,onDestroy()方法并不总是被调用。onStop()总是以Honeycomb开头调用,因此在活动停止之前,请将您明确需要执行的代码移至此处。
从Honeycomb开始,在返回onStop()之前,应用程序不会处于可终止状态。https://developer.android.com/reference/android/app/Activity#ActivityLifecycle
希望这能有所帮助:D
https://stackoverflow.com/questions/29355290
复制相似问题