Наблюдатель LiveData или DataBinding

Я использую MVVM в своем приложении для Android, в ViewModel у меня много наблюдателей (из привязки данных), таких как ObservableBoolean, ObservableField, я читал, что могу использовать LiveData/MutableLiveData вместо этих наблюдателей... Какая разница? Я могу заменить всех своих наблюдателей привязки данных на LiveData/MutableLiveData?

eg:

заменять:

val loading: ObservableBoolean = ObservableBoolean()

By:

val loading: MutableLiveData<Boolean> = MutableLiveData()

person felipe.rce    schedule 16.10.2018    source источник


Ответы (2)


Прошло много раз, и я многому научился... Замените все Data Binding Observable на LiveData, потому что LiveData учитывает жизненный цикл Activity и может использоваться в библиотеках JetPack, таких как Room, Coroutine...

person felipe.rce    schedule 31.07.2019

Зависит от того, откуда вы читаете данные.

В нашем текущем проекте мы читаем напрямую из RoomDB. RoomDB имеет возможность отправлять обратно объект liveData.

  1. Through your ViewModel , you do a query to RoomDB which returns a LiveData (RoomDB will be your Single Source of Truth)
    1. Your View say an Activity or Fragment - Subscribes to this viewmodel as an observer
    2. И вы обновляете представление в соответствии с возвращенным ответом.
    3. Вы также можете напрямую привязать xml через Android Databinding (Использование LiveData с привязкой данных)

Изменяемые данные обычно используются, если у вас есть какие-либо изменения после получения

Это хорошее место для начала https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#0

person 1nullpointer    schedule 16.10.2018
comment
Я знаю, что такое LiveData, я спросил, в чем разница между наблюдаемыми LiveData и Data Binding, и хорошо ли заменить их все на LiveData. - person felipe.rce; 16.10.2018