Do I need to call removeObserver for lifecycle, upon its onDestroy() event?

5.7k Views Asked by At

This is a very simple question:

Background

I'm using the relatively new Lifecycle class (part of the android architecture components libraries) to handle some events of the Activity/Fragment in an easier way.

This is how you use it for handling ON_DESTROY event:

            lifecycle.addObserver(object : LifecycleObserver {
                @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
                fun onDestroy() {
                    lifecycle.removeObserver(this)
                    //Do something
                }
            })

The problem

I can't find in the docs and here, whether I should call removeObserver or that it's done automatically anyway upon the ON_DESTROY event.

What I've tried

I tried to read about it, and for now as a precaution I always call removeObserver .

The question

Is it safe to avoid calling removeObserver upon ON_DESTROY event?

2

There are 2 best solutions below

0
On BEST ANSWER

There is one chain of discussion over github related this topic.

As far as I know, there is no need to call removeObserve explicitly.

The only reason is that lifecycle-aware components are specifically designed to make sure the observer is removed.

Here is the link to where this is discussed: https://github.com/googlecodelabs/android-lifecycles/issues/5

0
On

In my point, if you call lifecycle.addObserver in application, you don't have to call removeObserver, when the application is destroyed, the process would be killed also. If you call lifecycle.addObserver in an activity, you need to call removeObserver on OnDestroy method.