Какой из них использовать в Room: LiveData или RxJava? - PullRequest
0 голосов
/ 12 ноября 2018

Я использую 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? , но это слишком широко, и я не смог получить ответ конкретно в моем случае

1 Ответ

0 голосов
/ 13 ноября 2018

Обычно при работе с представлениями часто полезно использовать LiveData. Он автоматически управляет подпиской, очень хорошо работает с библиотекой DataBinding . это своего рода держатель данных, поддерживающий жизненный цикл, а не поток данных (Rx Concept).

В других случаях я бы предложил использовать RxJava с мощными цепочками операторов для преобразования и параллелизма. Надеюсь, это проливает свет на ваше понимание.

...