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

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

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

最佳答案

为了开始/停止观察LiveData,您应该使用observe() / removeObserver()方法。就如此容易。如果您可以访问LifecycleOwner(FragmentActivity),请使用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)
    }
}

07-24 09:49
查看更多