rx-java - 房间 : LiveData or RxJava? 使用哪个

标签 rx-java rx-java2 android-room observer-pattern android-livedata

我正在使用 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 管理一切时,为了方便起见,它有很多运算符。

那么我应该什么时候使用 LiveDataRxJava在使用 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/

相关文章:

android - 无法在 rxjava 中解析符号 Obserable.onSubscribe

android rxjava 重复请求

java - 响应式(Reactive)编程的优点/缺点

Android房间迁移null报错

Android - 如何从小部件访问房间数据库

android - 如何在运行时动态查询房间数据库?

clojure - rxjava 和 clojure 异步之谜 : futures promises and agents, 哦天哪

java - RxJava - 为什么执行器只使用一个线程

java - RXJava 2 多个订阅者轮询

java - 用于组合两个 Maybe 的 RxJava2 习语