如果不能可靠地调用Activity.onDestroy(),为什么要重写它?

时间:2012-08-08 05:32:04

标签: android android-lifecycle onpause ondestroy

我很困惑,如果根据documentation,有人会覆盖Activity.onDestroy()而不是onPause()

  

在某些情况下,系统会简单地杀死活动   托管过程中没有调用此方法(或任何其他方法),

尽管有这样的警告,但我看到很多代码会覆盖onDestroy()。为什么呢?

2 个答案:

答案 0 :(得分:3)

  

如果没有可靠地调用Activity.onDestroy(),为什么要重写它?

并不是可靠地调用......只是它不是Activity被杀死的唯一方式。如果您的设备开始缺少内存资源,Android系统可能会废弃您的整个过程而不会让ActivityManager有机会致电onDestroy()

出于这个原因,你不应该依赖onDestroy()被调用,你应该始终在onPause中保存持久状态。

答案 1 :(得分:0)

如果直接终止进程,活动持有的对象将被销毁。如果进程未被终止(并且onDestroy()被调用),那么您将不得不在需要时手动释放对象。例如,当进程被终止时,Cursor将被销毁,但是如果进程没有被破坏并且您反复进入活动,则会有资源泄漏。