gpt4 book ai didi

android - 为什么 LiveData 有一个单独的 MutableLiveData 子类?

转载 作者:IT王子 更新时间:2023-10-28 23:43:47 26 4
gpt4 key购买 nike

看起来 MutableLiveDataLiveData 的不同之处仅在于制作了 setValue()postValue() 方法public,而在 LiveData 中它们是 protected 。

有什么原因要为此更改创建一个单独的类,而不是简单地将这些方法定义为 LiveData 本身中的公共(public)方法?

一般来说,这种继承形式(增加某些方法的可见性是唯一的变化)是一种众所周知的做法吗?在哪些情况下它可能有用(假设我们可以访问所有代码)?

最佳答案

LiveData - Android Developer Documentation ,可以看到对于LiveDatasetValue() & postValue() 方法是不公开的。

然而,在 MutableLiveData - Android Developer Documentation ,您可以看到,MutableLiveData 在内部扩展了 LiveData 并且 LiveData 的两个魔术方法 publicly 在这和他们是 setValue() & postValue().

setValue():设置值并将值分发给所有活跃的观察者,必须从主线程调用。

postValue() : 将任务发布到主线程以覆盖 setValue() 设置的值,必须从 后台线程 调用。

所以,LiveData不可变的MutableLiveDataLiveData,它是 mutablethread-safe

关于android - 为什么 LiveData 有一个单独的 MutableLiveData 子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46814158/

26 4 0