3

我很困惑为什么有人会根据文档Activity.onDestroy()覆盖而不是if :onPause()

在某些情况下,系统将简单地终止活动的托管进程,而不在其中调用此方法(或任何其他方法),

onDestroy()尽管有这个警告,我还是看到了很多覆盖的代码。为什么?

4

2 回答 2

3

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

并不是说它不可靠……只是它不是唯一Activity可以杀死的方法。如果您的设备开始缺乏内存资源,Android 系统可能会破坏您的整个进程而没有ActivityManager机会调用。onDestroy()

出于这个原因,您永远不应该依赖onDestroy()被调用,并且应该始终将持久状态保存在onPause.

于 2012-08-08T15:08:55.123 回答
0

如果进程被直接杀死,活动持有的对象将被销毁。如果进程没有被杀死(并且onDestroy()被调用),那么如果需要,您将不得不手动释放对象。例如,当进程被杀死时,Cursor 会被销毁,但如果进程没有被销毁,而你反复进入活动,则会出现资源泄漏。

于 2012-08-08T05:45:30.733 回答