自定义具有生命周期的基类

场景: 点击按钮出现一个二级菜单,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
    }
}

你可能感兴趣的:(自定义具有生命周期的基类)