fun lifeCycleTest() {
val viewModel = TodoViewModel()
val lifeCycleOwner = MyLifeCycleOwner()
viewModel.todoLiveData.observe(lifeCycleOwner, Observer { todos ->
Log.i("anotherTest", "$todos ")
})
lifeCycleOwner.start()
Log.i("anotherTest", "end of test")
}
class MyLifeCycleOwner: LifecycleOwner {
private val lifecycleRegistry = LifecycleRegistry(this)
init {
lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_CREATE)
}
fun start() {
lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_RESUME)
}
override fun getLifecycle(): Lifecycle {
return lifecycleRegistry
}
}
CustomLifeCycle
LiveData 與 LifeCycleOwner 之間的關係可以看這份文件,請特別注意 STARTED 跟 DESTROYED 的部分
https://developer.android.com/reference/android/arch/lifecycle/LiveData#observe