Activity
最新更新 | 稳定版 | 候选版本 | Beta 版 | Alpha 版 |
---|---|---|---|---|
2025 年 6 月 4 日 | 1.10.1 | 1.11.0-rc01 | - | 1.12.0-alpha02 |
声明依赖项
要添加对 Activity 的依赖项,您必须将 Google Maven 代码库添加到您的项目中。请阅读Google 的 Maven 代码库以了解详情。
在应用或模块的 build.gradle
文件中添加所需工件的依赖项
Groovy
dependencies { def activity_version = "1.10.1" // Java language implementation implementation "androidx.activity:activity:$activity_version" // Kotlin implementation "androidx.activity:activity-ktx:$activity_version" }
Kotlin
dependencies { val activity_version = "1.10.1" // Java language implementation implementation("androidx.activity:activity:$activity_version") // Kotlin implementation("androidx.activity:activity-ktx:$activity_version") }
有关依赖项的更多信息,请参阅添加构建依赖项。
反馈
您的反馈有助于改进 Jetpack。如果您发现新问题或有改进此库的建议,请告诉我们。在创建新问题之前,请查看此库中的现有问题。您可以通过点击星形按钮为现有问题投票。
有关更多信息,请参阅问题跟踪器文档。
版本 1.12
版本 1.12.0-alpha02
2025 年 6 月 4 日
androidx.activity:activity:1.12.0-alpha02
、androidx.activity:activity-compose:1.12.0-alpha02
和 androidx.activity:activity-ktx:1.12.0-alpha02
已发布。版本 1.12.0-alpha02 包含这些提交。
Bug 修复
- 来自NavigationEvent
1.0.0-alpha02
:修复了由于同时修改内部可关闭列表而在调用NavigationEventCallback.remove()
时可能发生的ConcurrentModificationException
。(I63066)
版本 1.12.0-alpha01
2025 年 5 月 20 日
androidx.activity:activity:1.12.0-alpha01
、androidx.activity:activity-compose:1.12.0-alpha01
和 androidx.activity:activity-ktx:1.12.0-alpha01
已发布。版本 1.12.0-alpha01 包含这些提交。
新功能
ComponentActivity
和ComponentDialog
已通过NavigationEventDispatcherOwner
API 集成到NavigationEvent1.0.0-alpha01
。您现在可以通过navigationEventDispatcher
字段从ComponentActivity
中检索NavigationEventDispatcher
。由于OnBackPressedDispatcher
已在新库的基础上重写,因此所有以前的用法都应继续正常工作。今后您应使用NavigationEventDispatcher
和NavigationEventCallback
。(Ib8eed、I6cc44、Ib7724、I9a0f7、b/412597031、b/415028038、b/412596729、b/412597140、b/412596012)
版本 1.11
版本 1.11.0-rc01
2025 年 4 月 23 日
androidx.activity:activity:1.11.0-rc01
、androidx.activity:activity-compose:1.11.0-rc01
和 androidx.activity:activity-ktx:1.11.0-rc01
已发布。版本 1.11.0-rc01 包含这些提交。
版本 1.11.0-beta01
2025 年 4 月 9 日
androidx.activity:activity:1.11.0-beta01
、androidx.activity:activity-compose:1.11.0-beta01
和 androidx.activity:activity-ktx:1.11.0-beta01
已发布。版本 1.11.0-beta01 包含这些提交。
版本 1.11.0-alpha02
2025 年 3 月 26 日
androidx.activity:activity:1.11.0-alpha02
、androidx.activity:activity-compose:1.11.0-alpha02
和 androidx.activity:activity-ktx:1.11.0-alpha02
已发布。版本 1.11.0-alpha02 包含这些提交。
API 变更
- 将 Android 16 Beta03 中的新
EDGE_NONE
和frameTimeMillis
集成到OnBackPressedCallback
的handleOnBackStarted
和handleOnBackProgressed
函数提供的BackEventCompat
中。
依赖项更新
- Activity 现在使用 API 36 编译。(I510e8,b/301910674)
版本 1.11.0-alpha01
2025 年 3 月 12 日
androidx.activity:activity:1.11.0-alpha01
、androidx.activity:activity-compose:1.11.0-alpha01
和 androidx.activity:activity-ktx:1.11.0-alpha01
已发布。版本 1.11.0-alpha01 包含这些提交。
新功能
- 将
MediaCapabilities
API 添加到PickVisualMediaRequest
,以允许应用指定其媒体功能,例如支持的 HDR 类型。(Ic3ee7)
版本 1.10
版本 1.10.1
2025 年 2 月 26 日
androidx.activity:activity:1.10.1
、androidx.activity:activity-compose:1.10.1
和 androidx.activity:activity-ktx:1.10.1
已发布。版本 1.10.1 包含这些提交。
Bug 修复
ViewTree
OnBackPressedDispatcherOwners
和FullyDrawnReporterOwners
现在可以通过视图的分离父级(例如ViewOverlay
)进行解析。有关分离视图父级的更多信息,请参阅核心库的版本说明或ViewTree.setViewTreeDisjointParent
中的文档。(Ie7750)
版本 1.10.0
2025 年 1 月 15 日
androidx.activity:activity:1.10.0
、androidx.activity:activity-compose:1.10.0
和 androidx.activity:activity-ktx:1.10.0
已发布。版本 1.10.0 包含这些提交。
自 1.9.0 以来的重要变更
PhotoPicker
现在允许按顺序选择图片,并选择初始可见的标签页(相册或图片)。- 触发照片选择器的
PickVisualMedia
和PickMultipleVisualMedia
Activity Result 合同不再在系统照片选择器不可用时直接委托给 Google Play 服务,而是使用公共的ACTION_SYSTEM_FALLBACK_PICK_IMAGES
操作和相关额外数据,为 OEM 和系统应用提供一致的照片选择器体验作为回退方案。 - 新的
LocalActivity
组合本地提供当前范围的Activity
,消除了开发者从LocalContext
获取Activity
的需要。
版本 1.10.0-rc01
2024 年 12 月 11 日
androidx.activity:activity:1.10.0-rc01
、androidx.activity:activity-compose:1.10.0-rc01
和 androidx.activity:activity-ktx:1.10.0-rc01
已发布。版本 1.10.0-rc01 包含这些提交。
Bug 修复
- 修复了在
PredictiveBackHandler
处于活动状态时更改启用状态会立即中断回调的问题。现在,无论启用状态如何变化,它都会完成当前回调。(Ib8719)
版本 1.10.0-beta01
2024 年 11 月 13 日
androidx.activity:activity:1.10.0-beta01
、androidx.activity:activity-compose:1.10.0-beta01
和 androidx.activity:activity-ktx:1.10.0-beta01
已发布,自上一个 Alpha 版以来没有变化。版本 1.10.0-beta01 包含这些提交。
版本 1.10.0-alpha03
2024 年 10 月 30 日
androidx.activity:activity:1.10.0-alpha03
、androidx.activity:activity-compose:1.10.0-alpha03
和 androidx.activity:activity-ktx:1.10.0-alpha03
已发布。版本 1.10.0-alpha03 包含这些提交。
API 变更
- 新增
LocalActivity
组合本地,为当前范围提供Activity
,从而消除了开发者从LocalContext
获取Activity
的需求。它还附带了一个新的 lint 规则,用于检查LocalContext
何时被错误地强制转换为Activity
。(I7746a,b/283009666)
Bug 修复
- 来自Activity
1.9.3
:PredictiveBackHandler
在处理程序被禁用后将不再触发其回调。这将修复 Navigation Compose 中的NavHost
会抛出IndexOutOfBoundsException
的问题。(I3f75e,b/365027664,b/340202286)
依赖项更新
- Activity Compose 现在依赖于 Compose Runtime 1.7.0。(I7746a,b/283009666)
版本 1.10.0-alpha02
2024 年 9 月 4 日
androidx.activity:activity:1.10.0-alpha02
、androidx.activity:activity-compose:1.10.0-alpha02
和 androidx.activity:activity-ktx:1.10.0-alpha02
已发布。版本 1.10.0-alpha02 包含这些提交。
行为变更
- 触发照片选择器的
PickVisualMedia
和PickMultipleVisualMedia
Activity Result 合同不再在系统照片选择器不可用时直接委托给 Google Play 服务,而是使用公共的ACTION_SYSTEM_FALLBACK_PICK_IMAGES
操作和相关额外数据,为 OEM 和系统应用提供一致的照片选择器体验作为回退方案。对于安装了最新版 Google Play 服务的设备,这应该不会影响用户体验。(I3513d)
Bug 修复
- 移除了对新平台 API 访问的手动概要,因为在使用 AGP 7.3 或更高版本(例如 R8 版本 3.3)的 R8 时,以及在使用 AGP 8.1 或更高版本(例如 D8 版本 8.1)的所有构建中,这都会通过 API 建模自动发生。不使用 AGP 的客户端建议更新到 D8 8.1 或更高版本。有关更多详细信息,请参阅本文。(I9496c,b/345472586)
- 来自Activity
1.9.2
:修复了 Activity ComposePredictiveBackHandler
API 在禁用帧后仍会继续处理系统返回手势的问题,这可能导致 Navigation Compose 等库在返回堆栈为空时也处理返回,从而抛出IndexOutOfBoundsException
。(Ie3301,b/340202286) - 来自Activity
1.9.1
:修复了PredictiveBackHandler
的一个问题,即在执行系统返回后,尝试从OnBackPressedDispatcher
执行onBackPressed
会失败。(I5f1f8)
版本 1.10.0-alpha01
2024 年 6 月 26 日
androidx.activity:activity:1.10.0-alpha01
、androidx.activity:activity-compose:1.10.0-alpha01
和 androidx.activity:activity-ktx:1.10.0-alpha01
已发布。此版本在内部分支中开发。
新功能
- 新增对 Android V 中引入的
PhotoPicker
新功能的支持,包括能够按顺序选择图像以及选择初始显示的选项卡(相册或图像)。
版本 1.9
版本 1.9.3
2024 年 10 月 16 日
androidx.activity:activity:1.9.3
、androidx.activity:activity-compose:1.9.3
和 androidx.activity:activity-ktx:1.9.3
已发布。版本 1.9.3 包含这些提交。
Bug 修复
PredictiveBackHandler
在处理程序被禁用后将不再触发其回调。这将修复 Navigation Compose 中的NavHost
会抛出IndexOutOfBoundsException
的问题。(I3f75e,b/340202286)
版本 1.9.2
2024 年 9 月 4 日
androidx.activity:activity:1.9.2
、androidx.activity:activity-compose:1.9.2
和 androidx.activity:activity-ktx:1.9.2
已发布。版本 1.9.2 包含这些提交。
Bug 修复
- 修复了 Activity Compose
PredictiveBackHandler
API 在禁用帧后仍会继续处理系统返回手势的问题,这可能导致 Navigation Compose 等库在返回堆栈为空时也处理返回,从而抛出IndexOutOfBoundsException
。(Ie3301,b/340202286)
版本 1.9.1
2024 年 7 月 24 日
androidx.activity:activity:1.9.1
、androidx.activity:activity-compose:1.9.1
和 androidx.activity:activity-ktx:1.9.1
已发布。版本 1.9.1 包含这些提交。
Bug 修复
- 修复了
PredictiveBackHandler
的一个问题,即在执行系统返回后,尝试从OnBackPressedDispatcher
执行onBackPressed
会失败。(I5f1f8)
版本 1.9.0
2024 年 4 月 17 日
androidx.activity:activity:1.9.0
、androidx.activity:activity-compose:1.9.0
和 androidx.activity:activity-ktx:1.9.0
已发布。版本 1.9.0 包含这些提交。
自 1.8.0 以来的重要变更
ComponentActivity
现在实现OnUserLeaveHintProvider
,以允许组件为onUserLeaveHint
事件提供回调。OnBackPressedCallback
、BackHandler
和PredictiveBackHandler
API 现在在处理返回时调用onBackPressedDispatcher.onBackPressed()
时会发出警告,因为这总是会破坏预测返回动画。有关详细信息,请参阅最佳实践指南。- Activity API 的其余部分已用 Kotlin 重写,并且以前在
activity-ktx
中可用的所有扩展都已移至activity
。activity-ktx
现在完全为空。- 作为将
ActivityResultLauncher
转换为 Kotlin 的一部分,getContract
方法现在是一个抽象的 Kotlin 属性。这是一个二进制兼容的更改,但如果您的ActivityResultLauncher
实现是用 Kotlin 编写的,则会破坏源兼容性。
- 作为将
版本 1.9.0-rc01
2024 年 4 月 3 日
androidx.activity:activity:1.9.0-rc01
、androidx.activity:activity-compose:1.9.0-rc01
和 androidx.activity:activity-ktx:1.9.0-rc01
已发布。版本 1.9.0-rc01 包含这些提交。
依赖项更新
- Activity 现在依赖于 Profile Installer 1.3.1。
版本 1.9.0-beta01
2024 年 3 月 20 日
androidx.activity:activity:1.9.0-beta01
、androidx.activity:activity-compose:1.9.0-beta01
和 androidx.activity:activity-ktx:1.9.0-beta01
已发布。版本 1.9.0-beta01 包含这些提交。
Bug 修复
- 修复了 Activity
1.9.0-alpha02
中引入的 Activity 启动性能回归问题,该问题是由于在 Activity 创建过程中调用OnBackPressedDispatcher
引起的。(Ie75e3)
版本 1.9.0-alpha03
2024 年 2 月 7 日
androidx.activity:activity:1.9.0-alpha03
、androidx.activity:activity-compose:1.9.0-alpha03
和 androidx.activity:activity-ktx:1.9.0-alpha03
已发布。版本 1.9.0-alpha03 包含这些提交。
Lint 警告
OnBackPressedCallback
、BackHandler
和PredictiveBackHandler
API 现在在处理返回时调用onBackPressedDispatcher.onBackPressed()
时会发出警告,因为这总是会破坏预测返回动画。有关详细信息,请参阅最佳实践指南。(1e4222、2c950d、b/287505200)
Bug 修复
- 如果在一个已经运行的预测返回手势期间从系统发送返回事件,则当前运行的预测返回手势将被取消,并且新的返回事件将接管以开始新的预测返回手势。(I3482e)
- 修复了首次从后台线程访问
ComponentActivity
中的onBackPressedDispatcher
时发生的崩溃。现在可以在任何线程上安全地访问onBackPressedDispatcher
。(I79955)
版本 1.9.0-alpha02
2024 年 1 月 24 日
androidx.activity:activity:1.9.0-alpha02
、androidx.activity:activity-compose:1.9.0-alpha02
和 androidx.activity:activity-ktx:1.9.0-alpha02
已发布。版本 1.9.0-alpha02 包含这些提交。
Kotlin 转换
ActivityResultRegistry
已用 Kotlin 重写。这确保了传递给register
的契约泛型的可空性将正确地传递给返回给您的ActivityResultLauncher
。(I121f0)ActivityResult
已用 Kotlin 重写。支持解构为resultCode
和data
字段的ActivityResult
Kotlin 扩展已从activity-ktx
移至activity
。(I0565a)ComponentActivity
和trackPipAnimationHintView
的by viewModels()
的 Kotlin 扩展已从activity-ktx
移至activity
。activity-ktx
工件现在完全为空。(I0a444)
Bug 修复
enableEdgeToEdge
API 现在围绕所有显示屏切口绘制。(a3644b, b/311173461)- 来自 Activity
1.8.2
:修复了传递给 Photo Picker Activity Contract 的ACTION_SYSTEM_FALLBACK_PICK_IMAGES
的额外数据,以正确传递EXTRA_SYSTEM_FALLBACK_PICK_IMAGES_MAX
键,而不是使用键为"com.google.android.gms.provider.extra.PICK_IMAGES_MAX"
的额外数据。强烈建议作为实现系统回退 Photo Picker 的 OEM 支持这两种额外数据,以确保最广泛的兼容性。(I96a00)
版本 1.9.0-alpha01
2023 年 11 月 29 日
androidx.activity:activity:1.9.0-alpha01
、androidx.activity:activity-compose:1.9.0-alpha01
和 androidx.activity:activity-ktx:1.9.0-alpha01
已发布。版本 1.9.0-alpha01 包含这些提交。
新功能
ComponentActivity
现在实现OnUserLeaveHintProvider
,以允许组件为onUserLeaveHint
事件提供回调。(I54892)
API 变更
ComponentActivity
已用 Kotlin 重写。(I14f31)ActivityResultCaller
已用 Kotlin 重写。(Ib02e4)ActivityResultLauncher
已用 Kotlin 重写。作为该转换的一部分,getContract
方法现在是一个抽象的 Kotlin 属性。这是一个二进制兼容的更改,但如果您的ActivityResultLauncher
实现是用 Kotlin 编写的,则会破坏源兼容性。(Id4615)PickVisualMediaRequest
现在具有与PickVisualMedia
Activity Result contract 相同的最低 API 级别 19。(Id6e21)
依赖项更新
- Activity 现在依赖于 Core
1.13.0-alpha01
。(I14f31)
版本 1.8
版本 1.8.2
2023 年 12 月 13 日
androidx.activity:activity:1.8.2
、androidx.activity:activity-compose:1.8.2
和 androidx.activity:activity-ktx:1.8.2
已发布。版本 1.8.2 包含这些提交。
Bug 修复
- 修复了传递给 Photo Picker Activity Contract 的
ACTION_SYSTEM_FALLBACK_PICK_IMAGES
的额外数据,以正确传递EXTRA_SYSTEM_FALLBACK_PICK_IMAGES_MAX
键,而不是使用键为"com.google.android.gms.provider.extra.PICK_IMAGES_MAX"
的额外数据。强烈建议作为实现系统回退 Photo Picker 的 OEM 支持这两种额外数据,以确保最广泛的兼容性。(I96a00)
版本 1.8.1
2023 年 11 月 15 日
androidx.activity:activity:1.8.1
、androidx.activity:activity-compose:1.8.1
和 androidx.activity:activity-ktx:1.8.1
已发布。版本 1.8.1 包含这些提交。
Bug 修复
OnBackPressedDispatcher
现在即使在处理返回手势时添加了新的OnBackPressedCallback
,也会继续分派到正确的OnBackPressedCallback
。(Id0ff6)
版本 1.8.0
2023 年 10 月 4 日
androidx.activity:activity:1.8.0
、androidx.activity:activity-compose:1.8.0
和 androidx.activity:activity-ktx:1.8.0
已发布。版本 1.8.0 包含这些提交。
自 1.7.0 以来的重要变更
- 预测返回 -
OnBackPressedCallback
现在提供新的预测返回回调,用于处理返回手势的开始、手势全程的进度以及返回手势的取消,此外还有之前用于提交返回手势时的handleOnBackPressed()
回调。这还包括PredictiveBackHandler
Composable,用于在 Activity Compose 中处理预测返回手势事件。它提供一个BackEventCompat
对象流,必须在您提供的 suspending lambda 中收集。
PredictiveBackHandler { progress: Flow<BackEventCompat> ->
// code for gesture back started
try {
progress.collect { backEvent ->
// code for progress
}
// code for completion
} catch (e: CancellationException) {
// code for cancellation
}
}
ComponentActivity.onBackPressed()
现已弃用,取而代之的是用于处理返回的 API。开发者现在应该使用 OnBackPressedDispatcher
,而不是覆盖此方法。
- EdgeToEdge -
ComponentActivity.enableEdgeToEdge()
已添加,以便以向后兼容的方式轻松设置全屏显示。
版本 1.8.0-rc01
2023 年 9 月 20 日
androidx.activity:activity:1.8.0-rc01
、androidx.activity:activity-compose:1.8.0-rc01
和 androidx.activity:activity-ktx:1.8.0-rc01
已发布。版本 1.8.0-rc01 包含这些提交。
版本 1.8.0-beta01
2023 年 9 月 6 日
androidx.activity:activity:1.8.0-beta01
、androidx.activity:activity-compose:1.8.0-beta01
和 androidx.activity:activity-ktx:1.8.0-beta01
已发布。版本 1.8.0-beta01 包含这些提交。
文档改进
- 改进了
BackEventCompat
的文档。(aosp/2722254)
版本 1.8.0-alpha07
2023 年 8 月 23 日
androidx.activity:activity:1.8.0-alpha07
、androidx.activity:activity-compose:1.8.0-alpha07
和 androidx.activity:activity-ktx:1.8.0-alpha07
已发布。版本 1.8.0-alpha07 包含这些提交。
新功能
Activity Compose 添加了一个新的
PredictiveBackHandler
Composable,用于处理预测返回手势事件。它提供了一个BackEventCompat
对象Flow
,必须在您提供的 suspending lambda 中收集。PredictiveBackHandler { progress: Flow<BackEventCompat> -> // code for gesture back started try { progress.collect { backEvent -> // code for progress } // code for completion } catch (e: CancellationException) { // code for cancellation } }
它还通过 lint 规则提供编译时警告,以确保
Flow
调用collect()
。(Id2773,b/294884345)ComponentActivity
中的onBackPressedDispatcher
现在是惰性初始化的,因此只有在需要时才会创建。(I0bf8e)
Bug 修复
ComponentActivity
在 Android 13 上接收到onBackPressed()
回调且 Activity 已DESTROYED
时,将不再显示 NPE。(Idb055,b/291869278)- 删除了实验性
isAtLeastU()
API 的使用。(Ie9117,b/289269026)
版本 1.8.0-alpha06
2023 年 6 月 21 日
androidx.activity:activity:1.8.0-alpha06
、androidx.activity:activity-compose:1.8.0-alpha06
和 androidx.activity:activity-ktx:1.8.0-alpha06
已发布。版本 1.8.0-alpha06 包含这些提交。
新功能
OnBackPressedDispatcher
现在在预测返回手势期间移除任何回调时,会正确取消这些回调。(I3f90f)
API 变更
- 当将
SystemBarStyle.auto
传递给enableEdgeToEdge
API 时,您现在可以覆盖detectDarkMode
lambda 参数,以提供自定义逻辑来检测夜间模式。(aosp/2546393,b/278263793)
版本 1.8.0-alpha05
2023 年 6 月 7 日
androidx.activity:activity:1.8.0-alpha05
、androidx.activity:activity-compose:1.8.0-alpha05
和 androidx.activity:activity-ktx:1.8.0-alpha05
已发布。此版本是在内部分支中开发的。
API 变更
- Activity 现在提供了一个
BackEventCompat
类,它是一个与框架BackEvent
类解耦的向后兼容的BackEvent
版本。 - 重大变更:
OnBackPressedCallback
的handleOnBackStarted
和handleOnBackProgressed
方法现在接收androidx.activity.BackEventCompat
实例,而不是框架android.window.BackEvent
类。OnBackPressedDispatcher
上等效的@VisibleForTesting
API 也已更新。 OnBackPressedDispatcher
的构造函数现在接受一个可选的Consumer<Boolean>
实例,该实例允许调度器的所有者在启用的回调数量从零变为非零或反之亦然时接收回调。
Bug 修复
- 来自 Activity
1.7.2
:修复了在调用report
之前从屏幕导航走时ReportDrawn
崩溃的问题。(Ic46f1,b/260506820)
版本 1.8.0-alpha04
2023 年 5 月 10 日
androidx.activity:activity:1.8.0-alpha04
、androidx.activity:activity-compose:1.8.0-alpha04
和 androidx.activity:activity-ktx:1.8.0-alpha04
已发布。此版本从内部分支发布。
Bug 修复
- 来自 Activity 1.7.1:- 当将
ComponentActivity
与ActivityScenario
一起使用时,ReportFullyDrawExecuter
不再泄漏。(Id2ff2,b/277434271)
版本 1.8.0-alpha03
2023 年 4 月 12 日
androidx.activity:activity:1.8.0-alpha03
、androidx.activity:activity-compose:1.8.0-alpha03
和 androidx.activity:activity-ktx:1.8.0-alpha03
已发布。此版本从内部分支发布。
新功能
- 添加了
ComponentActivity.setUpEdgeToEdge()
,以便以向后兼容的方式轻松设置全屏显示。
API 变更
ComponentActivity.onBackPressed()
现已弃用,取而代之的是用于处理返回的 API。开发者现在应该使用OnBackPressedDispatcher
,而不是覆盖此方法。(Ibce2f,b/271596918)ComponentDialog
和ComponentActivity
现在包含公共 APIinitViewTreeOwners()
,用于在设置内容视图之前初始化所有视图树所有者。(Ibdce0,b/261314581)
Bug 修复
- 修复了 Fragments 错误地使 MenuHosts 失效并导致 Activity 中其他菜单出现意外行为的问题。(I9404e,b/244336571)
其他变更
ActivityResultRegister
现在使用 KotlinRandom
而不是 Java。(I4d98f,b/272096025)
版本 1.8.0-alpha02
2023 年 3 月 8 日
androidx.activity:activity:1.8.0-alpha02
、androidx.activity:activity-compose:1.8.0-alpha02
和 androidx.activity:activity-ktx:1.8.0-alpha02
已发布。从内部分支开发。
依赖项更新
- 来自 Activity
1.7.0-rc01
:Activity 现在依赖于Lifecycle 2.6.0
。
版本 1.8.0-alpha01
2023 年 2 月 8 日
androidx.activity:activity:1.8.0-alpha01
、androidx.activity:activity-compose:1.8.0-alpha01
和 androidx.activity:activity-ktx:1.8.0-alpha01
已发布。此版本从内部分支构建。
新功能
OnBackPressedCallback
类现在包含新的预测返回进度回调,用于处理返回手势的开始、手势全程的进度以及返回手势的取消,此外还有之前用于提交返回手势时的handleOnBackPressed()
回调。
版本 1.7
版本 1.7.2
2023 年 5 月 24 日
androidx.activity:activity:1.7.2
、androidx.activity:activity-compose:1.7.2
和 androidx.activity:activity-ktx:1.7.2
已发布。版本 1.7.2 包含这些提交。
Bug 修复
- 修复了在调用
report
之前从屏幕导航走时ReportDrawn
崩溃的问题。(Ic46f1,b/260506820)
版本 1.7.1
2023 年 4 月 19 日
androidx.activity:activity:1.7.1
、androidx.activity:activity-compose:1.7.1
和 androidx.activity:activity-ktx:1.7.1
已发布。版本 1.7.1 包含这些提交。
Bug 修复
- 当将
ComponentActivity
与ActivityScenario
一起使用时,ReportFullyDrawExecuter
不再泄漏。(Id2ff2,b/277434271)
版本 1.7.0
2023 年 3 月 22 日
androidx.activity:activity:1.7.0
、androidx.activity:activity-compose:1.7.0
和 androidx.activity:activity-ktx:1.7.0
已发布。版本 1.7.0 包含这些提交。
自 1.6.0 以来的重要变更
PickVisualMedia
和PickMultipleVisualMedia
中的 Photo Picker activity contract 已更新,包含一个额外的回退机制,用于在MediaStore.ACTION_PICK_IMAGES
不可用时,允许 OEM 和系统应用(例如 Google Play 服务)通过实现回退操作,在更广泛的 Android 设备和 API 级别上提供一致的 Photo Picker 体验。如果此回退机制可用,Photo Picker 将会使用它,然后再回退到使用Intent.ACTION_OPEN_DOCUMENT
,后者仍支持所有 API 19 及更高版本的设备。ComponentDialog
现在实现SavedStateRegistryOwner
并可以访问其自己的SavedStateRegistry
,并为其ViewTree
设置SavedStateRegistryOwner
。现在可以在ComponentDialog
中使用 Jetpack Compose,因为它满足通过ViewTree
API 附加到 Window 的LifecycleOwner
和SavedStateRegistryOwner
要求。IntentSenderRequest.Builder.setFlags()
现在允许您设置Intent
中的多个标志,而不仅仅是一个标志。
Kotlin 转换
许多 Activity 类已转换为 Kotlin。所有转换后的类仍与以前的版本保持二进制兼容性。以下类对于用 Kotlin 编写的类存在源不兼容的更改:ActivityResultRegistryOwner
、OnBackPressedDispatcherOwner
。
下表提供了新版 Activity 的源转换。
Activity 1.5 | Activity 1.6 |
---|---|
override fun getActivityResultRegistry() = activityResultRegistry |
override val activityResultRegistry = activityResultRegistry |
override fun getOnBackPressedDispatcher() = onBackPressedDispatcher |
override val onBackPressedDispatcher = onBackPressedDispatcher |
这些类也已转换为 Kotlin,但仍保持源兼容性:ContextAware
、ContextAwareHelper
、OnContextAvailableListener
、IntentSenderRequest
和 OnBackPressedDispatcher
FullyDrawnReporter API
ComponentActivity
现在提供了一个 FullyDrawnReporter
实例,允许多个组件报告何时准备好进行交互。ComponentActivity
将等待所有组件完成,然后代表您调用 reportFullyDrawn()
。这些 API 会为您处理时间要求,无需在 onDraw
调用中调用它们。
鼓励使用这些 API 来实现:
- 在启动完成时向 Android Runtime 发送信号,以确保多帧启动序列中运行的所有代码都包含在后台编译中并获得优先级。
- 向 Macrobenchmark 和 Play Vitals 发送信号,说明您的应用程序何时应被视为完全绘制以用于启动指标,以便您可以跟踪性能。
添加了三个 Activity Compose API,以便更方便地从单个可组合项中使用 FullyDrawnReporter
ReportDrawn
指示您的可组合项立即准备好进行交互。ReportDrawnWhen
接受一个谓词(例如,list.count > 0
)来指示您的可组合项何时准备好进行交互。ReportDrawnAfter
接受一个挂起方法,当它完成时,表示您已准备好进行交互。
依赖项更新
- Activity 现在依赖于 Lifecycle
2.6.1
。(8fc31d) - Activity 现在依赖于 ProfileInstaller
1.3.0
。(83d3b1)
版本 1.7.0-rc01
2023 年 3 月 8 日
androidx.activity:activity:1.7.0-rc01
、androidx.activity:activity-compose:1.7.0-rc01
和 androidx.activity:activity-ktx:1.7.0-rc01
已发布。版本 1.7.0-rc01 包含这些提交。
依赖项更新
- Activity 现在依赖于
Lifecycle 2.6.0
。
版本 1.7.0-beta02
2023 年 2 月 22 日
androidx.activity:activity:1.7.0-beta02
、androidx.activity:activity-compose:1.7.0-beta02
和 androidx.activity:activity-ktx:1.7.0-beta02
已发布。版本 1.7.0-beta02 包含这些提交。
API 变更
PickVisualMedia
和PickMultipleVisualMedia
contracts 在MediaStore.ACTION_PICK_IMAGES
不可用时作为回退机制所使用的 action 和 extra 现在是公共常量,为希望提供一致照片选择器体验的 OEM 和系统应用提供了 API 稳定性。此回退机制的实现仍然仅限于系统应用。(Icd320)
版本 1.7.0-beta01
2023 年 2 月 8 日
androidx.activity:activity:1.7.0-beta01
、androidx.activity:activity-compose:1.7.0-beta01
和 androidx.activity:activity-ktx:1.7.0-beta01
已发布。版本 1.7.0-beta01 包含这些提交。
新功能
IntentSenderRequest.Builder.setFlags()
现在允许您设置Intent
中的多个标志,而不仅仅是一个标志。(Iac04c)
Bug 修复
PickVisualMedia
在框架照片选择器不可用时的回退现在正确地将处理限制为设备系统映像中安装的应用程序。(If8ae6)
Kotlin 转换
ActivityResultRegistryOwner
现在用 Kotlin 编写。对于用 Kotlin 编写的类来说,这是一个源不兼容的更改——您现在必须覆盖activityResultRegistry
属性,而不是实现以前的getActivityResultRegistry()
函数。(I0b00e)OnBackPressedDispatcherOwner
现在用 Kotlin 编写。对于用 Kotlin 编写的类来说,这是一个源不兼容的更改——您现在必须覆盖onBackPressedDispatcher
属性,而不是实现以前的getOnBackPressedDispatcher
函数。(Ia277d)ContextAware
、ContextAwareHelper
、OnContextAvailableListener
、IntentSenderRequest
和OnBackPressedDispatcher
现在用 Kotlin 编写。(I1a73e、Iada92、aosp/2410754、I18ac7、b/257291701)
版本 1.7.0-alpha04
2023 年 1 月 25 日
androidx.activity:activity:1.7.0-alpha04
、androidx.activity:activity-compose:1.7.0-alpha04
和 androidx.activity:activity-ktx:1.7.0-alpha04
已发布。版本 1.7.0-alpha04 包含这些提交。
新功能
PickVisualMedia
和PickMultipleVisualMedia
Activity Result contracts 现在将在 Android 系统提供的照片选择器(例如,MediaStore.ACTION_PICK_IMAGES
)不可用时,使用 Google Play 服务提供的照片选择器。仅检测 Android 系统提供的照片选择器的isPhotoPickerAvailable()
API 已弃用。建议使用新的isPhotoPickerAvailable(Context)
API,它将返回任一照片选择器是否可用。(I55be6)
版本 1.7.0-alpha03
2023 年 1 月 11 日
androidx.activity:activity:1.7.0-alpha03
、androidx.activity:activity-compose:1.7.0-alpha03
和 androidx.activity:activity-ktx:1.7.0-alpha03
已发布。版本 1.7.0-alpha03 包含这些提交。
新功能
ComponentDialog
现在实现SavedStateRegistryOwner
并可以访问其自己的SavedStateRegistry
,并为其 ViewTree 设置SavedStateRegistryOwner
。现在可以在ComponentDialog
中使用 Jetpack Compose,因为它满足通过 ViewTree API 附加到 Window 的LifecycleOwner
和SavedStateRegistryOwner
要求。(Idca17,I73468 b/261162296)
API 变更
- 添加了一个
ReportDrawn
可组合项,它立即将活动标记为准备好调用reportFullyDrawn
。(Ic5b14,b/259687964)
Kotlin 转换
ActvitiyResultCallback
和OnBackPressedCallback
类都已转换为 Kotlin,同时保持源和二进制兼容性。(Ifc5e5,Ide1b0,b/257291701)
版本 1.7.0-alpha02
2022 年 10 月 24 日
androidx.activity:activity:1.7.0-alpha02
、androidx.activity:activity-compose:1.7.0-alpha02
和 androidx.activity:activity-ktx:1.7.0-alpha02
已发布。版本 1.7.0-alpha02 包含这些提交。
Bug 修复
- 来自 Activity
1.6.1
:修复了PickMultipleVisualMedia
Activity Result contract 在 Android R 设备上使用maxItems
的默认值时无法启动的问题。(Ie2776,b/249182130)
版本 1.7.0-alpha01
2022 年 10 月 5 日
androidx.activity:activity:1.7.0-alpha01
、androidx.activity:activity-compose:1.7.0-alpha01
和 androidx.activity:activity-ktx:1.7.0-alpha01
已发布。版本 1.7.0-alpha01 包含这些提交。
FullyDrawnReporter API
ComponentActivity
现在提供了一个 FullyDrawnReporter
实例,允许多个组件报告何时准备好进行交互。ComponentActivity
将等待所有组件完成,然后代表您调用 reportFullyDrawn()
。这些 API 会为您处理时间要求,无需在 onDraw
调用中调用它们。
鼓励使用这些 API 来实现:
- 在启动完成时向 Android Runtime 发送信号,以确保多帧启动序列中运行的所有代码都包含在后台编译中并获得优先级。
- 向 Macrobenchmark 和 Play Vitals 发送信号,说明您的应用程序何时应被视为完全绘制以用于启动指标,以便您可以跟踪性能。
添加了两个 Activity Compose API,以便更方便地从单个可组合项中使用 FullyDrawnReporter
。
ReportDrawnWhen
接受一个谓词(例如,list.count > 0
)来指示您的可组合项何时准备好进行交互。ReportDrawnAfter
接受一个挂起方法,当它完成时,表示您已准备好进行交互。
版本 1.6.1
版本 1.6.1
2022 年 10 月 24 日
androidx.activity:activity:1.6.1
、androidx.activity:activity-compose:1.6.1
和 androidx.activity:activity-ktx:1.6.1
已发布。版本 1.6.1 包含这些提交。
Bug 修复
- 修复了
PickMultipleVisualMedia
Activity Result contract 在 Android R 设备上使用maxItems
的默认值时无法启动的问题。(Ie2776,b/249182130)
版本 1.6.0
版本 1.6.0
2022 年 9 月 21 日
androidx.activity:activity:1.6.0
、androidx.activity:activity-compose:1.6.0
和 androidx.activity:activity-ktx:1.6.0
已发布。版本 1.6.0 包含这些提交。
自 1.5.0 以来的重要变更
- 添加了
ActivityResultContracts.PickVisualMedia
和ActivityResultContracts.PickMultipleVisualMedia
,用于提供向后兼容的 contract,在照片选择器可用时使用MediaStore.ACTION_PICK_IMAGES
,在不可用时使用Intent.ACTION_OPEN_DOCUMENT
。 - 将 Android 13 中的
OnBackInvokedCallback
集成到ComponentActivity
和ComponentDialog
提供的OnBackPressedDispatchers
中。这确保了所有基于OnBackPressedDispatcher
构建的 API 在启用预测返回手势时都能正常工作。
版本 1.6.0-rc02
2022 年 9 月 7 日
androidx.activity:activity:1.6.0-rc02
、androidx.activity:activity-compose:1.6.0-rc02
和 androidx.activity:activity-ktx:1.6.0-rc02
已发布。版本 1.6.0-rc02 包含这些提交。
Bug 修复
OnBackPressedDispatcher
现在使用PRIORITY_DEFAULT
而不是PRIORITY_OVERLAY
注册OnBackInvokedCallback
。(I3901f)- 扩展
ComponentActivity
的类现在将始终分派其两个onMultiWindowModeChanged()
回调。(Ic4d85) - 当
launch
调用抛出任何Exception
且回调未注册LifecycleOwner
时,ActivityResultRegistry
将不再向ActivityResultCallback
返回结果。(Ia7ff7,b/238350794) ComponentActivity
现在将正确分派菜单调用,而无需在您的 activity 中调用 super 函数。(Ie33c5,b/238057118)
依赖项更新
- Activity 库现在依赖于 Lifecycle
2.5.1
。(If6697)
版本 1.6.0-rc01
2022 年 8 月 24 日
androidx.activity:activity:1.6.0-rc01
、androidx.activity:activity-compose:1.6.0-rc01
和 androidx.activity:activity-ktx:1.6.0-rc01
已发布。版本 1.6.0-rc01 包含这些提交。
Bug 修复
- 在使用低于 33 的 SDK 版本时,初始化
OnBackPressedDispatcher
将不再导致ClassVerificationError
。(Ic32e1) - 覆盖
ComponentActivity
的onPictureInPictureModeChanged()
回调的类现在将始终分派其回调。(Ib7fdb)
版本 1.6.0-beta01
2022 年 8 月 10 日
androidx.activity:activity:1.6.0-beta01
、androidx.activity:activity-compose:1.6.0-beta01
和 androidx.activity:activity-ktx:1.6.0-beta01
已发布。版本 1.6.0-beta01 包含这些提交。
API 变更
- 已将
ComponentActivity
中已弃用的startActivityForResult
和startIntentSenderForResult
方法标记为@NonNull
,因为传递null
总是会导致崩溃。(Id2a25,b/231476082)
Bug 修复
- 来自 Activity
1.5.1
:当launch
调用抛出任何Exception
且回调未注册LifecycleOwner
时,ActivityResultRegistry
将不再向ActivityResultCallback
返回结果。(Ia7ff7,b/238350794) - 来自 Activity
1.5.1
:ComponentActivity
现在将正确分派菜单调用到onPrepareOptionMenu()
、onCreateOptionsMenu()
和onOptionsItemSelected()
覆盖,而无需调用 super 函数。(Ie33c5,b/238057118)
依赖项更新
- 来自 Activity
1.5.1
:Activity 库现在依赖于 Lifecycle 版本2.5.1
。(If6697)
版本 1.6.0-alpha05
2022 年 6 月 15 日
androidx.activity:activity:1.6.0-alpha05
、androidx.activity:activity-compose:1.6.0-alpha05
和 androidx.activity:activity-ktx:1.6.0-alpha05
已发布。版本 1.6.0-alpha05 是在私人预发布分支中开发的,没有公共提交。
API 变更
minCompileSdk
现在是 33,以与 Tiramisu Beta 3 SDK 对齐。
Bug 修复
- 修复了旧设备上执行
PickVisualMedia
ActivityResultContract
的 SDK 扩展检查时发生的崩溃,使其现在应该在运行 Android 10 及更低版本的设备上与ACTION_OPEN_DOCUMENT
配合使用。
版本 1.6.0-alpha04
2022 年 5 月 18 日
androidx.activity:activity:1.6.0-alpha04
和 androidx.activity:activity-ktx:1.6.0-alpha04
已发布。
Bug 修复
- 修复了
PickVisualMediaRequest
中的一个错误,即尝试通过 Builder 或顶级 Kotlin 函数创建请求会导致堆栈溢出。 - 将 Android 13 Dev Beta 2 中的
OnBackInvokedCallback
集成到ComponentDialog
提供的OnBackPressedDispatcher
中。这确保了所有基于OnBackPressedDispatcher
构建的 API 在启用预测返回手势时都能正常工作。
版本 1.6.0-alpha03
2022 年 4 月 27 日
androidx.activity:activity:1.6.0-alpha03
、androidx.activity:activity-compose:1.6.0-alpha03
和 androidx.activity:activity-ktx:1.6.0-alpha03
已发布。
- 注意:此版本仅针对 Android 13 Developer Beta 1 SDK 进行编译。
新功能
- 添加了
ActivityResultContracts.PickVisualMedia
和ActivityResultContracts.PickMultipleVisualMedia
,用于提供向后兼容的 contract,在照片选择器可用时使用MediaStore.ACTION_PICK_IMAGES
,在不可用时使用Intent.ACTION_OPEN_DOCUMENT
。 - 将 Android 13 Dev Beta 1 中的
OnBackInvokedCallback
集成到ComponentActivity
提供的OnBackPressedDispatcher
中。这确保了所有基于OnBackPressedDispatcher
构建的 API 在启用预测返回手势时都能正常工作。
版本 1.6.0-alpha01
2022 年 3 月 23 日
androidx.activity:activity:1.6.0-alpha01
、androidx.activity:activity-compose:1.6.0-alpha01
和 androidx.activity:activity-ktx:1.6.0-alpha01
已发布。
- 注意:此版本仅针对 Android 13 Developer Preview 2 SDK 进行编译。
新功能
- 将 Android 13 Dev Preview 2 中的更改集成到
ComponentActivity
中。
版本 1.5.1
版本 1.5.1
2022 年 7 月 27 日
androidx.activity:activity:1.5.1
、androidx.activity:activity-compose:1.5.1
和 androidx.activity:activity-ktx:1.5.1
已发布。版本 1.5.1 包含这些提交。
Bug 修复
当
launch()
调用抛出任何Exception
且回调未注册LifecycleOwner
时,ActivityResultRegistry
将不再向ActivityResultCallback
返回结果。(Ia7ff7,b/238350794)ComponentActivity
现在将正确分派菜单调用到onPrepareOptionMenu()
、onCreateOptionsMenu()
和onOptionsItemSelected()
覆盖,而无需调用 super 函数。(Ie33c5,b/238057118)
依赖项更新
- Activity 库现在依赖于 Lifecycle
2.5.1
。(If6697)
版本 1.5.0
版本 1.5.0
2022 年 6 月 29 日
androidx.activity:activity:1.5.0
、androidx.activity:activity-compose:1.5.0
和 androidx.activity:activity-ktx:1.5.0
已发布。版本 1.5.0 包含这些提交。
自 1.4.0 以来的重要变更
- ComponentDialog -
ComponentDialog
是Dialog
的子类,它包含一个OnBackPressedDispatcher
,当系统返回按钮被按下且对话框可见时,将调用该调度器。重要的是,此子类还会设置ViewTreeOnBackPressedDispatcherOwner
,允许视图以通用方式检索正确的调度器,无论它存在于ComponentActivity
还是ComponentDialog
中。 - 回调接口 -
ComponentActivity
现在实现了一组模块化回调接口,可以替代Activity
回调使用。这些接口包括:OnNewIntentProvider
、OnConfigurationChangedProvider
、OnTrimMemoryProvider
、OnPictureInPictureModeChangedProvider
、OnMultiWindowModeChangedProvider
- CreationExtras 集成 -
ComponentActivity
现在能够通过 Lifecycle2.5.0
的CreationExtras
提供一个无状态的ViewModelProvider.Factory
。
其他变更
ActivityResultContracts.CreateDocument
的无参数构造函数已弃用,并替换为接受具体 MIME 类型(例如“image/png”)的新构造函数,这是Intent.ACTION_CREATE_DOCUMENT
所要求的。
版本 1.5.0-rc01
2022 年 5 月 11 日
androidx.activity:activity:1.5.0-rc01
、androidx.activity:activity-compose:1.5.0-rc01
和 androidx.activity:activity-ktx:1.5.0-rc01
已发布,与 1.5.0-beta01 无任何更改。版本 1.5.0-rc01 包含这些提交。
版本 1.5.0-beta01
2022 年 4 月 20 日
androidx.activity:activity:1.5.0-beta01
、androidx.activity:activity-compose:1.5.0-beta01
和 androidx.activity:activity-ktx:1.5.0-beta01
已发布。版本 1.5.0-beta01 包含这些提交。
依赖项更新
- Activity 现在依赖于 Lifecycle
2.4.0-beta01
。
版本 1.5.0-alpha05
2022 年 4 月 6 日
androidx.activity:activity:1.5.0-alpha05
、androidx.activity:activity-compose:1.5.0-alpha05
和 androidx.activity:activity-ktx:1.5.0-alpha05
已发布。版本 1.5.0-alpha05 包含这些提交。
Bug 修复
ComponentActivity
的onPanelClosed()
现在也调用 superonPanelClosed()
,修复了onContextMenuClosed
方法不会被调用的问题。(Ib6f77)
版本 1.5.0-alpha04
2022 年 3 月 23 日
androidx.activity:activity:1.5.0-alpha04
、androidx.activity:activity-compose:1.5.0-alpha04
和 androidx.activity:activity-ktx:1.5.0-alpha04
已发布。版本 1.5.0-alpha04 包含这些提交。
Bug 修复
SavedStateViewFactory
现在支持使用CreationExtras
,即使它已使用SavedStateRegistryOwner
初始化。如果提供了 extras,则忽略初始化的参数。(I6c43b,b/224844583)
版本 1.5.0-alpha03
2022 年 2 月 23 日
androidx.activity:activity:1.5.0-alpha03
、androidx.activity:activity-compose:1.5.0-alpha03
和 androidx.activity:activity-ktx:1.5.0-alpha03
已发布。版本 1.5.0-alpha03 包含这些提交。
API 变更
- 您现在可以将
CreationExtras
传递给 activity 的by viewModels()
函数。(I6a3e6,b/217600303)
版本 1.5.0-alpha02
2022 年 2 月 9 日
androidx.activity:activity:1.5.0-alpha02
、androidx.activity:activity-compose:1.5.0-alpha02
和 androidx.activity:activity-ktx:1.5.0-alpha02
已发布。版本 1.5.0-alpha02 包含这些提交。
新功能
ComponentActivity
现在实现OnPictureInPictureModeChangedProvider
接口,以允许任何组件接收画中画模式更改事件。(I9f567)ComponentActivity
现在实现OnMultiWindowModeChangedProvider
接口,以允许任何组件接收多窗口模式更改事件。(I62d91)
版本 1.5.0-alpha01
2022 年 1 月 26 日
androidx.activity:activity:1.5.0-alpha01
、androidx.activity:activity-compose:1.5.0-alpha01
和 androidx.activity:activity-ktx:1.5.0-alpha01
已发布。版本 1.5.0-alpha01 包含这些提交。
新功能
ComponentActivity
现在与 ViewModel CreationExtras 集成,该功能作为 Lifecycle2.5.0-alpha01
的一部分引入。(Ie7e00,b/207012584)- 添加了
ComponentDialog
,它是Dialog
的子类,包含一个OnBackPressedDispatcher
,当系统返回按钮被按下且对话框可见时,将调用该调度器。重要的是,此子类还会设置ViewTreeOnBackPressedDispatcherOwner
,允许视图以通用方式检索正确的调度器,无论它存在于ComponentActivity
还是ComponentDialog
中。(I8a1bc) ComponentActivity
现在实现新的OnNewIntentProvider
接口,以允许任何组件接收这些事件。(If1f8b)ComponentActivity
现在实现新的OnConfigurationChangedProvider
接口,以允许任何组件接收这些事件。(If623b)ComponentActivity
现在实现新的OnTrimMemoryProvider
接口,以允许任何组件接收这些事件。(Ia9295)
API 变更
ActivityResultContracts.CreateDocument
的无参数构造函数已弃用,并替换为接受具体 MIME 类型(例如,"image/png"
)的新构造函数,这是Intent.ACTION_CREATE_DOCUMENT
所要求的。(I2bec6)- 现在可以通过
ViewTreeOnBackPressedDispatcherOwner
检索与 View 关联的OnBackPressedDispatcherOwner
,而不是依赖于强制转换Context
。(I74685)
Bug 修复
- 修复了首次从
registerForActivityResult()
回调或作为ComponentActivity
init
的一部分添加的LifecycleObserver
回调访问ViewModel
时发生的崩溃。(Ife83f)
版本 1.4.0
版本 1.4.0
2021 年 10 月 27 日
androidx.activity:activity:1.4.0
、androidx.activity:activity-compose:1.4.0
和 androidx.activity:activity-ktx:1.4.0
已发布。版本 1.4.0 包含这些提交。
自 1.3.0 以来的重要变更
- AndroidX
ComponentActivity
现在实现MenuHost
接口。这允许任何组件通过向活动添加MenuProvider
实例来向ActionBar
添加菜单项。每个MenuProvider
可以选择性地添加Lifecycle
,该 Lifecycle 将根据 Lifecycle 状态自动控制这些菜单项的可见性,并在 Lifecycle 销毁时处理MenuProvider
的移除。 ActivityResultContract
类已用 Kotlin 重写,以确保编写 Kotlin 自定义 contract 的开发者可以为其输入和输出类定义正确的可空性。ActivityResultContracts
类及其 contract 已用 Kotlin 重写,以确保正确的可空性。
版本 1.4.0-rc01
2021 年 10 月 13 日
androidx.activity:activity:1.4.0-rc01
、androidx.activity:activity-compose:1.4.0-rc01
和 androidx.activity:activity-ktx:1.4.0-rc01
已发布。版本 1.4.0-rc01 包含这些提交。
Bug 修复
- 当
launch
调用抛出任何Exception
时,ActivityResultRegistry
将不再向ActivityResultCallback
返回结果。(If4f91,b/200845664)
版本 1.4.0-beta01
2021 年 9 月 29 日
androidx.activity:activity:1.4.0-beta01
、androidx.activity:activity-compose:1.4.0-beta01
和 androidx.activity:activity-ktx:1.4.0-beta01
已发布。版本 1.4.0-beta01 包含这些提交。
API 变更
- 修复了
ActivityResultContracts.OpenMultipleDocuments
和ActivityResultContracts.GetMultipleContents
的类型问题,该问题导致在使用 Java 编程语言代码时,它们的输出类型为List<? extends Uri>
。(If71de) ActivityResultContracts.StartActivityForResult
、ActivityResultContracts.StartIntentSenderForResult
和ActivityResultContracts.RequestMultiplePermissions
类中的公共常量现在可以通过其公共Companion
对象在 Kotlin 中访问。(aosp/1832555)
文档更新
- 由 Activity Result API 处理的 API(即
startActivityForResult
、startIntentSenderForResult
、onActivityResult
、requestPermissions
和onRequestPermissionsResult
)的弃用消息都已扩展,包含更多详细信息。(cce80f)
版本 1.4.0-alpha02
2021 年 9 月 15 日
androidx.activity:activity:1.4.0-alpha02
、androidx.activity:activity-compose:1.4.0-alpha02
和 androidx.activity:activity-ktx:1.4.0-alpha02
已发布。版本 1.4.0-alpha02 包含这些提交。
新功能
activity-compose
工件现在包含一个LaunchDuringComposition
lint 错误,它阻止您在组合过程中调用ActivityResultLauncher
的launch
方法,因为组合应该是无副作用的。请使用处理副作用的 API。(7c2bbe,b/191347220)
API 变更
ActivityResultContract
类已用 Kotlin 重写,以确保编写 Kotlin 自定义 contract 的开发者可以为其输入和输出类定义正确的可空性。(I8a8f5)ActivityResultContracts
类及其 contract 已用 Kotlin 重写,以确保正确的可空性。(I69802)
版本 1.4.0-alpha01
2021 年 9 月 1 日
androidx.activity:activity:1.4.0-alpha01
、androidx.activity:activity-compose:1.4.0-alpha01
和 androidx.activity:activity-ktx:1.4.0-alpha01
已发布。版本 1.4.0-alpha01 包含这些提交。
新功能
- AndroidX
ComponentActivity
现在实现MenuHost
接口。这允许任何组件通过向 activity 添加MenuProvider
实例来向ActionBar
添加菜单项。每个MenuProvider
可以选择性地添加Lifecycle
,该 Lifecycle 将根据 Lifecycle 状态自动控制这些菜单项的可见性,并在 Lifecycle 销毁时处理MenuProvider
的移除。(I3b608)
/**
* Using the addMenuProvider() API directly in your Activity
**/
class ExampleActivity : ComponentActivity(R.layout.activity_example) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Add menu items without overriding methods in the Activity
addMenuProvider(object : MenuProvider {
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
// Add menu items here
menuInflater.inflate(R.menu.example_menu, menu)
}
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
// Handle the menu selection
return true
}
})
}
}
/**
* Using the addMenuProvider() API in a Fragment
**/
class ExampleFragment : Fragment(R.layout.fragment_example) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
// The usage of an interface lets you inject your own implementation
val menuHost: MenuHost = requireActivity()
// Add menu items without using the Fragment Menu APIs
// Note how we can tie the MenuProvider to the viewLifecycleOwner
// and an optional Lifecycle.State (here, RESUMED) to indicate when
// the menu should be visible
menuHost.addMenuProvider(object : MenuProvider {
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
// Add menu items here
menuInflater.inflate(R.menu.example_menu, menu)
}
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
// Handle the menu selection
return true
}
}, viewLifecycleOwner, Lifecycle.State.RESUMED)
}
行为变更
ActivityResultRegistry
现在将在尝试对尚未注册或已注销的ActivityResultLauncher
调用launch()
时抛出IllegalStateException
。(Ida75d,b/192567522)
外部贡献
版本 1.3.1
版本 1.3.1
2021 年 8 月 4 日
androidx.activity:activity:1.3.1
、androidx.activity:activity-compose:1.3.1
和 androidx.activity:activity-ktx:1.3.1
已发布。版本 1.3.1 包含这些提交。
依赖项更新
- Activity 现在依赖于 Kotlin
1.5.21
。 - Activity Compose 现在依赖于 Compose
1.0.1
。
版本 1.3.0
版本 1.3.0
2021 年 7 月 28 日
androidx.activity:activity:1.3.0
、androidx.activity:activity-compose:1.3.0
和 androidx.activity:activity-ktx:1.3.0
已发布。版本 1.3.0 包含这些提交。
自 1.2.0 以来的重要变化
- Activity Compose 工件 -
activity-compose
工件提供了setContent
扩展方法,用于在 Activity 中托管您的 Jetpack Compose UI,以及 Compose 特定的封装器,用于与ComponentActivity
API 交互,以处理系统返回按钮和 Activity Result API。有关更多详细信息,请参阅文档。 - CaptureVideo 协定 -
CaptureVideo
ActivityResultContract
取代了目前已弃用的TakeVideo
协定,并返回一个布尔值,表示在许多相机应用中均可用的成功结果。 - 画中画提示视图跟踪 -
activity-ktx
用户现在可以在Activity
上使用trackPipAnimationHintView
扩展方法,以便在视图相对于窗口改变位置时,自动使用视图的新位置重建PictureInPictureParams
。
版本 1.3.0-rc02
2021年7月14日
androidx.activity:activity:1.3.0-rc02
、androidx.activity:activity-compose:1.3.0-rc02
和 androidx.activity:activity-ktx:1.3.0-rc02
已发布。版本 1.3.0-rc02 包含这些提交。
Bug 修复
ActivityResultRegistry
回调现在已正确保存和恢复,因此回调不会在 savedState 中重复。(I97816,b/191893160)
版本 1.3.0-rc01
2021年7月1日
androidx.activity:activity:1.3.0-rc01
、androidx.activity:activity-compose:1.3.0-rc01
和 androidx.activity:activity-ktx:1.3.0-rc01
已发布,与 1.3.0-beta02
相比没有变化。版本 1.3.0-rc01 包含这些提交。
版本 1.3.0-beta02
2021年6月16日
androidx.activity:activity:1.3.0-beta02
、androidx.activity:activity-compose:1.3.0-beta02
和 androidx.activity:activity-ktx:1.3.0-beta02
已发布。版本 1.3.0-beta02 包含这些提交。
已将 activity-compose
更新为依赖 Compose 1.0.0-beta09
。androidx.compose.ui:ui-test-junit4
现在对 activity-compose
有编译时依赖。
版本 1.3.0-beta01
2021年6月2日
androidx.activity:activity:1.3.0-beta01
、androidx.activity:activity-compose:1.3.0-beta01
和 androidx.activity:activity-ktx:1.3.0-beta01
已发布。版本 1.3.0-beta01 包含这些提交。
API 变更
- 之前已弃用的
@Composable registerForActivityResult()
方法已被移除。请使用rememberLauncherForActivityResult()
。(Ic39d3)
版本 1.3.0-alpha08
2021年5月18日
androidx.activity:activity:1.3.0-alpha08
、androidx.activity:activity-compose:1.3.0-alpha08
和 androidx.activity:activity-ktx:1.3.0-alpha08
已发布。版本 1.3.0-alpha08 包含这些提交。
新功能
- 新的
CaptureVideo
ActivityResultContract
会向您的ActivityResultCallback
返回一个布尔值,指示您的视频是否已成功保存到给定 URI。这取代了目前已弃用的TakeVideo
协定,因为相机应用很少支持返回缩略图位图,导致结果无用。(Ie21f2,b/185938070) - 添加了新的 API
Activity#setPipAnimationHintView
,用于在视图移动时更新 PipParams 的源矩形提示。(I9063d)
API 变更
rememberLauncherForActivityResult
函数现在返回一个弃用unregister()
函数的启动器 - 启动器的注册和注销由rememberLauncherForActivityResult
自动处理。(I2443e)
Compose 兼容性
androidx.activity:activity-compose:1.3.0-alpha08
仅兼容 Compose 版本1.0.0-beta07
及更高版本。
版本 1.3.0-alpha07
2021年4月21日
androidx.activity:activity:1.3.0-alpha07
、androidx.activity:activity-compose:1.3.0-alpha07
和 androidx.activity:activity-ktx:1.3.0-alpha07
已发布。版本 1.3.0-alpha07 包含这些提交。
Bug 修复
rememberLauncherForActivityResult
现在返回对同一ActivityResultLauncher
实例的稳定引用,即使协定因重组而更改。(Id2d6d)- 使用高于
1.3.0
的不稳定版 Fragments 将不再抛出指示您使用1.3.0
的误报 lint 错误。(aosp/1670206,b/184847092)
版本 1.3.0-alpha06
2021年4月7日
androidx.activity:activity:1.3.0-alpha06
、androidx.activity:activity-compose:1.3.0-alpha06
和 androidx.activity:activity-ktx:1.3.0-alpha06
已发布。版本 1.3.0-alpha06 包含这些提交。
API 变更
registerForActivityResult()
API 已重命名为rememberLauncherForActivityResult()
,以更好地表明返回的ActivityResultLauncher
是为您记住的托管对象。尝试调用unregister
返回的ActivityResultLauncher
现在将抛出错误。(I2bb6d)LocalOnBackPressedDispatcherOwner.current
和LocalActivityResultRegistryOwner.current
现在返回一个可空值,以便更好地确定它在当前组合中是否可用。需要这些 API 的 API,例如BackHandler
和rememberLauncherForActivityResult()
,如果未找到底层所有者,现在将分别抛出更具描述性的错误。NavHost
即使在未找到OnBackPressedDispatcherOwner
的情况下(例如预览NavHost
时)也能正常工作。(I7d8b4)
Bug 修复
- 如果 Activity 为
STOPPED
,然后再次STARTED
,并且使用 LifecycleOwner 添加了其他回调,则BackHandler
将正确拦截返回按钮按下。(I71de6,b/182284739) - 使用带有
Unit
输入的自定义ActivityResultContract
的launch()
方法扩展将不再导致NullPointerException
。(I76282,b/183837954)
版本 1.3.0-alpha05
2021年3月24日
androidx.activity:activity:1.3.0-alpha05
、androidx.activity:activity-compose:1.3.0-alpha05
和 androidx.activity:activity-ktx:1.3.0-alpha05
已发布。版本 1.3.0-alpha05 包含这些提交。
Bug 修复
- 来自 Activity 1.2.2:修复了
InvalidFragmentVersionForActivityResult
lint 检查中的一个问题,该问题在使用 Fragment 1.3.1 或更高版本时导致误报。(I54da1,b/182388985) - 来自 Activity 1.2.2:
ComponentActivity
现在避免了在从ActivityResultContract
启动Intent
时发生ClassNotFoundException
,该ActivityResultContract
之前作为 extra 保存在另一个Intent
中。(Ieff05,b/182906230)
依赖项更新
- 来自 Activity 1.2.2:Activity 现在依赖于 Lifecycle
2.3.1
。
版本 1.3.0-alpha04
2021年3月10日
androidx.activity:activity:1.3.0-alpha04
、androidx.activity:activity-compose:1.3.0-alpha04
和 androidx.activity:activity-ktx:1.3.0-alpha04
已发布。版本 1.3.0-alpha04 包含这些提交。
Bug 修复
- 来自 Activity
1.2.1
:RequestMultiplePermissions
现在总是返回所有请求权限的结果,而不仅仅是以前未授予的权限。(I50bc3,b/180884668) - 来自 Activity
1.2.1
:ActivityResultRegistry
现在确保正在进行的launch()
请求将返回其结果,即使您使用相同的键unregister()
然后再次register()
。(I9ef34,b/181267562) - Activity Compose 不再向运行时类路径添加测试依赖项。(Ifd8b3)
- 修复了
BackHandler
的一个问题,该问题导致在重组后仍使用之前设置的onBack
lambda。(8eb5eb)
版本 1.3.0-alpha03
2021年2月24日
androidx.activity:activity:1.3.0-alpha03
、androidx.activity:activity-compose:1.3.0-alpha03
和 androidx.activity:activity-ktx:1.3.0-alpha03
已发布。版本 1.3.0-alpha03 包含这些提交。
新功能
- 现在有一个 Composable
registerForActivityResult
函数,用于从 composables 中获取 Activity 结果。(Ia7851,b/172690553)
API 变更
LocalOnBackPressedDispatcherOwner
现在有一个provides
函数,可以与CompositionLocalProvider
一起使用,取代了asProvidableCompositionLocal()
API。(I45d24)
版本 1.3.0-alpha02
2021年2月10日
androidx.activity:activity:1.3.0-alpha02
、androidx.activity:activity-compose:1.3.0-alpha02
和 androidx.activity:activity-ktx:1.3.0-alpha02
已发布。版本 1.3.0-alpha02 包含这些提交。
Bug 修复
- 修复了 Activity Compose
1.3.0-alpha01
中的一个问题,该问题在使用 Compose1.0.0-alpha12
时会导致NoSuchMethodError: No static method setContent
异常。所有 Compose 用户都应依赖1.3.0-alpha02
及更高版本。(b/179911234)
API 变更
BackHandler
API 可用于允许 Composable 拦截系统返回按钮。(I58ed5,b/172154006)
版本 1.3.0-alpha01
2021年2月10日
androidx.activity:activity:1.3.0-alpha01
、androidx.activity:activity-compose:1.3.0-alpha01
和 androidx.activity:activity-ktx:1.3.0-alpha01
已发布。版本 1.3.0-alpha01 包含这些提交。
新功能
- 新的
activity-compose
工件提供了针对androidx.activity
特定 API 的 Jetpack Compose 特定助手。ComponentActivity.setContent
已从androidx.compose.ui.platform.setContent
移至androidx.activity.compose.setContent
。(Icf416)
已知问题
- 使用 Activity Compose
1.3.0-alpha01
和依赖它的库(例如androidx.compose.ui:ui-test-junit4:1.0.0-alpha12
)将导致NoSuchMethodError: No static method setContent
异常。(b/179911234)
版本 1.2.4
版本 1.2.4
2021年7月21日
androidx.activity:activity:1.2.4
和 androidx.activity:activity-ktx:1.2.4
已发布。版本 1.2.4 包含这些提交。
Bug 修复
- 来自 Activity
1.3.0-rc02
:ActivityResultRegistry 回调现在已正确保存和恢复,因此回调不会在 savedState 中重复。(I97816,b/191893160)
版本 1.2.3
版本 1.2.3
2021年5月5日
androidx.activity:activity:1.2.3
和 androidx.activity:activity-ktx:1.2.3
已发布。版本 1.2.3 包含这些提交。
Bug 修复
- 使用带有
Unit
输入的自定义ActivityResultContract
的launch()
方法扩展将不再导致NullPointerException
。(I76282,b/183837954) - 修复了一个误报 lint 错误,该错误在使用 Fragment
1.3.0
时指示您使用 Fragment1.3.0
,即使您使用的是更高版本 Fragment 的快照、alpha、beta 或 RC 版本。(f4a57e,b/184847092)
版本 1.2.2
版本 1.2.2
2021年3月24日
androidx.activity:activity:1.2.2
和 androidx.activity:activity-ktx:1.2.2
已发布。版本 1.2.2 包含这些提交。
Bug 修复
- 修复了
InvalidFragmentVersionForActivityResult
lint 检查中的一个问题,该问题在使用 Fragment 1.3.1 或更高版本时导致误报。(I54da1,b/182388985) ComponentActivity
现在避免了在从ActivityResultContract
启动Intent
时发生ClassNotFoundException
,该ActivityResultContract
之前作为 extra 保存在另一个Intent
中。(Ieff05,b/182906230)
依赖项更新
- Activity 现在依赖于 Lifecycle
2.3.1
。
版本 1.2.1
版本 1.2.1
2021年3月10日
androidx.activity:activity:1.2.1
和 androidx.activity:activity-ktx:1.2.1
已发布。版本 1.2.1 包含这些提交。
Bug 修复
RequestMultiplePermissions
现在总是返回所有请求权限的结果,而不仅仅是以前未授予的权限。(I50bc3,b/180884668)ActivityResultRegistry
现在确保正在进行的launch()
请求将返回其结果,即使您使用相同的键unregister()
然后再次register()
。(I9ef34,b/181267562)
版本 1.2.0
版本 1.2.0
2021年2月10日
androidx.activity:activity:1.2.0
和 androidx.activity:activity-ktx:1.2.0
已发布。版本 1.2.0 包含这些提交。
自 1.1.0 以来的主要变化
- Activity Result API:
ComponentActivity
现在提供了一个ActivityResultRegistry
,让您无需在 Activity 或 Fragment 中覆盖方法即可处理startActivityForResult()
+onActivityResult()
以及requestPermissions()
+onRequestPermissionsResult()
流程,通过ActivityResultContract
提高了类型安全性,并提供了用于测试这些流程的钩子。请参阅更新后的获取 Activity 结果。
ContextAware
:ComponentActivity
现在实现了ContextAware
,允许您添加一个或多个OnContextAvailableListener
实例,这些实例将在基础Activity.onCreate()
之前收到回调。- 一个挂起 Kotlin 扩展
withContextAvailable()
允许您在 Context 可用时运行非挂起块并返回结果。 - 此 API 由 Fragment 1.3.0 中的
FragmentActivity
用于恢复FragmentManager
的状态。添加到FragmentActivity
子类的任何监听器都将在该监听器之后运行。 - 此 API 由 AppCompat 1.3.0-alpha02 或更高版本中的
AppCompatActivity
使用。添加到AppCompatActivity
子类的任何监听器都将在该监听器之后运行。
- 一个挂起 Kotlin 扩展
ViewTree
支持:ComponentActivity
现在支持在 Lifecycle2.3.0
和 SavedState1.1.0
中添加的ViewTreeLifecycleOwner.get(View)
、ViewTreeViewModelStoreOwner.get(View)
和ViewTreeSavedStateRegistryOwner
API,以便它将 Activity 作为直接添加到ComponentActivity
的任何 View 的LifecycleOwner
、ViewModelStoreOwner
和SavedStateRegistryOwner
返回。
- reportFullyDrawn() 回溯 -
Activity
的reportFullyDrawn()
方法已在ComponentActivity
中回溯,可在所有 API 级别上工作,修复了 API 19 上的崩溃问题,并为此方法添加了所有 API 级别的跟踪。
版本 1.2.0-rc01
2020年12月16日
androidx.activity:activity:1.2.0-rc01
和 androidx.activity:activity-ktx:1.2.0-rc01
已发布。版本 1.2.0-rc01 包含这些提交。
Bug 修复
外部贡献
ComponentActivity
现在覆盖了reportFullyDrawn()
,允许在所有 API 级别上调用它,并修复了在 API 19 设备上未获得适当系统权限而调用此方法时发生的崩溃。感谢 Simon Schiller!(b/163239764,#103)
版本 1.2.0-beta02
2020年12月2日
androidx.activity:activity:1.2.0-beta02
和 androidx.activity:activity-ktx:1.2.0-beta02
已发布。版本 1.2.0-beta02 包含这些提交。
Bug 修复
- 修复了 Activity Result API 在使用
Lifecycle
注册时不会等待 Lifecycle 达到STARTED
状态就传递结果的问题。(I109ea)
外部贡献
- 更新了
launch()
的文档,明确指出它可能会抛出ActivityNotFoundException
。感谢 Michał Zieliński!(aosp/1493580)
版本 1.2.0-beta01
2020年10月1日
androidx.activity:activity:1.2.0-beta01
和 androidx.activity:activity-ktx:1.2.0-beta01
已发布。版本 1.2.0-beta01 包含这些提交。
Bug 修复
ActivityResultRegistry
现在随机生成整数,直到找到一个未分配的整数作为请求代码register()
,从而防止因递增请求代码而可能导致的整数溢出。(b/168779518)在
ActivityResultLauncher
上调用unregister()
时,Lifecycle
观察者会正确移除。(b/165608393)
行为变更
- 当尝试使用
LifecycleOwner
调用register()
时,如果其Lifecycle
已达到STARTED
状态,则ActivityResultRegistry
现在会抛出IllegalStateException
。(b/165435866)
文档已更新
ContextAware
文档链接到LifecycleOwner
,以强调Lifecycle
回调是创建和销毁事件的合适位置。(aosp/1414152)
版本 1.2.0-alpha08
2020年8月19日
androidx.activity:activity:1.2.0-alpha08
和 androidx.activity:activity-ktx:1.2.0-alpha08
已发布。版本 1.2.0-alpha08 包含这些提交。
新功能
ComponentActivity
现在实现了ContextAware
,允许您添加一个或多个OnContextAvailableListener
实例,这些实例将在基础Activity.onCreate()
之前收到回调。(b/161390636)- 一个挂起 Kotlin 扩展
withContextAvailable()
允许您在 Context 可用时运行非挂起块并返回结果。(I8290c) - 此 API 由 Fragment 1.3.0-alpha08 中的
FragmentActivity
用于恢复FragmentManager
的状态。添加到FragmentActivity
子类的任何监听器都将在该监听器之后运行。(I513da) - 此 API 由 AppCompat 1.3.0-alpha02 中的
AppCompatActivity
使用。添加到AppCompatActivity
子类的任何监听器都将在该监听器之后运行。(I513da)
- 一个挂起 Kotlin 扩展
Bug 修复
- 修复了
ActivityResultFragmentVersionDetector
Lint 检查的一个问题,该问题导致其在使用 Lint 27.1.0 或更高版本时中断。(b/162155191)
版本 1.2.0-alpha07
2020年7月22日
androidx.activity:activity:1.2.0-alpha07
和 androidx.activity:activity-ktx:1.2.0-alpha07
已发布。版本 1.2.0-alpha07 包含这些提交。
新功能
- 添加了一个新的
InvalidFragmentVersionForActivityResult
lint 检查,该检查验证您在使用 Activity Result API 时是否使用 Fragment1.3.0-alpha07
,从而避免了因使用旧版本 Fragments 导致的“无效请求代码”问题和不 functioning 的权限请求运行时崩溃。(b/152554847)
外部贡献
- 修复了
RequestPermission
Activity Result 协定的结果解析时发生的ArrayIndexOutOfBoundsException
。(I8f9e3,b/161057605)
版本 1.2.0-alpha06
2020年6月10日
androidx.activity:activity:1.2.0-alpha06
和 androidx.activity:activity-ktx:1.2.0-alpha06
已发布。版本 1.2.0-alpha06 包含这些提交。
新功能
- 您现在可以在 Kotlin 中解构
ActivityResult
类,以直接访问requestCode
和intent
。(b/157212935) ActivityResultLauncher
现在允许您获取用于注册启动器的ActivityResultContract
。(b/156875743)
API 变更
- 重大变更:
ActivityResultRegistry
上的invoke()
方法已重命名为onLaunch()
。(b/157496491) - 如果未返回任何结果,
OpenMultipleDocuments
协定现在向注册回调返回空列表而不是null
。(b/157348014)
版本 1.2.0-alpha05
2020年5月20日
androidx.activity:activity:1.2.0-alpha05
和 androidx.activity:activity-ktx:1.2.0-alpha05
已发布。版本 1.2.0-alpha05 包含这些提交。
新功能
- 添加了对 Lifecycle
2.3.0-alpha03
中的ViewTreeViewModelStoreOwner
和 SavedState1.1.0-alpha01
中的ViewTreeSavedStateRegistryOwner
的支持,用于在ComponentActivity
中使用View
时。(aosp/1297993,aosp/1300264)
API 变更
TakePicture
协定现在返回一个boolean
指示成功,而不是缩略图Bitmap
,因为当将图像写入提供的Uri
时,相机应用很少支持这一点。(b/154302879)ActivityResultLauncher
上的invoke()
扩展已被移除,取而代之的是明确使用launch()
以更好地表明这些是异步操作。已向androidx.activity.result
包添加了ActivityResultLauncher<Void>
和ActivityResultLauncher<Unit>
的 Kotlin 扩展,分别消除了传递null
或Unit
的需要,这反映了之前invoke()
扩展的行为。(aosp/1304674,aosp/1304675)IntentSenderRequest.Builder
的setFlagsMask()
和setFlagsValues()
方法已合并为一个setFlags()
方法。(aosp/1302111)
Bug 修复
- 当使用
LifecycleOwner
注册ActivityResultCallback
时,修复了回调在状态达到STARTED
之前触发的问题。(aosp/1309744)
行为变更
ActivityResultRegistry
现在从0xFFFF
开始生成请求代码,而不是从0
开始,从而防止在 Activity 中使用startActivityForResult()
或requestPermissions()
时发生重叠。(aosp/1302324)
版本 1.2.0-alpha04
2020年4月29日
androidx.activity:activity:1.2.0-alpha04
和 androidx.activity:activity-ktx:1.2.0-alpha04
已发布。版本 1.2.0-alpha04 包含这些提交。
新功能
- 在 ActivityResult API 中添加了一个可以调用 startIntentSenderForResult 的协定。(b/153007517)
API 变更
prepareCall()
方法已重命名为registerForActivityResult()
,这在ComponentActivity
和 Fragment1.3.0-alpha04
中均已生效。(aosp/1278717)GetContents
、OpenDocuments
和RequestPermissions
协定已分别重命名为GetMultipleContents
、OpenMultipleDocuments
和RequestMultiplePermissions
。(aosp/1280161)ComponentActivity
现在实现了ActivityResultRegisteryOwner
接口。(aosp/1290888)- -
ComponentActivity
上的startActivityForResult()
/onActivityResult()
和onRequestPermissionsResult()
API 已弃用。请使用 Activity Result API。(b/154751887)
Bug 修复
- 当使用
GetMultipleContents
和OpenMultipleDocuments
协定并选择单个项目时,现在会正确地将其返回给您的回调。(b/152941153)
版本 1.2.0-alpha03
2020年4月1日
androidx.activity:activity:1.2.0-alpha03
和 androidx.activity:activity-ktx:1.2.0-alpha03
已发布。版本 1.2.0-alpha03 包含这些提交。
新功能
- 将
TakeVideo
、PickContact
、GetContent
、GetContents
、OpenDocument
、OpenDocuments
、OpenDocumentTree
和CreateDocument
协定添加到ActivityResultContracts
提供的预构建协定集中。(aosp/1262482,aosp/1266916,aosp/1268960) - Activity Result API 现在支持使用可选的
ActivityOptionsCompat
启动 Activity 以获取结果。(b/151860054)
API 变更
TakePicture
协定现在接受一个Uri
输入,用于存储图像的位置。之前不接受任何输入的协定已重命名为TakePicturePreview
。(aosp/1262482)ActivityResultRegistry
上的registerActivityResultCallback()
方法已重命名为register()
。(aosp/1267621)ActivityResultLauncher
上的dispose()
方法已重命名为unregister()
,并且ActivityResultRegistry
上的unregisterResultCallback()
已移除。(aosp/1267621)ActivityResultContact
的createIntent()
方法现在除了输入外还接受Context
,从而可以创建显式 Intent。(aosp/1238800)- 一个
ActivityResultContract
现在可以覆盖getSynchronousResult()
,以便在不调用startActivityForResult
的情况下传递结果。这由RequestPermission
和RequestPermissions
协定使用,以便在请求的权限已授予时正确传递“已授予”状态。(b/151110799) - 之前可用的
Dial
协定已被移除,因为该Intent
不应与startActivityForResult()
一起使用。(aosp/1266916) - 许多不应扩展的 Activity Result API 现在是
final
的。这包括getActivityResultRegistry()
、prepareCall()
方法、ActivityResultRegistry
的所有方法(invoke()
除外),以及许多不支持可选 extra 的默认协定。(b/152439361)
Bug 修复
- 修复了
ActivityResultRegistry
中的NullPointerException
,该异常在尝试将结果传递给配置更改后尚未重新注册的回调时发生;ActivityResultRegistry
现在保留这些待处理的结果并在回调重新注册时传递它们。(b/152137004)
版本 1.2.0-alpha02
2020年3月18日
androidx.activity:activity:1.2.0-alpha02
和 androidx.activity:activity-ktx:1.2.0-alpha02
已发布。版本 1.2.0-alpha02 包含这些提交。
新功能
- ActivityResultRegistry:
ComponentActivity
现在提供了一个ActivityResultRegistry
,让您无需在 Activity 或 Fragment 中覆盖方法即可处理startActivityForResult()
+onActivityResult()
以及requestPermissions()
+onRequestPermissionsResult()
流程,通过ActivityResultContract
提高了类型安全性,并提供了用于测试这些流程的钩子。请参阅更新后的获取 Activity 结果。(b/125158199)
版本 1.2.0-alpha01
2020年3月4日
androidx.activity:activity:1.2.0-alpha01
和 androidx.activity:activity-ktx:1.2.0-alpha01
已发布。版本 1.2.0-alpha01 包含这些提交。
新功能
- 添加了对 Lifecycle
2.3.0-alpha01
中添加的ViewTreeLifecycleOwner.get(View)
API 的支持,以便它将 Activity 作为直接添加到 Activity 的任何 View 的LifecycleOwner
返回。(aosp/1182955)
Bug 修复
- 修复了 Activity
1.1.0
中引入的一个回归问题,该问题在旧版本的平台上运行时会导致onBackPressed()
由于android.app.FragmentManager
中的一个 bug 而引发IllegalStateException
。(b/146290338)
版本 1.1.0
版本 1.1.0
2020年1月22日
androidx.activity:activity:1.1.0
已发布。版本 1.1.0 包含这些提交。
自 1.0.0 以来的重要变化
- Lifecycle ViewModel SavedState 集成:
SavedStateViewModelFactory
现在是使用by viewModels()
、ViewModelProvider
构造函数或ViewModelProviders.of()
与ComponentActivity
或其子类一起使用时的默认工厂。
版本 1.1.0-rc03
2019年12月4日
androidx.activity:activity:1.1.0-rc03
和 androidx.activity:activity-ktx:1.1.0-rc03
已发布。版本 1.1.0-rc03 包含这些提交。
依赖项更改
- Activity 现在依赖于 Lifecycle
2.2.0-rc03
和 Lifecycle ViewModel SavedState1.0.0-rc03
。
版本 1.1.0-rc02
2019年11月7日
androidx.activity:activity:1.1.0-rc02
和 androidx.activity:activity-ktx:1.1.0-rc02
已发布。版本 1.1.0-rc02 包含这些提交。
依赖项更改
- Activity 现在依赖于 lifecycle
2.2.0-rc02
。
版本 1.1.0-rc01
2019年10月23日
androidx.activity:activity:1.1.0-rc01
和 androidx.activity:activity-ktx:1.1.0-rc01
已发布,与 1.1.0-beta01
相比没有变化。版本 1.1.0-rc01 包含这些提交。
版本 1.1.0-beta01
2019年10月9日
androidx.activity::activity:1.0.0-beta01
和 androidx.activity:activity-ktx:1.0.0-beta01
已发布。版本 1.1.0-beta01 包含这些提交。
依赖项更改
- Activity 现在依赖于 SavedState 1.0.0 稳定版。
版本 1.1.0-alpha03
2019年9月5日
androidx.activity:activity:1.1.0-alpha03
和 androidx.activity:activity-ktx:1.1.0-alpha03
已发布。此版本中包含的提交可在此处找到。
新特性
- Activity 现在依赖于 Core 1.1.0 稳定版。
Bug 修复
- Activity 现在依赖于 Lifecycle
2.2.0-alpha04
。
版本 1.1.0-alpha02
2019年8月7日
androidx.activity:activity:1.1.0-alpha02
和 androidx.activity:activity-ktx:1.1.0-alpha02
已发布。此版本中包含的提交可在此处找到。
新特性
SavedStateViewModelFactory
现在是使用by viewModels()
、ViewModelProvider
构造函数或ViewModelProviders.of()
与ComponentActivity
一起使用时的默认工厂。(b/135716331)
版本 1.1.0-alpha01
2019年7月2日
androidx.activity:activity:1.1.0-alpha01
和 androidx.activity:activity-ktx:1.1.0-alpha01
已发布。此版本中包含的提交可在此处找到。
新特性
activity
现在依赖于 Lifecycle2.2.0-alpha02
。(aosp/1007817)activity-ktx
添加了对lifecycle-runtime-ktx
的依赖;在使用activity-ktx
或依赖activity-ktx
的库(例如fragment-ktx
)时,您不再需要显式将其添加到您的依赖项中。(aosp/987162)
版本 1.0.0
版本 1.0.0
2019年9月5日
androidx.activity:activity:1.0.0
和 androidx.activity:activity-ktx:1.0.0
已发布。此版本中包含的提交可在此处找到。
1.0.0 的主要特性
- ComponentActivity:
ComponentActivity
是 Fragment1.1.0
中FragmentActivity
的新基类,并且通过扩展,也是 AppCompat1.1.0
中AppCompatActivity
的新基类。 - activity-ktx:
activity-ktx
模块包含一个by viewModels
Kotlin 属性扩展,用于访问 ViewModels。当您包含 Fragment1.1.0
中的fragment-ktx
时,此模块会自动包含在内。 - OnBackPressedDispatcher:作为覆盖
onBackPressed()
的可组合替代方案,您现在可以从任何LifecycleOwner
(例如 fragment)注册OnBackPressedCallback
以拦截系统返回按钮事件。activity-ktx
中已添加了一个带有接收器版本的 lambdaaddCallback
。有关更多详细信息,请参阅提供自定义返回导航文档。 - onRetainCustomNonConfigurationInstance 弃用:
onRetainCustomNonConfigurationInstance()
和相关的getLastCustomNonConfigurationInstance()
API 已弃用。强烈建议使用 ViewModels 来存储非配置状态,因为它们提供了一个适用于任何ViewModelStoreOwner
的可组合解决方案,该解决方案明确了保留对象的所有权,并提供了onCleared()
回调,以便在 Activity 最终销毁时清理资源。
版本 1.0.0-rc01
2019年7月2日
androidx.activity:activity:1.0.0-rc01
和 androidx.activity:activity-ktx:1.0.0-rc01
已发布,与 1.0.0-beta01
相比没有变化。此版本中包含的提交可在此处找到。
版本 1.0.0-beta01
2019年6月5日
androidx.activity::activity:1.0.0-beta01
和 androidx.activity:activity-ktx:1.0.0-beta01
已发布,与 1.0.0-alpha08
相比没有变化。此版本中包含的提交可在此处找到。
版本 1.0.0-alpha08
2019年5月7日
androidx.activity:activity:1.0.0-alpha08
和 androidx.activity:activity-ktx:1.0.0-alpha08
已发布。此版本中包含的提交可在此处找到。
API 更改
- 重大变更:
ComponentActivity
上之前弃用的addOnBackPressedCallback
和removeOnBackPressedCallback
方法已被移除。aosp/953857 OnBackPressedCallback
的setEnabled()
和isEnabled()
方法现在是 final 的。b/131416833OnBackPressedCallback
的remove()
方法现在是 final 的。aosp/952720OnBackPressedDispatcher
现在具有公共构造函数,允许您为测试等构造自己的实例。aosp/953431ComponentActivity
的onBackPressed()
现在明确标记为@MainThread
。aosp/952721
Bug 修复
- 修复了在从使用
LifecycleOwner
添加的OnBackPressedCalback
的handleOnBackPressed()
方法中调用remove()
时发生的ConcurrentModificationException
。b/131765095
版本 1.0.0-alpha07
2019年4月25日
androidx.activity:activity:1.0.0-alpha07
和 androidx.activity:activity-ktx:1.0.0-alpha07
已发布。此版本中包含的提交可在此处找到。
API 更改
此版本对 onBackPressed()
的处理方式进行了重大更改。有关更多详细信息,请参阅更新后的自定义返回文档。
OnBackPressedCallback
和OnBackPressedDispatcher
的方法已标记为@MainThread
。(aosp/943813)handleOnBackPressed()
方法不再返回boolean
。相反,OnBackPressedCallback
现在是一个抽象类,可以启用或禁用 - 只有当新的isEnabled()
方法返回 true 时,才会调用handleOnBackPressed()
,在此方法中您必须处理返回按钮。(aosp/944518)OnBackPressedDispatcher
的addCallback
方法不再返回Cancellable
实例。OnBackPressedCallback
现在包含一个remove()
方法来实现此功能,允许您在handleOnBackPressed()
期间调用remove()
。(aosp/944519) (aosp/946316)activity-ktx
现在包含一个用于addCallback
的接收器范围回调,它接受一个实现handleOnBackPressed()
的 lambda,并可以访问isEnabled
和remove()
。(aosp/944520)
版本 1.0.0-alpha06
2019年4月3日
androidx.activity:activity:1.0.0-alpha06
和 androidx.activity:activity-ktx:1.0.0-alpha06
已发布。此版本中包含的提交可在此处找到。
API 更改
- ComponentActivity 现在包含第二个构造函数,该构造函数接受一个
@LayoutRes int
,取代了之前使用@ContentView
注解 AppCompatActivity 类的方法。此方法适用于应用和库模块。(b/128352521) - ComponentActivity 上与
OnBackPressedCallback
相关的 API 已弃用,取而代之的是新的OnBackPressedDispatcher
,可通过getOnBackPressedDispatcher()
获取。(aosp/922523) - 向
OnBackPressedDispatcher
添加新的OnBackPressedCallback
的方法现在返回一个Cancellable
对象,允许在不需要显式引用OnBackPressedDispatcher
的情况下移除回调。(aosp/922523) - 使用关联的
LifecycleOwner
添加OnBackPressedCallback
现在会导致在 Lifecycle 启动和停止时分别添加和移除OnBackPressedCallback
。(aosp/922523)
版本 1.0.0-alpha05
2019年3月13日
androidx.activity:activity:1.0.0-alpha05
和 androidx.activity:activity-ktx:1.0.0-alpha05
已发布。此版本中包含的完整提交列表可在此处找到。
新特性
@ContentView
注解查找现在已缓存。(b/123709449)
版本 1.0.0-alpha04
2019年1月30日
androidx.activity:activity 1.0.0-alpha04
和 androidx.activity:activity-ktx 1.0.0-alpha04
已发布。
新特性
- 添加了对
@ContentView
类注解的支持,允许您指示应膨胀哪个布局 XML 文件,作为使用setContentView()
的替代方案。(aosp/837619)
API 更改
- 添加了一个说明,指出不应覆盖
getViewModelStore()
,并且它将在未来版本中设置为 final。如果您当前正在覆盖此方法,请提交功能请求。(aosp/837619)
Bug 修复
activity
模块现在依赖于 ViewModel 2.1.0-alpha02 版本,以匹配activity-ktx
模块的依赖项。
版本 1.0.0-alpha03
2018年12月17日
androidx.activity 1.0.0-alpha03
已发布。
新特性
- ComponentActivity 现在实现了
BundleSavedStateRegistryOwner
并依赖于新发布的 SavedState 库。[aosp/815133] - ComponentActivity 现在解决了 Android 框架的一个 bug,该 bug 会导致 InputMethodManager 泄漏最后聚焦的视图。[b/37122102]
版本 1.0.0-alpha02
2018年12月3日
API 更改
- 添加了一个说明,指出不应覆盖
getLifecycle()
,并且它将在未来版本中设置为final
。如果您当前正在覆盖此方法,请提交功能请求。(aosp/815834)
版本 1.0.0-alpha01
2018年11月5日
androidx.activity 1.0.0-alpha01
引入了 ComponentActivity
,它是现有 FragmentActivity
和 AppCompatActivity
的新基类。
新特性
- 您现在可以通过
addOnBackPressedCallback
注册OnBackPressedCallback
,以接收onBackPressed()
回调,而无需在您的 Activity 中覆盖该方法。 - 为从
ComponentActivity
检索ViewModel
添加了一个新的by viewModels()
Kotlin 属性委托。 - 待处理的输入事件(如点击)现在在
onStop()
中取消。
API 更改
LifecycleOwner
和ViewModelStoreOwner
的实现已从FragmentActivity
移至ComponentActivity
。onRetainCustomNonConfigurationInstance
已弃用。使用ViewModel
存储需要 survive 配置更改的对象。