我正在使用 Room 进行数据库管理,但在处理实时数据时我对使用什么感到困惑。目前,我使用 Flowable
来管理实时数据我对它很满意吗?我感到困惑的是我可以使用 LiveData
也做同样的操作。
为了提供一些上下文,以下是我查询数据和更新 View 的方式。
流动的
addDisposable(userDao().getUsersFlowable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(users -> userAdapter.setUsers(users)));
实时数据
userDao().getUsersLiveData()
.observe(this, users -> {
userAdapter.setUsers(users)
})
我不太熟悉
LiveData
,但就我的研究而言,它是一种观察者模式,它也具有生命周期意识,这意味着如果 UI 未处于事件状态,我将停止通知。也就是说,正如您在我的 Flowable
中看到的那样代码,我将它添加到 CompositeDisposable
我会在我的 onDestroy()
中处理方法。所以我不明白为什么我应该使用
LiveData
当我可以用 RxJava
管理一切时,为了方便起见,它有很多运算符。那么我应该什么时候使用
LiveData
当 RxJava
在使用 Room 时。非常感谢反射(reflect)给定场景的答案,但也欢迎其他用例。我关注了 When to use RxJava in Android and when to use LiveData from Android Architectural Components? ,但它太宽泛了,我无法得到具体的答案
最佳答案
通常与 View 一起工作,使用 LiveData 通常是好的。它自动管理订阅,与 DataBinding library 配合得很好.它是一种数据持有者,与数据流(Rx 概念)相反,它具有生命周期意识。
在其他情况下,我建议使用 RxJava,它具有用于转换和并发的强大运算符链。希望它对您的理解有所启发。
关于rx-java - 房间 : LiveData or RxJava? 使用哪个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53255383/