Jetpack架构组件 (一)-- Android Jetpack 简介

前言

Android 已经发展十多年了,可以说是比较成熟的技术了,一开始时框架很少,也没有什么规范,所有的代码都是要自己写,比如网络请求,数据库操作,数据解析等等。后来出现了一些框架来帮助开发者快速进行开发,比如XUtils、Volley、OKHttp、EventBus等,随着框架越来越多,一个应用可以有多种技术选型,直接导致应用开发越来越不规范,导致做出来的应用质量参差不齐,这显然不是谷歌想看到的。谷歌随后推出了 MVP 和 MVVM相关的官方例子,效果很一般,而且覆盖面只是在架构上,Goole I/O 2018大会上推出的 Android Jetpack 有望解决以上的问题。

1 Android Jetpack 简介

Jetpack并不是一个框架或者组件,它是一套库、工具和指南的集合,可以帮助开发者更轻松地编写和构建出色的 Android 应用程序。这些组件可帮助开发者遵循最佳做法、摆脱编写样板代码的工作并简化复杂任务,以便将精力集中放在所需的代码上。

Android Jetpack中的有些组件并不是第一次推出,其中 LifeCycle、LiveData、ViewModel、Room 等组件早在 Google I/O 2017年大会上就随着 Android Architecture Component(AAC)一起推出了,在Goole I/O 2018大会上,用 AndroidX 替代了 Android Support Library,并在 Android Architecture Component 的基础上发布了Android Jetpack,AndroidX 也是属于 Android Jetpack。

Jetpack 有以下特点

  1. 减少不一致:这些库可在各种 Android 版本和设备中以一致的方式运作,助您降低复杂性。
  2. 消除样板代码:Jetpack可以管理繁琐的Activity(如后台任务、导航和生命周期),以便您可以专注于打造出色的应用。
  3. 遵循最佳做法:Android Jetpack 组件采用最新的设计方法构建,具有向后兼容性,可以减少崩溃和内存泄露。

2 Android Jetpack 分类

Jetpack 的分类如下如所示:

Jetpack架构组件 (一)-- Android Jetpack 简介_第1张图片

谷歌仍旧不断的完善 Android Jetpack,截至到2019年8月已经有很多新加的组件并没有显示在上图中,比如CameraX 等。Android Jetpack分类有4种,分别是 Architecture、Foundationy、Behavior、UI,下面分别介绍下。

2.1 Architecture(架构组件)

Architecture 指的是架构组件,帮助开发者设计稳健、可测试且易维护的应用。架构组件可以说是对应用开发帮助最大的组件,本系列也是围绕着架构组件进行讲解。

  1. DataBinding:以声明方式将可观察数据绑定到界面元素,通常和 ViewModel 配合使用。
  2. Lifecycle:方便管理 Activity 和 Fragment 的生命周期,可帮助开发者生成更易于维护的轻量级代码。
  3. LiveData:在底层数据库更改时通知视图。它是一个可观察的数据持有者,与常规 observable 不同,LiveData 是有生命周期感知的。
  4. Navigation:方便处理应用内导航。
  5. Paging:可以帮助开发者一次加载和显示小块数据,按需加载部分数据可减少网络带宽和系统资源的使用。
  6. Room:友好、流畅的访问 SQLite 数据库。它在 SQLite 的基础上提供了一个抽象层,允许更强大的数据库访问。
  7. ViewModel:以生命周期的方式管理界面相关的数据,通常和 DataBinding 配合使用,为开发者实现 MVVM架构提供了强有力的支持。
  8. WorkManager:管理 Android 的后台的作业,即使应用程序退出或设备重新启动也可以运行可延迟的异步任务。

这些架构组件既可以配合使用,也可以单独使用,这里建议还是尽量按照官方推荐的来。

官方推荐的 Android 应用架构如下图所示。
Jetpack架构组件 (一)-- Android Jetpack 简介_第2张图片

请注意,每个组件仅依赖于其下一级的组件。例如,Activity 和 Fragment 仅依赖于视图模型。存储区是唯一依赖于其他多个类的类;在本例中,存储区依赖于持久性数据模型和远程后端数据源。

这种设计打造了一致且愉快的用户体验。无论用户上次使用应用是在几分钟前还是几天之前,现在回到应用时都会立即看到应用在本地保留的用户信息。如果此数据已过时,则应用的存储区模块将开始在后台更新数据。

2.2 Foundationy(基础组件)

基础组件提供横向功能,例如向后兼容性、测试、安全、Kotlin 语言支持,它包含如下组件库:

  1. Android KTX:是一组 Kotlin 扩展程序,优化了供 Kotlin 使用的 Jetpack 和 Android 平台 API。帮助开发者以更简洁、更愉悦、更惯用的方式使用Kotlin进行 Android 开发。
  2. AppCompat:提供了一系列以 AppCompat 开头的 API,以便兼容低版本的 Android 开发。
  3. Auto:有助于开发 Android Auto 应用的组件,提供了适用于所有车辆的标准化界面和用户交互,开发者无需担心特定于车辆的硬件差异(如屏幕分辨率、软件界面、旋钮和触摸式控件)。
  4. Benchmark(检测):从 Android Studio 中快速对基于 Kotlin 或 Java 的代码进行基准化分析。衡量代码性能,并将基准化分析结果输出到 Android Studio 控制台。
  5. Multidex(多Dex处理):为方法数超过 64K 的应用启用多 dex 文件。
  6. Security(安全):按照安全最佳做法读写加密文件和共享偏好设置。
  7. Test(测试):用于单元和运行时界面测试的 Android 测试框架。
  8. TV:构建可让用户在大屏幕上体验沉浸式内容的应用。
  9. Wear OS:有助于开发 Wear 应用的组件。

2.3 Behavior(行为组件)

行为组件可帮助开发者的应用与标准Android服务(如通知、权限、分享)相集成。

  1. CameraX:帮助开发者简化相机应用的开发工作。它提供一致且易于使用的 API 界面,适用于大多数 Android 设备,并可向后兼容至 Android 5.0(API 级别 21)。
  2. DownloadManager(下载管理器):可处理长时间运行的HTTP下载,并在出现故障或在连接更改和系统重新启动后重试下载。
  3. Media & playback(媒体&播放):用于媒体播放和路由(包括 Google Cast)的向后兼容 API。
  4. Notifications(通知):提供向后兼容的通知 API,支持 Wear 和 Auto。
  5. Permissions(权限):用于检查和请求应用权限的兼容性 API。
  6. Preferences(偏好设置):提供了用户能够改变应用的功能和行为能力。
  7. Sharing(共享):提供适合应用操作栏的共享操作。
  8. Slices(切片):切片是一种UI模板,创建可在应用外部显示应用数据的灵活界面元素。

2.4 UI(界面组件)

界面组件可提供各类View和辅助程序,让应用不仅简单易用,还能带来愉悦体验。它包含如下组件库:

  1. Animation & Transitions(动画&过度):该框架包含用于常见效果的内置动画,并允许开发者创建自定义动画和生命周期回调。
  2. Emoji(表情符号):使用户在未更新系统版本的情况下也可以获取最新的表情符号。
  3. Fragment:组件化界面的基本单位。
  4. Layout(布局):xml书写的界面布局或者使用Compose完成的界面。
  5. Palette(调色板):从调色板中提取出有用的信息。

3. 在应用中引入Jetpack相关组件

所有 Jetpack 组件都可在 Google Maven 代码库中找到。

打开项目build.gradle 文件并添加 google() 代码库,如下所示:

allprojects {
    repositories {
        google()
        jcenter()
    }
}

然后,您可以添加 Jetpack 组件(例如 LiveData 和 ViewModel 等架构组件),如下所示:

dependencies {
    def lifecycle_version = "2.2.0"
    implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
    ...
}

许多 Jetpack 库都提供 Android KTX 扩展,如上面的 lifecycle-livedata-ktxlifecycle-viewmodel-ktx 所示。KTX 扩展在基于 Java 的 API 基础上构建,充分利用了 Kotlin 特有的语言功能。

基于 Kotlin 以及基于 Java 的 API 参考文档页面适用于所有 Jetpack 库。

总结

这篇文章内部不多,旨在让大家了解Android Jetpack是什么,包括什么,如何引用,从下一篇开始,就开始学习Android Jetpack的架构组件。

扫描下方二维码关注公众号,获取更多技术干货。

Jetpack架构组件 (一)-- Android Jetpack 简介_第3张图片

你可能感兴趣的:(Jetpack,android)