我想观察房间数据库中的一行。它会在一段时间后发生变化。但是,当我们单击停止按钮时,它需要停止观察表单数据库,而当单击开始按钮时,它将再次开始观察。
我当前的代码是 创建观察者
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}
}
答案 0 :(得分:1)
为了开始/停止观察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)
}
}