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

Using LiveData in data binding instead of MutableLiveData

您好,我正在使用 LiveData 而不是 MutableLiveData,因为我正在从 Room 获取 LiveData,并且即使在删除 binding.setLifecycleOwner(this); 后它仍然可以工作。我的问题是,这有什么问题吗?希望对其他人有帮助

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

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

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

为了进行快速测试,我在我的一个活动中注释掉了 binding.setLifecycleOwner(this)。结果证明文件是真实的。我的 UI 不再从我的 LiveData 对象中获取更改。