- 此问题在此处已有答案**:
Is it mandatory to remove yourself as an observer from Android Lifecycle?(3个答案)
三年前关闭了。
这是一个非常简单的问题:
背景
我使用相对较新的Lifecycle class(android architecture components libraries的一部分)以更简单的方式处理Activity/Fragment
的一些事件。
下面是如何使用它来处理ON_DESTROY事件:
lifecycle.addObserver(object : LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
fun onDestroy() {
lifecycle.removeObserver(this)
//Do something
}
})
问题是
我在docs和这里找不到,我是否应该调用removeObserver
,或者它是在ON_DESTROY事件后自动完成的。
我所尝试的
我试着阅读有关它的信息,现在作为预防措施,我总是调用removeObserver
。
这个问题
避免在ON_DESTROY事件发生时调用removeObserver
是否安全?
2条答案
按热度按时间n9vozmp41#
在github上有一个关于这个主题的讨论链。
据我所知,没有必要显式调用
removeObserve
。唯一的原因是生命周期感知组件是专门设计来确保观察者被删除的。
下面是讨论此问题的链接:https://github.com/googlecodelabs/android-lifecycles/issues/5
fafcakar2#
在我看来,如果你在应用程序中调用
lifecycle.addObserver
,你不必调用removeObserver
,当应用程序被销毁时,进程也会被杀死。如果你在活动中调用lifecycle.addObserver
,你需要在OnDestroy
方法上调用removeObserver
。