一起看 I/O | Jetpack 新功能一览

一起看 I/O | Jetpack 新功能一览

作者 / Android 产品经理 Amanda Alexander

Android Jetpack现代 Android 开发(Modern Android Development) 的关键组成支柱。Android Jetpack 套件包含超 100 个库、工具及指南,可帮助开发者遵循最佳实践、减少样板代码,并编写可在各种 Android 版本和设备中一致运行的代码,以便您可以专注于为应用构建特色功能。Google Play 上的大多数应用都使用 Jetpack 进行开发,事实上,在排行榜前 1,000 的应用中,超过 90% 的应用都使用了 Jetpack

下面我们将介绍 Jetpack 三大主要领域的近期更新亮点:

  • 架构库及相关指南

  • 应用性能优化

  • 界面库及相关指南

最后,我们会在本文结尾部分介绍一些其他关键更新。

架构库及相关指南

应用架构库和组件可确保应用的稳健性、可测试性及可维护性。

数据持久化

大多数应用都需要持久化本地状态,无论是缓存结果、管理用户输入数据的本地列表,还是为界面中返回的数据提供支持。Room 是我们推荐的数据持久化层,它在 SQLite 的基础上提供了一个抽象层,从而提高了平台的易用性和安全性。

在 Room 中,我们引入了许多全新功能,比如新增 Upsert 操作 (如果不存在唯一性冲突,Upsert 会尝试插入实体;如果存在冲突,Upsert 则会尝试更新实体),以及支持在 KSP 中使用 Kotlin 值类。这些新功能可以在 Room 2.6-alpha 版本 中使用,其中所有的库源代码均以 Kotlin 编写,同时支持 Java 编程语言和 Kotlin 代码生成。

使用 WorkManager 管理任务

借助 WorkManager 库,您可以轻松调度必须可靠运行的可延期异步任务,例如上传备份或分析。使用这些 API,您可以创建任务并将其提交给 WorkManager,以便在满足工作约束条件时运行。

现在,您可以借助 WorkManager 在您已将 WorkRequest 加入队列的情况下对其进行更新。在经常更改约束条件或需要实时更新工作器的大型应用中,这种操作通常十分必要。自 WorkManager 2.8.0 版 起,您可以使用 updateWork() API 来实现这一目的,而无需进行手动取消并将新的 WorkRequest 加入队列的步骤。这大大简化了开发过程。

DataStore

DataStore 库是一个强大的数据存储解决方案,可解决关于 SharedPreferences 的问题,并提供基于新式协程的 API。

DataStore 1.1 Alpha 版 中,我们增加了一个备受期待的功能: 多进程支持。您可借此从多个进程访问 DataStore,同时获得进程之间的数据一致性保证。我们还推出了其他功能,包括新的存储接口,可以切换 DataStore 的底层存储机制 (我们已提供适用于 java.io 和 okio 的实现)。此外,我们还增加了对 Kotlin 多平台的支持。

生命周期管理

生命周期感知型组件可执行操作来响应另一个组件 (如 activity 和 fragment) 的生命周期状态的变化。这些组件有助于您写出更有条理且往往更精简的代码,这样的代码更易于维护。

我们发布了 Lifecycle 2.6.0 稳定版,其中包括更多 Compose 集成。我们在 Flow 上新增了一个扩展方法,即 collectAsStateWithLifecycle()。该扩展从数据流中收集数据,并以可感知生命周期的方式 将其最新值表示为 Compose 状态。此外,该扩展将大量的类转换为 Kotlin,并且仍然保留与之前版本的二进制兼容性。

预测性返回手势

在 Android 13 中,我们为手机、大屏设备和可折叠设备等 Android 设备引入了预测性返回手势。该功能的发布历程跨度将达多年;在完全实现后,该功能可让用户在完全完成某个返回手势之前就能预览此手势完成后的目的地或其他结果,以便用户能够决定是继续完成手势还是留在当前视图中。

Android 预测性返回的 Activity API 较为稳定,并且我们已更新使用受支持的系统返回回调函数的 最佳实践,包括 BackHandler (用于 Compose)、OnBackPressedCallback 或 OnBackInvokedCallback。我们很高兴看到许多 Google 应用采用预测性返回功能,包括 Google Play 商店、Google 日历、Google 新闻和 Google TV!

在 Activity 1.8 Alpha 版中,除了之前用于处理返回手势的 handleOnBackPressed() 回调,OnBackPressedCallback 类现包含新的预测性返回进度回调,可用于处理返回手势的开始、整个手势的进展以及返回手势的取消。我们还添加了 ComponentActivity.setUpEdgeToEdge(),以向后兼容的方式轻松设置全屏显示。

Activity 更新带来更加一致的照片选择器体验

Android 照片选择器是一个可浏览界面,用于展示用户的媒体库。在 Activity 1.7.0 版 中,我们更新了照片选择器 Activity 协定,以包含一个额外的回退,这允许原始设备制造商 (OEM) 和 Google Play 服务等系统应用通过实现回退操作,在更广泛的 Android 设备和 API 级别上提供一致的照片选择器体验。如需了解详细信息,您可以参阅 相关文章

渐进式数据提取

使用 Paging 库,您可以加载和显示小型数据片段,以改善网络和系统资源消耗。应用数据可以在 RecyclerViews 或 Compose 延迟列表中逐步妥善地加载。

Paging Compose 1.0.0-alpha19 版 支持所有的延迟布局,包括由 Wear 和 TV 库提供的自定义布局。为了支持更多延迟布局,Paging Compose 目前在 LazyPagingItems 的 itemKey 和 itemContentType 中提供略低级别的扩展方法。这些 API 旨在帮助您实现 LazyColumn、LazyVerticalGrid 及其 API 中的等效项 (如 HorizontalPager) 的已有标准项目 API 的 Key 和 contentType 参数。虽然这些变化确实让 LazyColumn 和 LazyRow 的示例增加了几行内容,但它确保了所有延迟布局的一致性。

应用性能优化

通过使用性能库,您可以构建高性能的应用,并有针对性的优化以保持其性能表现,从而提供更好的最终用户体验。

缩短启动时间

借助 基准配置文件,您可以在安装应用时部分编译应用,以提高运行时和启动的性能,并在新的工具和库中获得大幅提升:

Jetpack 在 Alpha 版本中提供了一个新的 基准配置文件 Gradle 插件,该插件支持 AGP 8.0 及更高版本,并且您可以 在 Studio Hedgehog (目前处于 Canary 版) 中轻松添加至项目。该插件可以将一系列任务自动化,如运行生成任务、从设备中提取配置文件,并定期或作为发布流程的一部分将其整合到您构建的版本中。

借助该插件,您亦可在 AGP 8.1 版中轻松自动化 新的 Dex 布局优化功能,以便您定义 BaselineProfileRule 测试。此类测试会收集启动时使用的类,并将它们移至 MultiDex 应用中的 Dex 主要文件,从而提高局部性。在大型应用中,该插件可以让冷启动时间在基准配置文件的基础上缩短 30%!

Macrobenchmark 1.2 Alpha 版推出了许多新功能,比如 PowerMetric自定义轨迹指标 (Custom trace metrics)、在 Android 13 上无需 root 即可生成基准配置文件,以及在 Android 14 上无需清除应用数据即可重新编译的功能。

您可以在《Android 性能更新》文章中深入了解所有相关内容。

界面库及相关指南

我们对界面库进行了几项更新,以更好地支持大屏幕兼容性、可折叠设备和表情符号。

Jetpack Compose

Jetpack Compose 是 Android 用于构建原生界面的现代工具包,最近发布了 2023 年 5 月版本,其中不仅包括文本和布局的新功能、持续的性能改进、增强的工具支持、对大屏设备的更多支持,还包括更新后的指南。您可以阅读《Jetpack Compose 的新功能》I/O 大会文章了解详情。

Glance

Glance 库现在推出了 1.0-beta 版,可以让您使用 Jetpack Compose 开发针对 Android 手机、平板电脑和可折叠主屏幕优化的 应用微件 (widget)。该库使用 Kotlin 和 Compose,为您提供开箱即用的最新 Android widget 改进

Compose for TV

TV 库 Alpha 版发布后,您现在可以使用针对客厅体验优化的组件为 Android TV 打造出色体验。Compose for TV 可以让 TV 应用享受 Jetpack Compose 的各项优势,使您能够以更少的代码、更便捷的维护以及现代 Material 3 外观直接构建应用。您可以参阅《Compose for TV》文章了解更多详情。

Material 3 for Compose

Material Design 3 是 Material Design 的新一代版本,帮助您构建富有表现力、生动个性的应用。Material 3 是 Android 应用的推荐设计系统,1.1 稳定版 更是引入了激动人心的新功能,如底部动作条、日期和时间选择器、搜索栏、提示,并增加了更多动作和交互支持。如需了解详细信息,您可以参阅 版本说明文章

了解窗口状态

新的 WindowManager 库为 API 版本 14 及更高版本提供了一个通用式 API 接口,可帮助开发者为新的设备外形规格和多窗口环境提供支持。

1.1.0-beta01 版 中,Activity 嵌入和窗口布局增加了新的特性和功能,以便您优化大屏设备上的多 Activity 应用。Jetpack WindowManager 1.1 版本发布后,Activity 嵌入 API 将不再是实验性功能。我们建议开发者为多 Activity 应用采用此 API 以提供更好的大屏幕布局。如需了解详细信息和迁移步骤,您可以参阅《WindowManager 1.1.0-beta01 新功能详解》。

其他关键更新

Kotlin 多平台

我们继续对使用 Kotlin 多平台 在 Android 和 iOS 之间共享业务逻辑进行实验。我们更新了 Collections 1.3.0-alpha03 版DataStore 1.1.0-alpha02 版,以便您现在可以在 KMM 项目中使用这些库。如果您在应用中使用 Kotlin 多平台,我们期待收到您的 反馈

以上内容是过去几个月中 Jetpack 的所有重要更新回顾,希望这些内容可以帮助您更高效地构建应用。如需了解每个 Jetpack 库的更多详情,您可以查看 AndroidX 版本说明;如需快速找到相关库,您可以使用 API 选取器;如需了解其他精彩内容,您可以 观看 Google I/O 大会演讲视频。欢迎您持续关注我们,及时了解更多开发技术和产品更新等资讯动态。

Java 是 Oracle 和/或其附属公司的商标或注册商标。

版权声明

禁止一切形式的转载-禁止商用-禁止衍生 申请授权

脉脉不得语
脉脉不得语
Zhengzhou Website
Android Developer | https://androiddevtools.cn and https://androidweekly.io Funder | GDG Zhengzhou Funder & Ex Organizer | http://Toast.show(∞) Podcast Host

你已经成功订阅到 Android 开发技术周报
太棒了!接下来,完成检验以获得全部访问权限 Android 开发技术周报
欢迎回来!你已经成功登录了。
Unable to sign you in. Please try again.
成功!您的帐户已完全激活,您现在可以访问所有内容。
Error! Stripe checkout failed.
Success! Your billing info is updated.
Error! Billing info update failed.
🍗