android - 为什么在使用 LiveData 时要在 ViewModel 类中双重声明变量?
问题描述
现在我正在关注一个教程,我正在开发一个简单的游戏应用程序,试图理解和使用 MVVM 应用程序架构。在我的 ViewModel 类中,我有一个包含玩家得分的字段。
score 变量声明如下:
private val _score = MutableLiveData<Int>()
val score: LiveData<Int>
get() = _score
现在,在我的 UI Controller 类中,我观察到这样的分数:
viewModel.score.observe(this, Observer { newScore ->
binding.scoreText.text = newScore.toString()
})
所以,我的问题是为什么我需要第二个分数声明?我不能只有一个
val score = MutableLiveData<Int>()
并像上面一样观察它?我试过了,它有效。
解决方案
它会起作用的。这样做的目的是确保对该变量的更改仅发生在一个地方,即您的 ViewModel。这只是人们遵循的一种模式,使您更容易调试并确保您的应用程序/视图的状态是正确的。我在这里找到了来自 Google 的一个来源,尽管我确信还有更多
推荐阅读
- reactjs - reactjs向材料表添加新行可编辑
- docker - Docker 容器未连接到主机
- python - 显示使用 pygame 更新的文本
- python - 如果设置为重复运行,导出到 excel 的数据框如何工作?
- intellij-idea - 在 Intellij HTTP 客户端中使用文本/事件流
- php - ...vendor/composer/ClassLoader.php:444 (Laravel) 中没有这样的文件或目录
- python - 我正在编写飞机模拟,为什么我的计算变得不稳定?
- sql - SQL Server:具有不同 GROUP BY 的 SUM 的 COUNT
- c++ - C++ 中的四叉树实现:引发异常读取访问冲突
- botframework - 如何在 Teams Manifest 中的 inputType 'choiceset' 上设置硬编码值?