MutableLivedata 观察者触发

MutableLivedata observer triggering

我对 Viewmodel 中的 MutableLiveData 有疑问。 MutableLiveDatasetValue 功能会触发观察吗?如果我们改变 MutableLiveData 的内容而不是 setValue,它会被触发吗?

我怀疑。只有下面的方法将事件分派给可观察对象:

liveData.postValue("a");
liveData.setValue("b");

https://developer.android.com/reference/android/arch/lifecycle/MutableLiveData

setValue()postValue 都会触发事件。唯一的区别是,postValue() 也可以从后台线程触发观察事件。而 setValue 必须在主线程中调用。 postValue() 优于 setValue().

只有调用setValuepostValue才会触发。如果你使用 Kotlin,那么你可以自己编写一个扩展来触发 LiveData:

fun <T> MutableLiveData<T>.trigger() {
    value = value
}

然后您可以简单地调用:

mutableLiveData.trigger()