自定义 LifecycleOwner
自定义 LifecycleOwner,可以自己维护一个生命周期。
class MyCustomLifecycleOwner : LifecycleOwner {
private val lifecycleRegistry = LifecycleRegistry(this)
init {
// 这里可以设置你想要的初始状态
lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_RESUME)
}
fun onDestroy() {
// 在Activity的onDestroy中调用此方法以销毁Lifecycle
lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_DESTROY)
}
override fun getLifecycle(): Lifecycle {
return lifecycleRegistry
}
}
Activity 中代码
class MainActivity : AppCompatActivity() {
private val viewModel: MainActivityViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
viewModel.observe(MyCustomLifecycleOwner()) {}
}
override fun onDestroy() {
super.onDestroy()
customLifecycleOwner?.onDestroy()
}
}
自定义 LifecycleObserver
自定义 LifecycleObserver 可以将指定的生命周期中所要执行的操作抽取到单独的类中,然后在 UI 页面调用 addObserver 添加观察者即可,无需再从 activity 或者 fragment 中的生命周期的回调方法去操作。
class MyObserver : DefaultLifecycleObserver {
override fun onResume(owner: LifecycleOwner) {
connect()
}
override fun onPause(owner: LifecycleOwner) {
disconnect()
}
}
myLifecycleOwner.getLifecycle().addObserver(MyObserver())