android - 如何在 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()
}
}
解决方案
首先,定义你的观察者并存储它
val mObserver: Observer<MyClass> = Observer { obj ->
doSomething(obj)
}
然后你可以开始永远观察
responseLiveData.observeForever(mObserver)
然后停止
responseLiveData.removeObserver(mObserver)
推荐阅读
- javascript - React 组件级别的状态管理
- angular - 浏览器导航但 url 在 e2e 测试中无法匹配
- javascript - 如何从 12 位数字的开头获取所有文本并使用正则表达式对它们进行分组
- javascript - 如何在 sequelize 中使用数据库时区获取当前日期/时间
- webgl - 不要在 webgl 中混合与自身交叉的折线
- c# - 如何检查 QueryContainer 是否具有特定属性?
- powershell - 从字符串生成唯一 ID 的最佳方法是什么?
- javascript - 移动浏览器上的缓存破坏
- sql - 获取非返回/未找到输入 sql 的列表
- netsuite - 在 Suitescript 2.0 的销售订单中保存项目行时出错