MutableLivedata 观察者触发
MutableLivedata observer triggering
我对 Viewmodel
中的 MutableLiveData
有疑问。 MutableLiveData
的 setValue
功能会触发观察吗?如果我们改变 MutableLiveData
的内容而不是 setValue
,它会被触发吗?
我怀疑。只有下面的方法将事件分派给可观察对象:
liveData.postValue("a");
liveData.setValue("b");
https://developer.android.com/reference/android/arch/lifecycle/MutableLiveData
setValue()
和 postValue
都会触发事件。唯一的区别是,postValue()
也可以从后台线程触发观察事件。而 setValue
必须在主线程中调用。
postValue()
优于 setValue()
.
只有调用setValue
或postValue
才会触发。如果你使用 Kotlin,那么你可以自己编写一个扩展来触发 LiveData
:
fun <T> MutableLiveData<T>.trigger() {
value = value
}
然后您可以简单地调用:
mutableLiveData.trigger()
我对 Viewmodel
中的 MutableLiveData
有疑问。 MutableLiveData
的 setValue
功能会触发观察吗?如果我们改变 MutableLiveData
的内容而不是 setValue
,它会被触发吗?
我怀疑。只有下面的方法将事件分派给可观察对象:
liveData.postValue("a");
liveData.setValue("b");
https://developer.android.com/reference/android/arch/lifecycle/MutableLiveData
setValue()
和 postValue
都会触发事件。唯一的区别是,postValue()
也可以从后台线程触发观察事件。而 setValue
必须在主线程中调用。
postValue()
优于 setValue()
.
只有调用setValue
或postValue
才会触发。如果你使用 Kotlin,那么你可以自己编写一个扩展来触发 LiveData
:
fun <T> MutableLiveData<T>.trigger() {
value = value
}
然后您可以简单地调用:
mutableLiveData.trigger()