为什么不保证调用onDestroy()?

时间:2011-05-24 21:49:07

标签: android android-activity activity-lifecycle

根据android Activity Lifecycle,保证被调用的唯一回调(如果一个活动离开Running状态,通常是预期的那样)是onPause()

所以,我必须假设在某些情况下实施onStop()onDestroy()是有意义的,尽管它们并非真正被保证被调用。

我理解当活动可能通过Stopped状态返回Running状态时应该实现onStop()(为什么它会这样做而不是直接返回是一个不同的问题)。

但是,当我可以将所有清理/状态保存放入onDestroy()时,onPause()的需求对我来说还不清楚。

你能描述一下真实的应用情况(即不能驾驶汽车等),实施onDestroy()是否合理?

2 个答案:

答案 0 :(得分:25)

如果显式调用finish(),将调用

onDestroy;自己。

您的主要活动会在地图活动上调用startActivityForResult。

使用LocationListener映射活动,用户单击地图并选择说当地餐馆。

然后,活动设置一些额外内容以发送回主活动,然后显式调用finish();在onDestroy上,它会杀死LocationListener和你调用过的其他变量。

刚刚在文档中找到了这个

  

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

答案 1 :(得分:3)

  

您能描述真实应用情况吗?   (即与驾驶汽车不相似)   它是有意义的   实现onDestroy()?

如果要捕获配置更改。这一切都在SDK中: http://developer.android.com/reference/android/app/Activity.html