Как изменяется открытая диспетчеризация LiveData при вызове postValue для переменной MutableLiveData? - PullRequest
0 голосов
/ 21 января 2020

В 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 - это две разные переменные, как метод onChanged() для someData вызывается, даже если значение отправлено _someData и наблюдаются изменения для выставленного LiveData?

1 Ответ

0 голосов
/ 21 января 2020

Обе переменные ссылаются на один и тот же объект. Разница лишь в том, что вы выставляете LiveData, чтобы клиенты не могли изменить его значение. Поскольку это только один объект, при обновлении _someData, someData также обновляется.

...