Я использую Room для управления базой данных, и я не знал, что использовать при работе с данными в реальном времени. На данный момент, для управления данными в реальном времени я использую Flowable
, и я очень доволен этим. Что меня смутило, так это то, что я могу использовать LiveData
для выполнения той же операции.
Чтобы дать некоторый контекст, вот как я запрашиваю данные и обновляю свое представление.
текучий
addDisposable(userDao().getUsersFlowable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(users -> userAdapter.setUsers(users)));
LiveData
userDao().getUsersLiveData()
.observe(this, users -> {
userAdapter.setUsers(users)
})
Я не очень знаком с LiveData
, но, насколько мне известно, это паттерн наблюдателя, который также учитывает жизненный цикл, то есть я перестану уведомлять, если пользовательский интерфейс не находится в активном состоянии. Тем не менее, как вы можете видеть в моем Flowable
коде, я добавляю его в CompositeDisposable
и буду распоряжаться моим методом onDestroy()
.
Так что я не вижу смысла использовать LiveData
, когда я могу управлять всем с помощью RxJava
, в котором много операторов для удобства.
Итак, когда мне следует использовать LiveData
и когда RxJava
при работе с Room. Ответы, отражающие данный сценарий, приветствуются, но приветствуются и другие варианты использования.
Я следовал Когда использовать RxJava в Android, а когда использовать LiveData из Android Architectural Components? , но это слишком широко, и я не смог получить ответ конкретно в моем случае