繁体   English   中英

LiveData 或 DataBinding Observer

[英]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进行查询,返回LiveData(RoomDB将是您的单一真相来源)
    1. 您的视图说一个活动或片段 - 作为观察者订阅此视图模型
    2. 然后根据返回的响应更新视图。
    3. 您还可以通过Android Databinding直接绑定xml( 使用带数据绑定的LiveData

如果您在检索后进行任何修改,则通常使用可变数据

这是一个很好的起点 https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#0

很多次都过去了,我学到了很多东西......用LiveData替换所有Data Binding Observable,因为LiveData尊重Activity生命周期,可以在JetPack lib中使用,比如Room,Coroutine ......

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM