直接访问时 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,它应该只在主线程上调用并立即设置值。