【发布时间】:2018-10-23 18:21:24
【问题描述】:
我对@987654322@ 中的MutableLiveData 有疑问。 MutableLiveData 的 setValue 函数是否会触发观察?如果我们改变MutableLiveData的内容而不是setValue,会被触发吗?
【问题讨论】:
标签: android mvvm viewmodel mutablelivedata
我对@987654322@ 中的MutableLiveData 有疑问。 MutableLiveData 的 setValue 函数是否会触发观察?如果我们改变MutableLiveData的内容而不是setValue,会被触发吗?
【问题讨论】:
标签: android mvvm viewmodel mutablelivedata
我对此表示怀疑。只有以下方法将事件分发到可观察对象:
liveData.postValue("a");
liveData.setValue("b");
https://developer.android.com/reference/android/arch/lifecycle/MutableLiveData
【讨论】:
只有调用setValue 或postValue 时才会触发。如果你使用 Kotlin,那么你可以为自己编写一个扩展来触发 LiveData:
fun <T> MutableLiveData<T>.trigger() {
value = value
}
然后你可以简单地调用:
mutableLiveData.trigger()
【讨论】:
trigger应该是标准成员。
setValue() 和 postValue 都会触发事件。唯一不同的是,postValue() 也可以从后台线程触发观察事件。而setValue 必须在主线程中调用。
postValue() 优先于 setValue()。
【讨论】: