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,不要每次都手动删除观察者。