LiveData 或 DataBinding 观察者

LiveData or DataBinding Observer

我在 Android 应用程序上使用 MVVM,在 ViewModel 上我有很多观察者(来自数据绑定),例如 ObservableBooleanObservableField,我读到我可以使用 LiveData/MutableLiveData 而不是这个观察者......有什么区别?我可以用 LiveData/MutableLiveData?

替换我所有的数据绑定观察者

例如:

替换:

val loading: ObservableBoolean = ObservableBoolean()

作者:

val loading: MutableLiveData<Boolean> = MutableLiveData()

取决于您从哪里读取数据。

在我们当前的项目中,我们直接从 RoomDB 读取数据。 RoomDB 有能力发回一个 liveData 对象。

  1. 通过您的 ViewModel ,您对 RoomDB 进行查询,其中 returns 一个 LiveData(RoomDB 将是您的单一真相来源)
    1. 您的视图说 Activity 或片段 - 作为观察者订阅此视图模型
    2. 然后您根据返回的响应更新视图。
    3. 您也可以通过 Android Databinding()
    4. 直接绑定 xml

如果您在检索后有任何修改,Mutable Data 将正常使用

This is a good Place to Start

很多次过去了,我学到了很多... 将所有 Data Binding Observable 替换为 LiveData,因为 LiveData 遵守 Activity 生命周期并且可以在 JetPack 库中使用,例如 Room、Coroutine...

如果您的目标只是根据视图模型中原始数据类型中数据的变化来更改 xml 中视图的基本属性,那么使用数据绑定是简单易用的。对于其余情况,实时数据是唯一的方法。