Kotlin:如何在视图模型中观察Once a liveData?使用ObserveForever()和removeOb



我正在学习Kotlin,并尝试使用相同的ViewModel来显示用户列表和编辑用户。

我正在使用房间,所以我有一个需要观察的"getPersonnelById(("。问题是我只想观察一次,但我不知道如何做…

这是我的功能

private fun retrievePersonnelData(id: Long){
if(id != -1L){
val observer = dataSource.getPersonnelById(id).observeForever{
newPersonnel.value = it
Timber.e("Valeur newPersonnel = ${newPersonnel.value}")
}
}
}

我已经按照建议使用了observeForever,但我不知道在这种情况下如何使用removeObserver。。。

非常感谢

如果您需要一次性获取数据,请考虑在Room中使用suspend函数并按需获取数据。

如果您需要获得一个特定的Personnel对象并观察其DB中的变化,请将getPersonnelById(id)的值存储在LiveData<Personnel>中,并从Activity/Fragment 中观察它

observeForever主要用于测试目的,您应该更好地使用observe函数,而不是每次都手动删除一个观察者。

最新更新