Lifecycle in Android

Overview

Lifecycle has two components
  1. Lifecycle owner
  2. Lifecycle observer

Steps to follow

  • Add the required dependency in build.gradle (Module) file
   def lifecycle_version = "2.4.0"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
  • Create a class and extend it with LifecycleObserver class (Note: this method is deprecated)
 class MainActivityObserver : LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
fun onCreateCallback() {
Log.d("Main", "Observer - onCreate")
}

@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun onStartCallBack() {
Log.d("Main", "Observer - onStop")
}

@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
fun onResumeCallback() {
Log.d("Main", "Observer - onResume")
}

@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
fun onPauseCallback() {
Log.d("Main", "Observer - onPause")
}

@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun onStopCallback() {
Log.d("Main", "Observer - onStop")
}

@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
fun onDestroyCallback() {
Log.d("Main", "Observer - onDestroy")
}
}
  • Create an object of the class in an Activity and use it in lifecycle.addObserver(...)
 class MainActivity : AppCompatActivity() {
private lateinit var observer: MainActivityObserver
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
observer = MainActivityObserver()
lifecycle.addObserver(observer)
Log.d("Main", "Main - onCreate")
addDefaultLifeCycleObserver()
}

override fun onStart() {
super.onStart()
Log.d("Main", "Main - onStart")
}

override fun onResume() {
super.onResume()
Log.d("Main", "Main - onResume")
}

override fun onPause() {
super.onPause()
Log.d("Main", "Main - onPause")
}

override fun onStop() {
super.onStop()
Log.d("Main", "Main - onStop")
}

override fun onRestart() {
super.onRestart()
Log.d("Main", "Main - onRestart")
}

override fun onDestroy() {
super.onDestroy()
Log.d("Main", "Main - onDestroy")
}

private fun addDefaultLifeCycleObserver() {
val defaultLifecycleObserver = object : DefaultLifecycleObserver {
override fun onCreate(owner: LifecycleOwner) {
super.onCreate(owner)
Log.d("Main", "DefaultLifecycleObserver - onCreate")
}
}
lifecycle.addObserver(defaultLifecycleObserver)
}
}

Do's and Dont's

  • LifecycleObserver is deprecated. You have to use DefaultLifecycleObserver in the following manner
    private fun addDefaultLifeCycleObserver() {
val defaultLifecycleObserver = object : DefaultLifecycleObserver {
override fun onCreate(owner: LifecycleOwner) {
super.onCreate(owner)
Log.d("Main", "DefaultLifecycleObserver - onCreate")
}
}
lifecycle.addObserver(defaultLifecycleObserver)
}
}

Reference





Comments

Popular posts from this blog

SSLSocketFactory in Android

DataBinding in Android

Convert Password Characters into a placeholder character.