场景: 点击按钮出现一个二级菜单,livedata 只想监听在菜单弹起到销毁过程中的状态。 如果使用Fragment(Activity) 的 LifecycleOwner,会导致监听的生命周期过长,所以需要根据二级菜单真实生命周期创建 LifecycleOwner
原理 : // TODO 稍后补充
基本实现 :
abstract class BaseUtils : LifecycleOwner {
private val lifecycleRegistry by lazy { LifecycleRegistry(this) }
init {
}
fun initView(){
lifecycleRegistry.markState(Lifecycle.State.STARTED)
}
open fun destory(){
lifecycleRegistry.markState(Lifecycle.State.DESTROYED)
}
override fun getLifecycle(): Lifecycle {
return lifecycleRegistry
}
}