小编典典

MutableLiveData 中 setValue() 和 postValue() 的区别

all

有两种方法可以改变 的值MutableLiveDatasetValue() 但是& postValue()
in之间有什么区别MutableLiveData

我找不到相同的文档。

这是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);
    }
}

阅读 137

收藏
2022-08-27

共1个答案

小编典典

根据文档:

设置值()

设置值。如果有活跃的观察者,值将被分派给他们。必须从主线程调用此方法。

后值()

将任务发布到主线程以设置给定值。如果您在主线程执行发布的任务之前多次调用此方法,则只会分派最后一个值。

总而言之,主要区别在于:

setValue()方法必须从主线程调用。但是如果你需要从后台线程中设置一个值,postValue()应该使用。

2022-08-27