当在 MutableLiveData 变量上调用 postValue 时,公开的 LiveData 调度如何变化?
How does exposed LiveData dispatch changes when postValue is called on MutableLiveData variable?
在 ViewModel 中:
private var _someData : MutableLiveData<Boolean> = MutableLiveData()
var someData: LiveData<Boolean> = _someData
public fun someMethod(){
_someData.postValue(true)
}
在片段中:
viewModel.someData.observe(this, Observer {
//change posted on MutableLiveData but this LiveData received the changes.
})
由于 someData
和 _someData
是 2 个不同的变量,即使在 _someData
上发布了值,如何调用 someData
的 onChanged()
方法并且观察到暴露的变化 LiveData
?
两个变量引用同一个对象。唯一的区别是您公开了一个 LiveData
,因此客户无法修改它的值。由于它只是一个对象,当您更新 _someData
时,someData
也会更新。
在 ViewModel 中:
private var _someData : MutableLiveData<Boolean> = MutableLiveData()
var someData: LiveData<Boolean> = _someData
public fun someMethod(){
_someData.postValue(true)
}
在片段中:
viewModel.someData.observe(this, Observer {
//change posted on MutableLiveData but this LiveData received the changes.
})
由于 someData
和 _someData
是 2 个不同的变量,即使在 _someData
上发布了值,如何调用 someData
的 onChanged()
方法并且观察到暴露的变化 LiveData
?
两个变量引用同一个对象。唯一的区别是您公开了一个 LiveData
,因此客户无法修改它的值。由于它只是一个对象,当您更新 _someData
时,someData
也会更新。