Sobes.tech
Junior

How do you determine in an Activity that it has been destroyed?

sobes.tech AI

Answer from AI

Override the onDestroy() method.

class MyActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // ...
    }

    override fun onDestroy() {
        super.onDestroy()
        // This block of code will execute after the Activity is destroyed
        // You can release resources, unsubscribe from Observables, etc.
    }
}

Another way is to use LifecycleObserver with LifecycleOwner Activity.

import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent

class MyActivity : AppCompatActivity() {

    private lateinit var myLifecycleObserver: MyLifecycleObserver

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // ...

        myLifecycleObserver = MyLifecycleObserver()
        lifecycle.addObserver(myLifecycleObserver)
    }

    // ...

    inner class MyLifecycleObserver : LifecycleObserver {

        @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
        fun onDestroyEvent() {
            // This method will be called on the ON_DESTROY event
            // Equivalent to onDestroy()
        }
    }
}