处理 Remove/Add 实时数据观察器以观察按钮单击

Handle To Remove/Add Live Data Observer to Observe On Button Click

我想观察房间数据库中的一行。它会在一段时间后改变。但是当我们停止按钮点击时,它需要停止观察数据库,当点击开始按钮时,它再次开始观察。

我当前的代码是 创建观察者

    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}
}

为了 start/stop 观察 LiveData 你应该使用 observe() / removeObserver() 方法。就如此容易。如果您有权访问 LifecycleOwnerFragmentActivity),请使用 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) 
    }
}