Jetpack 是什么
Jetpack 包含了一系列的 Android 库,这些库都采用了最佳做法并在 Android 应用中提供向后兼容。Jetpack 库在 androidx 命名空间发布。
Jetpack 使用
在 settings.gradle 文件中,将 google() 代码库添加到 dependencyResolutionManagement { repositories {…}} 块中
1 | dependencyResolutionManagement { |
然后,在模块 build.gradle 文件中添加 Jetpack 组件,例如:
1 | dependencies { |
Jetpack 组件
主要的组件有:
- WorkManager 后台调度
- Room 数据持久化存储
- Navigation 应用导航
- CameraX 相机管理
- Jetpack 组件的完整列表,
Jetpack 应用架构
界面层
界面层的作用是在屏幕上显示应用数据。接收用户的输入或外部输入(网络)来响应并更新界面的显示。
界面层主要有以下两部分组成:
- 在屏幕上呈现数据的界面元素。—View
- 用于存储数据,向界面元素提供数据以及处理逻辑的状态容器.— ViewModel
数据屋
应用的数据屋包含业务逻辑。业务逻辑决定应用的价值,它包含决定应用如何创建、存储和更改数据的规则。
数据支有多个库组成,每个库可包含多个数据源。你应该为应用处理的每种不同类型 的数据创建一个库类。
库类主要负责以下任务:
- 向应用的提供数据
- 对数据进行集中更改
- 解决多个数据源之间的冲突
- 从应用的其余部分提取数据
- 包含业务逻辑
每个数据源类应仅负责处理一个数据源,访数据源可能是文件、网络来源或是本地数据库。
网域层
网域层负责封装复杂的业务逻辑,或者由多个 ViewModel 重复使用的简单业务逻辑。
最佳实践
- 不要将数据存储在应用组件中
- 减少对 Android 类的依赖
- 在应用的各个模块之间设定明确定义的职责界限
- 尽量少公开每个模块中的代码
- 专注于应用的独特核心
- 考虑如何使应用中的每个部分可以独立测试
- 保留尽可能多的相关数据和最新的数据
Jetpack 和 AndroidX
androidx 命令空间包含 Android Jectpack 库。与支持库一样, androidx 命令空间中的库与 Android 平台分开提供,并向后兼容 Android 各个版本。
AndroidX 对原始的 Android 支持库进行了重大改进,支持库现已不做维护,不仅提供与支持库相同的功能,而且还提供了新的库。
AndroidX 包含以下功能:
- AndroidX 中的所有软件包使用一致的命令空间 androidx。支持库软件包已映射到对应的 androidx.* 软件包。
- 与支持库不同, andoridx 软件包会单独维护和更新。
- 版本28.0.0是支持库的最后一个版本。
AndroidX 迁移
使用 Android Studio 3.2 及更高版本,您只需从菜单栏中依次选择 Refactor > Migrate to AndroidX,即可将现有项目迁移到 AndroidX。
重构命令使用两个标记。默认情况下,这两个标记在 gradle.properties 文件中都设为 true:
android.useAndroidX=true
Android 插件会使用对应的 AndroidX 库而非支持库。
android.enableJetifier=true
Android 插件会通过重写现有第三方库的二进制文件,自动将这些库迁移为使用 AndroidX。