适当的注销Activity生命周期回调方法是什么?

27
在Android应用程序类中,您可以注册/注销ActivityLifecycleCallbacks,这使您可以在一个地方监视应用程序中的所有Activity生命周期事件(如果您愿意的话)。
在哪里调用unregisterActivityLifecycleCallbacks才是正确的位置?我在onCreate中注册,并且认为从方法名称来看,onTerminate将是适当的位置,但文档对于onTerminate()说:

此方法用于模拟进程环境。它永远不会在生产Android设备上调用,在那里通过简单地杀死它们来删除进程;在这样做时不执行任何用户代码(包括此回调)。

我没有看到Application类中有任何其他方法可以进行“关闭”类型的回调。您甚至需要取消注册吗?

我真的很好奇你想要实现什么。关于取消注册,你不需要这样做,因为如果你的应用程序类正在关闭,那么你的进程也将关闭,所以你可以在调用super()之后,在你的进程关闭前几微秒取消注册。我猜取消注册的目的是为了让你能够在运行时更改行为。 - Simon
1个回答

34

Simon关于这个问题是正确的。 registerActivityLifecycleCallbacks并不需要匹配调用unregisterActivityLifecycleCallbacks。 正如这个SO问题所描述的那样,您无法检测到应用程序何时被杀死。 因此,没有“逻辑上”的地方可以注销回调函数。 即使有这样的地方,您的Application实例也会在最后一个Activity操作执行后被杀死,而杀死您的Application将杀死持有对回调函数引用的mActivityLifecycleCallbacks列表。

简而言之- 不用担心调用unregisterActivityLifecycleCallbacks,它只在您想要停止跟踪应用程序正常生命周期中的Activity操作时使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接