Kotlin:如何在viewModel中观察一次liveData?使用ObserveForever()和removeObserver()

问题描述 投票:1回答:1

我正在学习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 ...

非常感谢

android kotlin android-livedata
1个回答
0
投票

如果需要一次获取数据,请考虑使用suspend functions in Room并按需获取数据。

如果需要获取特定的Personnel对象并观察其DB中的变化,请将getPersonnelById(id)的值存储在LiveData<Personnel>中并从活动/片段中观察它

observeForever在测试中是最需要的,您最好使用observe function来避免每次都手动删除观察者。

© www.soinside.com 2019 - 2024. All rights reserved.