【问题标题】:Which one to use in Room: LiveData or RxJava?在 Room 中使用哪一个:LiveData 还是 RxJava?
【发布时间】:2019-04-14 18:34:21
【问题描述】:

我正在使用 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)
    })

我对@9​​87654326@ 不太熟悉,但就我的研究而言,它是一种具有生命周期意识的观察者模式,这意味着如果 UI 未处于活动状态,我将停止通知。也就是说,正如您在我的Flowable 代码中看到的那样,我将它添加到CompositeDisposable 中,并且我将在我的onDestroy() 方法中进行处理。 因此,当我可以使用 RxJava 管理所有内容时,我不明白为什么要使用 LiveData,为了方便,它有很多运算符。

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

我关注了When to use RxJava in Android and when to use LiveData from Android Architectural Components?,但它太宽泛了,我无法得到具体的答案

【问题讨论】:

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


    【解决方案1】:

    这个帖子可能已关闭,但我有一个很好的解决使用问题的方法 Rxjava 与 Room 进行您想要的任何转换,然后转换为 livedata 观察你的观点。

    在此处查看我的解决方案: solution

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我想这回答了我的问题。谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-06
      • 2023-03-30
      • 2021-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多