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")}}
}