Проблема заключается в последующих вызовах locationViewModel. Я делал больше вызовов с тем же идентификатором.Это препятствует удалению locationViewModel Observer.
Чтобы решить эту проблему, я теперь использую расширение LiveData ObserveOnce при последующих вызовах locationViewModel.Все, что он делает - это просто упрощает управление вызовами ViewModel, для которых требуется только один ответ.
Я не могу сказать, является ли это наилучшей практикой или нет, и его необходимость, вероятно, проистекает из плохой архитектурыв моем приложении, но для этого он работает и работает хорошо, поэтому счастливые дни, вот код Observe однажды:
fun <T> LiveData<T>.observeOnce(lifecycleOwner: LifecycleOwner, observer: Observer<T>) {
observeForever(object : Observer<T> {
override fun onChanged(t: T?) {
observer.onChanged(t)
removeObserver(this)
}
})
}
Я называю это так:
locationViewModel.getAllByID(ID).observeOnce(this, Observer {locations ->
})