取消注册Activity生命周期回调的正确方法是什么?

时间:2013-07-25 17:47:04

标签: android activity-lifecycle application-lifecycle

在Android Application类中,您可以注册/取消注册ActivityLifecycleCallbacks,这样您就可以在一个地方监控应用程序中的Activity生命周期事件(如果您愿意的话)。

拨打unregisterActivityLifecycleCallbacks的适当位置在哪里?我正在onCreate注册,并且认为onTerminate只是从方法名称开始,但文档说明 onTerminate()

  

此方法适用于模拟过程环境。永远不会   在生产Android设备上调用,删除进程   简单地杀死他们;没有用户代码(包括此回调)   执行时执行。

我在Application类中没有看到任何其他方法,其中进行了'shutdown'类型的回调。你甚至需要取消注册吗?

1 个答案:

答案 0 :(得分:25)

Simon对此是正确的。 registerActivityLifecycleCallbacks不需要匹配unregisterActivityLifecycleCallbacks的匹配。如this SO question中所述,您无法检测到应用程序何时被杀死。因此,取消注册回调没有“合乎逻辑”的地方。即使有,Application实例在最后Activity次操作后被杀死,并且Application的查杀会导致mActivityLifecycleCallbacks被杀无论如何,它都包含对你的回调的引用。

TL; DR - 请不要担心拨打unregisterActivityLifecycleCallbacks,只有在Activity正常生命周期内才停止跟踪Application操作时才会出现此问题。