Skip to content

練功場 part 5 - CustomLifeCycle #6

@hungyanbin

Description

@hungyanbin

CustomLifeCycle

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

LiveData 與 LifeCycleOwner 之間的關係可以看這份文件,請特別注意 STARTED 跟 DESTROYED 的部分

https://developer.android.com/reference/android/arch/lifecycle/LiveData#observe

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions