我很困惑,如果根据documentation,有人会覆盖Activity.onDestroy()
而不是onPause()
:
在某些情况下,系统会简单地杀死活动 托管过程中没有调用此方法(或任何其他方法),
尽管有这样的警告,但我看到很多代码会覆盖onDestroy()
。为什么呢?
答案 0 :(得分:3)
如果没有可靠地调用Activity.onDestroy(),为什么要重写它?
并不是可靠地调用......只是它不是Activity
被杀死的唯一方式。如果您的设备开始缺少内存资源,Android系统可能会废弃您的整个过程而不会让ActivityManager
有机会致电onDestroy()
。
出于这个原因,你不应该依赖onDestroy()
被调用,你应该始终在onPause
中保存持久状态。
答案 1 :(得分:0)
如果直接终止进程,活动持有的对象将被销毁。如果进程未被终止(并且onDestroy()
被调用),那么您将不得不在需要时手动释放对象。例如,当进程被终止时,Cursor将被销毁,但是如果进程没有被破坏并且您反复进入活动,则会有资源泄漏。