直接访问时 MutableLiveData 值错误
MutableLiveData wrong value when accessing directly
我有 ViewModel:
class SharedViewModel : ViewModel() {
var connected = MutableLiveData(false)
fun setConnected(value: Boolean) {
connected.postValue(value)
}
}
设置值时:
viewModel.setConnected(true)
然后像这样观察它:
viewModel.connected.observe(viewLifecycleOwner, {
Log.d(RTAG, "Connected: $it")
})
它按预期工作。但有时我需要直接访问值而不是像这样观察变化:
viewModel.setConnected(true)
Log.d(RTAG, "Res: "+viewModel.connected.value) //printed old result, why?
然后我得到旧结果,这是为什么?
postValue
方法不会立即更改值。它应该在后台线程中使用。尝试使用 setValue
,它应该只在主线程上调用并立即设置值。
我有 ViewModel:
class SharedViewModel : ViewModel() {
var connected = MutableLiveData(false)
fun setConnected(value: Boolean) {
connected.postValue(value)
}
}
设置值时:
viewModel.setConnected(true)
然后像这样观察它:
viewModel.connected.observe(viewLifecycleOwner, {
Log.d(RTAG, "Connected: $it")
})
它按预期工作。但有时我需要直接访问值而不是像这样观察变化:
viewModel.setConnected(true)
Log.d(RTAG, "Res: "+viewModel.connected.value) //printed old result, why?
然后我得到旧结果,这是为什么?
postValue
方法不会立即更改值。它应该在后台线程中使用。尝试使用 setValue
,它应该只在主线程上调用并立即设置值。