Kotlin:如何在 viewModel 中观察一次 liveData?使用 ObserveForever() 和 removeObserver()
Kotlin: How to Observe Once a liveData in a viewModel ? Using ObserveForever() and removeObserver()
我正在学习 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...
非常感谢
如果您需要一次获取数据-考虑使用suspend functions in Room并按需获取数据。
如果您需要获取特定的 Personnel
对象并观察它在数据库中的变化,请将 getPersonnelById(id)
的值存储在 LiveData<Personnel>
中并从 Activity/Fragment
observeForever
主要用于测试目的,您最好使用 observe function,不要每次都手动删除观察者。
我正在学习 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...
非常感谢
如果您需要一次获取数据-考虑使用suspend functions in Room并按需获取数据。
如果您需要获取特定的 Personnel
对象并观察它在数据库中的变化,请将 getPersonnelById(id)
的值存储在 LiveData<Personnel>
中并从 Activity/Fragment
observeForever
主要用于测试目的,您最好使用 observe function,不要每次都手动删除观察者。