我有一个LocalBroadcastReceiver
,我unregistering
就是ondestroy()
。
现在我读到这两个SO答案is-ondestroy-not-always-called和why-implement-ondestroy-if-it-is-not-guaranteed-to-be-called以及Androi Docs中提及的ondestroy()
如果显式调用finish(); ,将调用onDestroy
但是为什么在我的情况下,我没有打电话给finish()
,但我的所有Android设备每次都会调用ondestroy()
。同样根据你们,ondestroy()
没有被调用的情况在哪里。
即使Android会杀死我的应用程序(由于内存较少),我也不必担心因为Android会杀死我的整个应用程序,所以接收器最终会被杀死。(所以不会有任何记忆泄漏)。
因此,对于我的用例,哪些情况下ondestroy()
不会被调用。
答案 0 :(得分:2)
但是为什么在我的情况下我不是在调用finish()但是仍然会在所有Android设备中调用ondestroy()。
onBackPressed()
的默认实现 - 由BACK按钮触发的内容 - 调用finish()
。
无法调用ondestroy()的情况。
如果您因未处理的异常而崩溃
如果您的流程以紧急方式终止(例如,系统需要RAM来处理来电)
如果用户在设置
在少数设备上,如果用户使用制造商提供的任务管理器终止您的流程
即使Android会杀死我的应用程序(由于内存较少),我也不必担心,因为Android会杀死我的整个应用程序,因此接收器最终会被杀死
是的,因为您的整个过程将被终止。