Lifecycle設計講解
Lifecycle的設計其實十分簡單,主要就是Lifecycle對象和LifecycleOwner接口
-
Lifecycle用于記錄對象的生命周期,以及在生命周期發生改變時通知外部
-
LifecycleOwner用于表示對象具備生命周期管理能力
-
LifecycleOwner的實現方式很簡單,提供一個Lifecycle來管理生命周期即可
-
Lifecycle的功能也很簡單,就是setState,然后notifyObserver
-
androidx提供了LifecycleRegistry來直接創建一個簡單的Lifecycle
-
這樣任何對象,都可能通過創建LifecycleRegistry+實現LifecycleOwner接口的方式,快速實現Lifecycle功能
-
Lifecycle對外的使用方式是,observable.observe(owner, observer)
-
這行代碼的實質是,owner.lifecycle.addObserver(compose(observable, observer))
-
當lifecycle結束時,會通知observable,observable同時從訂閱者列表中移除observer
-
這樣就實現了observer監聽observable,并且在owner銷毀時停止監聽的效果
實現代碼
package com.android.appimport androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LifecycleRegistry
import androidx.lifecycle.MutableLiveDataclass LiveObject : LifecycleOwner {override val lifecycle = LifecycleRegistry(this)constructor() {lifecycle.currentState = Lifecycle.State.CREATED}fun start() {lifecycle.currentState = Lifecycle.State.RESUMED}fun dispose() {lifecycle.currentState = Lifecycle.State.DESTROYED}
}class CallingObject {private val lifecycleObject = LiveObject()private val observable = MutableLiveData("")fun doSomethingWhenObjectIsAlive() {observable.observe(lifecycleObject) {println("event: $it")}}
}