有两种方法可以改变 的值MutableLiveData。 setValue() 但是& postValue() in之间有什么区别MutableLiveData。
MutableLiveData
setValue()
postValue()
我找不到相同的文档。
这是MutableLiveDataAndroid的类。
package android.arch.lifecycle; /** * {@link LiveData} which publicly exposes {@link #setValue(T)} and {@link #postValue(T)} method. * * @param <T> The type of data hold by this instance */ @SuppressWarnings("WeakerAccess") public class MutableLiveData<T> extends LiveData<T> { @Override public void postValue(T value) { super.postValue(value); } @Override public void setValue(T value) { super.setValue(value); } }
根据文档:
设置值():
设置值。如果有活跃的观察者,值将被分派给他们。必须从主线程调用此方法。
后值():
将任务发布到主线程以设置给定值。如果您在主线程执行发布的任务之前多次调用此方法,则只会分派最后一个值。
总而言之,主要区别在于:
setValue()方法必须从主线程调用。但是如果你需要从后台线程中设置一个值,postValue()应该使用。