【问题标题】:How to remove liveData forever observe in viewModel如何在 viewModel 中永久删除 liveData
【发布时间】:2020-02-25 15:35:21
【问题描述】:

在 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()
    }
}

【问题讨论】:

  • 仅供参考:在 onCleared() 中调用 removeObserver 没有意义,因为这个函数只会在片段/活动销毁时被调用。
  • 您不应该将 LiveData 用于单个回调,而应该使用回调。

标签: android kotlin android-livedata android-viewmodel


【解决方案1】:

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

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

然后你就可以开始永久观察了

responseLiveData.observeForever(mObserver)

然后停止

responseLiveData.removeObserver(mObserver)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 2017-01-06
    • 1970-01-01
    相关资源
    最近更新 更多