1. 开始之前
简介
Dessert Clicker 使用内联状态和数据。在本练习中,您将从 MainActivity
中移除内联状态、数据和逻辑,并将其移动到 ViewModel
中。
将应用程序逻辑从视图抽象到 ViewModel 是 Android 开发的一种现代实践。这种实践提供了以下好处
- 代码对其他开发者来说更容易阅读。
- 代码变得更容易测试。
- 多个开发者可以同时处理一个应用程序,而不会干扰其他开发者的工作。
解决方案代码在最后提供,但在查看答案之前,请尝试解决练习。请将解决方案视为实现应用程序的一种方法。
先决条件
- Compose 中的 Android 基础课程,以及通过 Compose 中的 ViewModel 和状态 代码实验室。
您需要什么
- 一台可以连接互联网并安装了 Android Studio 的电脑
- Dessert Clicker 应用程序的解决方案代码
您将构建什么
在这些练习题中,您将通过添加 ViewModel
来处理数据和应用程序逻辑,从而改进 Dessert Clicker 应用程序的架构。
练习题分为几个部分,您将在其中分别完成以下步骤
- 更新并添加必要的依赖项。
- 创建一个
ViewModel
类。
2. 下载起始代码
- 在 Android Studio 中,打开
basic-android-kotlin-compose-training-dessert-clicker
文件夹。 - 在 Android Studio 中打开 Dessert Clicker 应用程序代码。
3. 设置依赖项
- 将以下变量添加到您的项目
build.gradle
文件中
buildscript {
ext {
...
lifecycle_version = '2.5.1'
}
}
- 将以下依赖项添加到
app/build.gradle
文件中
dependencies {
...implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version"
}
4. 创建 UI 状态类
目前,MainActivity
中的 DessertClickerApp()
可组合项包含驱动 UI 的数据和状态。
创建一个数据类,其中包含 UI 所需的所有数据。此类中的数据将替换 DessertClickerApp()
可组合项当前管理的数据。
5. 创建 ViewModel
使用 Jetpack ViewModel 组件创建一个 ViewModel
类。您可以使用 ViewModel 来管理 UI 状态。
6. 将应用程序逻辑和数据重新定位到 ViewModel
将 MainActivity
中的逻辑重新定位到 ViewModel,并使用您创建的 UI 状态类使 UI 状态数据可访问。从 MainActivity
中删除所有数据和状态管理逻辑。
尝试自己完成此任务。如有必要,请参阅 Compose 中的 ViewModel 和状态 代码实验室以获取指导。
7. 调用 ViewModel
使用 ViewModel 提供的数据和方法来驱动 MainActivity
中的 UI。