首页 > 解决方案 > 如何在 viewModel 中永久删除 liveData

问题描述

在 viewModel 中使用 liveData,我观察是否有任何 web api 响应返回,但是如何使用 removeObserve 方法删除特定的观察?

class MyViewModel: ViewModel() {

    fun buttomSubmit() {
        val responseLiveData = webFetch()
        responseLiveData.observeForever(
            Observe {  // define a Observe?
                doSomething()
            }
        )
    }

    override fun onCleared() {
        responseLiveData.removeObserver(observer)  // how to correctly remove the observe
        super.onCleared()
    }
}

标签: androidkotlinandroid-livedataandroid-viewmodel

解决方案


首先,定义你的观察者并存储它

val mObserver: Observer<MyClass> = Observer { obj ->
    doSomething(obj)
}

然后你可以开始永远观察

responseLiveData.observeForever(mObserver)

然后停止

responseLiveData.removeObserver(mObserver)

推荐阅读