在会议室中使用哪一个:LiveData或RxJava?

mus*_*off 6 observer-pattern rx-java rx-java2 android-room android-livedata

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

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

流动性

addDisposable(userDao().getUsersFlowable()
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(users -> userAdapter.setUsers(users)));
Run Code Online (Sandbox Code Playgroud)

实时数据

userDao().getUsersLiveData()
    .observe(this, users -> {
        userAdapter.setUsers(users)
    })
Run Code Online (Sandbox Code Playgroud)

我不太熟悉LiveData,但是就我的研究而言,它是一个观察者模式,它也知道生命周期,这意味着我将停止通知UI是否未处于活动状态。就是说,正如您在我的Flowable代码中看到的那样,我将其添加到其中CompositeDisposable,并将在我的onDestroy()方法中进行处理。因此,我看不出为什么我应该使用LiveData什么时候可以用进行管理RxJava,因为为了方便起见,该操作有很多运算符。

所以我应该何时使用,LiveData以及何时RxJava使用Room。反映给定方案的答案非常受赞赏,但也欢迎其他用例。

我遵循了何时在Android中使用RxJava以及何时从Android Architectural Components中使用LiveData?,但范围太广,我无法具体回答我的情况

Sam*_*ert 6

通常与视图一起工作,使用 LiveData 通常是好的。它自动管理订阅,与DataBinding 库配合得非常好。它是一种数据持有者,与数据流(Rx 概念)相反,它具有生命周期意识。

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