一起看 I/O | Jetpack 新功能一览
Android Jetpack
https://developer.android.google.cn/jetpack现代 Android 开发
https://developer.android.google.cn/modern-android-development
下面我们将介绍 Jetpack 三大主要领域的近期更新亮点:
架构库及相关指南 应用性能优化
界面库及相关指南
最后,我们会在本文结尾部分介绍一些其他关键更新。
架构库及相关指南
数据持久化
Room
https://developer.android.google.cn/jetpack/androidx/releases/room
在 Room 中,我们引入了许多全新功能,比如新增 Upsert 操作 (如果不存在唯一性冲突,Upsert 会尝试插入实体;如果存在冲突,Upsert 则会尝试更新实体),以及支持在 KSP 中使用 Kotlin 值类。这些新功能可以在 Room 2.6-alpha 版本中使用,其中所有的库源代码均以 Kotlin 编写,同时支持 Java 编程语言和 Kotlin 代码生成。
Room 2.6-alpha 版本
https://developer.android.google.cn/jetpack/androidx/releases/room#2.6.0-alpha01
使用 WorkManager 管理任务
WorkManager 2.8.0 版
https://developer.android.google.cn/jetpack/androidx/releases/work
DataStore
DataStore 库是一个强大的数据存储解决方案,可解决关于 SharedPreferences 的问题,并提供基于新式协程的 API。
DataStore
https://developer.android.google.cn/jetpack/androidx/releases/datastore
在 DataStore 1.1 Alpha 版中,我们增加了一个备受期待的功能: 多进程支持。您可借此从多个进程访问 DataStore,同时获得进程之间的数据一致性保证。我们还推出了其他功能,包括新的存储接口,可以切换 DataStore 的底层存储机制 (我们已提供适用于 java.io 和 okio 的实现)。此外,我们还增加了对 Kotlin 多平台的支持。
DataStore 1.1 Alpha 版
https://developer.android.google.cn/jetpack/androidx/releases/datastore#1.1.0-alpha04
生命周期管理
生命周期感知型组件可执行操作来响应另一个组件 (如 activity 和 fragment) 的生命周期状态的变化。这些组件有助于您写出更有条理且往往更精简的代码,这样的代码更易于维护。
我们发布了 Lifecycle 2.6.0 稳定版,其中包括更多 Compose 集成。我们在 Flow 上新增了一个扩展方法,即 collectAsStateWithLifecycle()。该扩展从数据流中收集数据,并以可感知生命周期的方式将其最新值表示为 Compose 状态。此外,该扩展将大量的类转换为 Kotlin,并且仍然保留与之前版本的二进制兼容性。
Lifecycle 2.6.0
https://developer.android.google.cn/jetpack/androidx/releases/lifecycle#2.6.0将其最新值表示为 Compose 状态
https://medium.com/androiddevelopers/consuming-flows-safely-in-jetpack-compose-cde014d0d5a3
预测性返回手势
在 Android 13 中,我们为手机、大屏设备和可折叠设备等 Android 设备引入了预测性返回手势。该功能的发布历程跨度将达多年;在完全实现后,该功能可让用户在完全完成某个返回手势之前就能预览此手势完成后的目的地或其他结果,以便用户能够决定是继续完成手势还是留在当前视图中。
Android 预测性返回的 Activity API 较为稳定,并且我们已更新使用受支持的系统返回回调函数的最佳实践,包括 BackHandler (用于 Compose)、OnBackPressedCallback 或 OnBackInvokedCallback。我们很高兴看到许多 Google 应用采用预测性返回功能,包括 Google Play 商店、Google 日历、Google 新闻和 Google TV!
最佳实践
https://developer.android.google.cn/guide/navigation/predictive-back-gesture#best-practices
在 Activity 1.8 Alpha 版中,除了之前用于处理返回手势的 handleOnBackPressed() 回调,OnBackPressedCallback 类现包含新的预测性返回进度回调,可用于处理返回手势的开始、整个手势的进展以及返回手势的取消。我们还添加了 ComponentActivity.setUpEdgeToEdge(),以向后兼容的方式轻松设置全屏显示。
Activity 更新带来更加一致的照片选择器体验
Android 照片选择器是一个可浏览界面,用于展示用户的媒体库。在 Activity 1.7.0 版中,我们更新了照片选择器 Activity 协定,以包含一个额外的回退,这允许原始设备制造商 (OEM) 和 Google Play 服务等系统应用通过实现回退操作,在更广泛的 Android 设备和 API 级别上提供一致的照片选择器体验。如需了解详细信息,您可以参阅相关文章。
Activity 1.7.0 版
https://developer.android.google.cn/jetpack/androidx/releases/activity#1.7.0相关文章
https://android-developers.googleblog.com/2023/04/photo-picker-everywhere.html
渐进式数据提取
使用 Paging 库,您可以加载和显示小型数据片段,以改善网络和系统资源消耗。应用数据可以在 RecyclerViews 或 Compose 延迟列表中逐步妥善地加载。
Paging
https://developer.android.google.cn/jetpack/androidx/releases/paging
Paging Compose 1.0.0-alpha19 版支持所有的延迟布局,包括由 Wear 和 TV 库提供的自定义布局。为了支持更多延迟布局,Paging Compose 目前在 LazyPagingItems 的 itemKey 和 itemContentType 中提供略低级别的扩展方法。这些 API 旨在帮助您实现 LazyColumn、LazyVerticalGrid 及其 API 中的等效项 (如 HorizontalPager) 的已有标准项目 API 的 Key 和 contentType 参数。虽然这些变化确实让 LazyColumn 和 LazyRow 的示例增加了几行内容,但它确保了所有延迟布局的一致性。
Paging Compose 1.0.0-alpha19 版
https://developer.android.google.cn/jetpack/androidx/releases/paging#1.0.0-alpha19
应用性能优化
通过使用性能库,您可以构建高性能的应用,并有针对性的优化以保持其性能表现,从而提供更好的最终用户体验。
缩短启动时间
借助基准配置文件,您可以在安装应用时部分编译应用,以提高运行时和启动的性能,并在新的工具和库中获得大幅提升:
基准配置文件
https://developer.android.google.cn/topic/performance/baselineprofiles/overview
Jetpack 在 Alpha 版本中提供了一个新的基准配置文件 Gradle 插件,该插件支持 AGP 8.0 及更高版本,并且您可以在 Studio Hedgehog (目前处于 Canary 版) 中轻松添加至项目。该插件可以将一系列任务自动化,如运行生成任务、从设备中提取配置文件,并定期或作为发布流程的一部分将其整合到您构建的版本中。
基准配置文件 Gradle 插件
https://developer.android.google.cn/topic/performance/baselineprofiles/create-baselineprofile#baseline-profile-gradle-plugin在 Studio Hedgehog (目前处于 Canary 版) 中轻松添加至项目
https://developer.android.google.cn/studio/preview
借助该插件,您亦可在 AGP 8.1 版中轻松自动化新的 Dex 布局优化功能,以便您定义 BaselineProfileRule 测试。此类测试会收集启动时使用的类,并将它们移至 MultiDex 应用中的 Dex 主要文件,从而提高局部性。在大型应用中,该插件可以让冷启动时间在基准配置文件的基础上缩短 30%!
新的 Dex 布局优化功能
https://developer.android.google.cn/topic/performance/baselineprofiles/overview
PowerMetric
https://developer.android.google.cn/reference/androidx/benchmark/macro/PowerMetric自定义轨迹指标
https://developer.android.google.cn/reference/androidx/benchmark/macro/TraceMetric
您可以在《Android 性能更新》文章中深入了解所有相关内容。
Android 性能更新
https://medium.com/androiddevelopers/whats-new-in-android-performance-google-i-o-2023-edition-21a1832c9fa3
界面库及相关指南
Jetpack Compose
2023 年 5 月版本
https://developer.android.google.cn/jetpack/androidx/releases/compose#2023.05.00Jetpack Compose 的新功能
https://android-developers.googleblog.com/2023/05/whats-new-in-jetpack-compose.html
Glance
Glance
https://developer.android.google.cn/jetpack/androidx/releases/glance1.0-beta 版
https://developer.android.google.cn/jetpack/androidx/releases/glance#version_100_2应用微件 (widget)
https://developer.android.google.cn/develop/ui/views/appwidgets/overviewAndroid widget 改进
https://developer.android.google.cn/about/versions/12/features/widgets
Compose for TV
TV 库
https://developer.android.google.cn/jetpack/androidx/releases/tvCompose for TV
https://android-developers.googleblog.com/2023/05/building-pixel-perfect-living-room-experiences-compose-for-tv.html
Material 3 for Compose
Material Design 3
https://m3.material.io/1.1 稳定版
https://developer.android.google.cn/reference/kotlin/androidx/compose/material3/package-summary版本说明文章
https://material.io/blog/material-3-compose-1-1
了解窗口状态
WindowManager
https://developer.android.google.cn/jetpack/androidx/releases/window
1.1.0-beta01 版
https://developer.android.google.cn/jetpack/androidx/releases/window#1.1.0-beta01
其他关键更新
Kotlin 多平台
我们继续对使用 Kotlin 多平台在 Android 和 iOS 之间共享业务逻辑进行实验。我们更新了 Collections 1.3.0-alpha03 版和 DataStore 1.1.0-alpha02 版,以便您现在可以在 KMM 项目中使用这些库。如果您在应用中使用 Kotlin 多平台,我们期待收到您的反馈!
Kotlin 多平台
https://developer.android.google.cn/kotlin/multiplatformCollections 1.3.0-alpha03 版
https://developer.android.google.cn/jetpack/androidx/releases/collection#1.3.0-alpha03DataStore 1.1.0-alpha02 版
https://developer.android.google.cn/jetpack/androidx/releases/datastore#1.1.0-alpha02KMM
https://kotlinlang.org/docs/multiplatform-mobile-getting-started.html反馈
https://issuetracker.google.com/issues/new?component=1337890&template=1803002
以上内容是过去几个月中 Jetpack 的所有重要更新回顾,希望这些内容可以帮助您更高效地构建应用。如需了解每个 Jetpack 库的更多详情,您可以查看 AndroidX 版本说明;如需快速找到相关库,您可以使用 API 选取器;如需了解其他精彩内容,您可以观看 Google I/O 大会演讲视频。欢迎您持续关注 "Android 开发者" 微信公众号,及时了解更多开发技术和产品更新等资讯动态。
AndroidX 版本说明
https://developer.android.google.cn/jetpack/androidx/versionsAPI 选取器
https://developer.android.google.cn/jetpack/androidx/explorer?case=popular观看 Google I/O 大会演讲视频
https://io.google/2023/program/
推荐阅读