MutableLiveData
的改变值有两种方式。但是 MutableLiveData
中的 setValue()
和 postValue()
有什么区别。
我找不到相同的文档。
这里是Android的MutableLiveData
类。
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);
}
}
最佳答案
根据文档:
Sets the value. If there are active observers, the value will be dispatched to them. This method must be called from the main thread.
Posts a task to a main thread to set the given value. If you called this method multiple times before a main thread executed a posted task, only the last value would be dispatched.
总而言之,主要区别在于:
setValue()
方法必须从主线程调用。但是如果你需要从后台线程设置一个值,应该使用 postValue()
。
关于android - MutableLiveData 中 setValue() 和 postValue() 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51299641/