看来MutableLiveData
与LiveData
的不同之处仅在于公开了setValue()
和postValue()
方法,而在LiveData
中它们受到了保护。
有什么原因可以为此更改创建单独的类,而不是在LiveData
本身中简单地将这些方法定义为公共(public)方法?
一般来说,这种形式的继承(增加某些方法的可见性是唯一的更改)是一种众所周知的做法吗?在某些情况下它可能有用(假设我们可以访问所有代码)?
最佳答案
在LiveData - Android Developer Documentation中,您可以看到LiveData
,setValue()
和postValue()
方法不是公开的。
而在MutableLiveData - Android Developer Documentation中,您可以看到MutableLiveData
在内部扩展了LiveData
,而且LiveData
的两个魔术方法是,公开提供了,其中setValue()
和postValue()
。setValue()
:设置值并将其分发给所有 Activity 的观察者,必须从主线程中调用。postValue()
:将任务发布到主线程以覆盖setValue()
设置的值,必须从后台线程中调用。
因此,LiveData
是不可变。 MutableLiveData
是LiveData
,它是可变和线程安全的。
关于android - 为什么有单独的LiveData子类MutableLiveData子类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46814158/