为什么在使用 LiveData 时我应该在 ViewModel class 中双重声明一个变量?
Why should I double declare a variable in a ViewModel class when using LiveData?
现在我正在学习一个教程,其中我正在开发一个简单的游戏应用程序,试图理解和使用 MVVM 应用程序架构。在我的 ViewModel class 中,我有一个包含玩家得分的字段。
分数变量声明如下:
private val _score = MutableLiveData<Int>()
val score: LiveData<Int>
get() = _score
现在,在我的 UI 控制器 class 中,我观察到的分数是这样的:
viewModel.score.observe(this, Observer { newScore ->
binding.scoreText.text = newScore.toString()
})
所以,我的问题是为什么我需要第二次申报成绩?我就不能有一个
val score = MutableLiveData<Int>()
并像上面那样观察?我试过了,效果很好。
它会起作用的。这样做的目的是确保对该变量的更改仅发生在一个地方,即您的 ViewModel。这只是人们遵循的一种模式,可以让您更轻松地调试并确保 app/view 的状态正确。我在这里找到了一个 source from Google,不过我敢肯定还有很多
现在我正在学习一个教程,其中我正在开发一个简单的游戏应用程序,试图理解和使用 MVVM 应用程序架构。在我的 ViewModel class 中,我有一个包含玩家得分的字段。
分数变量声明如下:
private val _score = MutableLiveData<Int>()
val score: LiveData<Int>
get() = _score
现在,在我的 UI 控制器 class 中,我观察到的分数是这样的:
viewModel.score.observe(this, Observer { newScore ->
binding.scoreText.text = newScore.toString()
})
所以,我的问题是为什么我需要第二次申报成绩?我就不能有一个
val score = MutableLiveData<Int>()
并像上面那样观察?我试过了,效果很好。
它会起作用的。这样做的目的是确保对该变量的更改仅发生在一个地方,即您的 ViewModel。这只是人们遵循的一种模式,可以让您更轻松地调试并确保 app/view 的状态正确。我在这里找到了一个 source from Google,不过我敢肯定还有很多