在 Room 中使用哪一个:LiveData 还是 RxJava?

Which one to use in Room: LiveData or RxJava?

我正在使用 Room 进行数据库管理,但在处理实时数据时我对使用什么感到困惑。目前,我正在使用 Flowable 来管理实时数据,我对此非常满意。我感到困惑的是我也可以使用 LiveData 来执行相同的操作。

为了提供一些背景信息,以下是我查询数据和更新视图的方式。

流动性

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() 方法中进行处理。 因此,当我可以使用 RxJava 管理所有内容时,我不明白为什么我应该使用 LiveData,为了方便起见,它有很多运算符。

那么在使用 Room 时我应该什么时候使用 LiveData 什么时候使用 RxJava。非常感谢反映给定场景的答案,但也欢迎其他用例。

我关注了 ,但它太宽泛了,我无法得到具体针对我的情况的答案

通常处理视图时,使用 LiveData 通常比较好。它自动管理订阅,与 DataBinding library 一起工作得很好。它是一种数据持有者,它是生命周期感知的,而不是数据流(Rx 概念)。

在其他情况下,我建议使用 RxJava,它具有用于转换和并发的强大运算符链。希望它能对您的理解有所启发。

这个帖子可能被关闭了,但是我有一个很好的解决使用问题的办法 Rxjava with Room 进行任何你想要的转换,然后转换为实时数据 观察你的观点。

在这里查看我的解决方案: