Kotlin: Как наблюдать один раз liveData в viewModel? Использование ObserveForever () и removeObserver () - PullRequest
1 голос
/ 28 февраля 2020

Я учусь 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}")
        }

    }
}

Я использовал, как рекомендовано, замечаниеForever, но я не знаю, как в этом случае использовать removeObserver ...

Большое спасибо

1 Ответ

0 голосов
/ 28 февраля 2020

Если вам нужно получить данные один раз - рассмотрите возможность использования функций приостановки в комнате и получите данные по запросу.

Если вам нужно получить конкретный объект Personnel и наблюдать за изменениями в DB его, сохраните значение getPersonnelById(id) в LiveData<Personnel> и наблюдайте его из Activity / Fragment

observeForever в основном требуется в целях тестирования, вам лучше использовать наблюдать функцию , чтобы не удалять наблюдателя вручную каждый раз.

...