在数据绑定中使用LiveData而不是MutableLiveData

时间:2019-02-11 06:52:02

标签: android android-databinding android-architecture-components mutablelivedata android-livedata

嗨,我使用LiveData而不是MutableLiveData,因为我从Room获取LiveData,即使删除了binding.setLifecycleOwner(this);,它也可以正常工作。我的问题,这有什么问题吗?希望对别人有帮助

1 个答案:

答案 0 :(得分:3)

如果您不打算设置LifecycleOwner,则最好不要使用LiveData

使用LiveData(尤其是RoomDataBinding)的最大好处之一是它可以了解生命周期并观察值。这意味着它将能够使用最新的更新数据自动更新您的视图。

根据official documentationssetLifecycleOwner()用于LiveData以便能够观察到变化,例如来自Room的变化。如果未设置LifecycleOwner,则不会观察LiveData,并且不会通过数据绑定将任何更新发送到您的UI。

为了进行快速测试,我在我的一项活动中注释了binding.setLifecycleOwner(this)。结果证明文档是正确的。我的用户界面不再从我的LiveData对象中获得更改。