android 我是否需要在发生onDestroy()事件时调用生命周期的removeObserver?[duplicate]

5t7ly7z5  于 2023-01-07  发布在  Android
关注(0)|答案(2)|浏览(162)
    • 此问题在此处已有答案**:

Is it mandatory to remove yourself as an observer from Android Lifecycle?(3个答案)
三年前关闭了。
这是一个非常简单的问题:

背景

我使用相对较新的Lifecycle classandroid 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是否安全?

n9vozmp4

n9vozmp41#

在github上有一个关于这个主题的讨论链。
据我所知,没有必要显式调用removeObserve
唯一的原因是生命周期感知组件是专门设计来确保观察者被删除的。
下面是讨论此问题的链接:https://github.com/googlecodelabs/android-lifecycles/issues/5

fafcakar

fafcakar2#

在我看来,如果你在应用程序中调用lifecycle.addObserver,你不必调用removeObserver,当应用程序被销毁时,进程也会被杀死。如果你在活动中调用lifecycle.addObserver,你需要在OnDestroy方法上调用removeObserver

相关问题