为什么我应该双重声明一个变量在ViewModel类时使用LiveData?



现在我正在遵循一个教程,我正在开发一个简单的游戏应用程序,试图理解和使用MVVM应用程序架构。在我的ViewModel类中,我有一个包含玩家分数的字段。

score变量声明如下:

private val _score = MutableLiveData<Int>()
val score: LiveData<Int>
get() = _score

现在,在我的uicontroller类中,我这样观察分数:

viewModel.score.observe(this, Observer { newScore ->
binding.scoreText.text = newScore.toString()
})

那么,我的问题是为什么我需要第二次声明score?我不能有一个

val score = MutableLiveData<Int>()

并像上面那样观察它?我试过了,效果不错。

会成功的。这样做的要点是确保对该变量的更改只发生在一个地方,即您的ViewModel。这只是人们遵循的一种模式,让你更容易调试并确保你的应用/视图的状态是正确的。我在这里找到了一个来自谷歌的来源,尽管我相信还有更多

最新更新