我想观察房间数据库中的一行。一段时间后它会改变。但是当我们点击停止按钮时,它需要停止观察表单数据库,当点击开始按钮时,它会再次开始观察。
我目前的代码是
创建观察者
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
( 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)
}
}
关于kotlin - 处理删除/添加实时数据观察器以在按钮单击时观察,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60664881/