Ручка для удаления / добавления Live Data Observer для наблюдения за нажатием кнопки - PullRequest
5 голосов
/ 13 марта 2020

Я хочу наблюдать за строкой в ​​базе данных комнаты. это изменится через некоторое время. но когда мы останавливаем нажатие кнопки, необходимо прекратить наблюдение за базой данных формы, а когда нажимаем кнопку «пуск», она начинает наблюдение снова.

Мой текущий код - «Создание наблюдателя»

    private lateinit var recordObserver: Observer<Ride>

    recordObserver= Observer<Ride> { rides ->

                    if (rides != null) 

                        updateData(rides)

                    else
                        setDataToZero()
                } 

when(isState){
     Constants.isrunning->{//need to start observer}
     Constants.Stop->{//need to stop observer}
}

1 Ответ

1 голос
/ 13 марта 2020

Чтобы начать / остановить наблюдение LiveData, вы должны использовать observe() / removeObserver() методы. Так просто. Если у вас есть доступ к LifecycleOwner (Fragment, Activity), используйте fun observe(), если нет - используйте fun observeForever().

Ваш код будет выглядеть следующим образом:

val liveData = database.observeRides()  // get your live data
when(isState){
    Constants.isrunning -> { 
        liveData.observe(this, recordObserver) 
    }
    Constants.Stop -> {
        liveData.removeObserver(recordObserver) 
    }
}
...