Lifecycle
Lifecycle是為了解決記憶體流失,如果沒有釋放已經不再使用的的記憶體,最終過多的可用記憶體被分配掉會導致應用程式崩潰,讓開發者方便處理Activity和Fragment的生命周期。
Lifecycle:LiveData與ViewModel的核心。
LifecycleOwner:Activity和Fragment已實現LifecycleOwner,實現後有一個方法來添加觀察者。
lifecycle.addObserver(observer: LifecycleObserver)
LifecycleObserver:要觀察生命週期的類需要實現LifecycleObserver,用註解方式聲明該方法的生命週期。
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
實現LifecycleObserver,並添加生命週期註解(MyObserver.kt)
class MyObserver : LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
fun onCreate() {
Log.d("GOGO", "onCreate")
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun onStart() {
Log.d("GOGO", "onStart")
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
fun onResume() {
Log.d("GOGO", "onResume")
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
fun onPause() {
Log.d("GOGO", "onPause")
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun onStop() {
Log.d("GOGO", "onStop")
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
fun onDestroy() {
Log.d("GOGO", "onDestroy")
}
}
MyObserver與生命週期綁定,執行到生命週期就會掉用Function(MainActivity.kt)
lifecycle.addObserver(MyObserver())