看来MutableLiveDataLiveData的不同之处仅在于公开了setValue()postValue()方法,而在LiveData中它们受到了保护。

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

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

最佳答案

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

而在MutableLiveData - Android Developer Documentation中,您可以看到MutableLiveData在内部扩展了LiveData,而且LiveData的两个魔术方法是,公开提供了,其中setValue()postValue()
setValue():设置值并将其分发给所有 Activity 的观察者,必须从主线程中调用。
postValue():将任务发布到主线程以覆盖setValue()设置的值,必须从后台线程中调用。

因此,LiveData不可变MutableLiveDataLiveData,它是可变线程安全的

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

10-10 08:27