我不明白为什么有人会覆盖
Activity.onDestroy()
而非 onPause()
,因为根据文档:
尽管有这个警告,我看到很多代码仍覆盖了有些情况下,系统会直接杀死 Activity 的宿主进程,而不调用此方法或其他任何方法。
onDestroy()
。为什么?
onDestroy()
而不是始终使用onPause()
? - Jeff AxelrodonPause
中保存状态的原因是,在调用onPause
之后,Activity
要么没有焦点,要么不显示在屏幕上,这使得Android系统有可能杀死Activity
以节省内存资源。因此,在调用onPause
之后,未保存的更改不再是“安全的”...因此,常见的建议是在Activity
失去焦点之前在onPause
中进行这些更改。 - Alex LockwoodonDestroy
更多是用于清理目的...例如,如果您曾经创建了一个Thread
,您会希望确保在onDestroy
中杀死它们,以便一旦Activity
被销毁,Thread
不会继续运行。(注意: 如果系统杀死整个进程,则无需担心在Thread
后进行清理,因为Thread
存在于进程中。) - Alex LockwoodonPause
中保存您不想丢失的信息更改,一旦Activity
被销毁,以及(2)在onDestroy
中关闭您已打开的有价值的资源,以防止内存泄漏。在我的经验中,你真正需要重写onDestroy
的情况并不太多。 - Alex Lockwood