kotlin - 处理删除/添加实时数据观察器以在按钮单击时观察

标签 kotlin android-livedata observers

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

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

    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/

相关文章:

java - 波纹效果在 Android 9(Api 28、Pie)上无法正常工作

java - 使用向左/向右拖动来倒回可绘制的动画

java - 如何使用 View 模型获取数组列表中的位置?

javascript - 观察者检查鼠标移动何时停止

android - 在 kotlin android 中使用 Companion 对象是一个好习惯吗?

spring-boot - Kotlin : unit test with mock injection (mockK)

android - 架构组件刷新 LiveData

android - 来自 Transformation 的数据绑定(bind) LiveData - Android Kotlin

javascript - meteor 集合正确观察变化

iOS 的 SKPayment addTransactionObserver & defaultqueue,是怎么回事?