活动
最近更新时间 | 稳定版 | 候选版 | Beta 版 | Alpha 版 |
---|---|---|---|---|
2024 年 9 月 4 日 | 1.9.2 | - | - | 1.10.0-alpha02 |
声明依赖项
如需添加 Activity 的依赖项,您必须将 Google Maven 制品库添加到项目中。如需了解详情,请参阅 Google 的 Maven 制品库。
在应用或模块的 build.gradle
文件中添加所需工件的依赖项:
Groovy
dependencies { def activity_version = "1.9.2" // Java language implementation implementation "androidx.activity:activity:$activity_version" // Kotlin implementation "androidx.activity:activity-ktx:$activity_version" }
Kotlin
dependencies { val activity_version = "1.9.2" // Java language implementation implementation("androidx.activity:activity:$activity_version") // Kotlin implementation("androidx.activity:activity-ktx:$activity_version") }
如需详细了解依赖项,请参阅添加 build 依赖项。
反馈
您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对此库有任何改进建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。
如需了解详情,请参阅问题跟踪器文档。
版本 1.10
版本 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
操作和相关 extra 为 OEM 和系统应用提供一致的照片选择器体验作为后备方案。对于安装了较新版本的 Google Play 服务的设备,这应该不会影响用户体验。(I3513d)
bug 修复
- 移除了对新平台 API 访问权限的手动概述,因为在将 R8 与 AGP 7.3 或更高版本(例如 R8 版本 3.3)搭配使用时,系统会自动通过 API 建模来实现上述目的;而对于使用 AGP 8.1 或更高版本(例如 D8 版本 8.1)的所有 build,这种情况会自动发生。建议未使用 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.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 包含这些 lthcocommits。
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 转换
- 用 Kotlin 重写了
ActivityResultRegistry
。这样可确保传递给register
的协定上的泛型的可为 null 性会正确传递到返回给您的ActivityResultLauncher
。(I121f0) - 用 Kotlin 重写了
ActivityResult
。支持解构为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
开始:修复了传递给照片选择器 activity 协定的ACTION_SYSTEM_FALLBACK_PICK_IMAGES
的 extra,以正确向其传递EXTRA_SYSTEM_FALLBACK_PICK_IMAGES_MAX
键,而不是将 extra 与键"com.google.android.gms.provider.extra.PICK_IMAGES_MAX"
一起使用。如果您是实现系统回退照片选择器的 OEM,强烈建议您支持这两个 extra,以确保实现最广泛的兼容性。(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 变更
- 用 Kotlin 重写了
ComponentActivity
。(I14f31) - 用 Kotlin 重写了
ActivityResultCaller
。(Ib02e4) - 用 Kotlin 重写了
ActivityResultLauncher
。在转换过程中,getContract
方法现在是一个抽象的 Kotlin 属性。这是一项与二进制文件兼容的更改,但如果您的ActivityResultLauncher
实现是用 Kotlin 编写的,则会破坏源代码。(Id4615) - 现在,
PickVisualMediaRequest
的最低 API 级别为 19,与PickVisualMedia
Activity Result 协定相同。(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 修复
- 修复了传递给照片选择器 Activity 协定的
ACTION_SYSTEM_FALLBACK_PICK_IMAGES
的 extra,以正确向其传递EXTRA_SYSTEM_FALLBACK_PICK_IMAGES_MAX
键,而不是将 extra 与键"com.google.android.gms.provider.extra.PICK_IMAGES_MAX"
一起使用。如果您是实现系统回退照片选择器的 OEM,强烈建议您支持这两个 extra,以确保实现最广泛的兼容性。(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 修复
- 现在,即使在处理返回手势时添加了新的
OnBackPressedCallback
,OnBackPressedDispatcher
现在也会继续分派给正确的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 以来的重要变更
- 预测性返回 - 除了针对提交返回手势之前的上一个
handleOnBackPressed()
回调之外,OnBackPressedCallback
现在还提供新的预测性返回回调,用于处理返回手势启动、整个手势的进度以及返回手势被取消。这还附带了PredictiveBackHandler
可组合函数,用于在 activity Compose 中处理预测性返回手势事件。它提供了一个 BackEventCompat 对象的流,您必须在您提供的挂起 lamba 中收集这些对象:
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
可组合项,用于处理预测性返回手势事件。它提供了由BackEventCompat
对象组成的Flow
,您必须在您提供的挂起 lamba 中收集这些对象: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
获得onBackPressed()
回调且 activity 已处于DESTROYED
状态时,ComponentActivity
将不再在 Android 13 上显示 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 修复
- 修复了 fragment 错误地使 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
。这是通过内部分支构建的。
新功能
- 除了提交返回手势时使用的上一个
handleOnBackPressed()
回调外,OnBackPressedCallback
类现在还添加了用于处理返回手势启动、整个手势的进度和取消返回手势的新预测性返回进度回调。
版本 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
中的照片选择器 activity 协定,以便在MediaStore.ACTION_PICK_IMAGES
不可用时包含额外的回退机制,以便 OEM 和系统应用(如 Google Play 服务)通过实现回退操作在更广泛的 Android 设备和 API 级别上提供一致的照片选择器体验。照片选择器将使用此回退机制(如果可用),然后再回退到使用Intent.ACTION_OPEN_DOCUMENT
(仍支持所有 API 19 及更高版本的设备)。 ComponentDialog
现在实现了SavedStateRegistryOwner
,并且可以访问自己的SavedStateRegistry
并为其ViewTree
设置SavedStateRegistryOwner
。您现在可以在ComponentDialog
中使用 Jetpack Compose,因为它同时满足通过ViewTree
API 要求附加到窗口的LifecycleOwner
和SavedStateRegistryOwner
。IntentSenderRequest.Builder.setFlags()
现在允许您从Intent
设置多个标志,而不仅仅是单个标志。
Kotlin 转换
许多 Activity 类已转换为 Kotlin。所有转换后的类仍会保留与先前版本的二进制文件兼容性。对于使用 Kotlin 编写的类,以下类具有源代码不兼容的更改:ActivityResultRegistryOwner
、OnBackPressedDispatcherOwner
。
下表提供了新版“活动”的来源转化数据:
活动 1.5 | 活动 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 运行时发出信号,以确保包含多帧启动序列期间运行的所有代码并优先进行后台编译。
- 在您的应用应被视为已完成启动指标绘制时,向 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
协定在MediaStore.ACTION_PICK_IMAGES
不可用时会将操作和 extra 用作回退,现在这些操作和 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 协定现在会在 Android 系统提供照片选择器(例如,MediaStore.ACTION_PICK_IMAGES
)不可用。仅检测 Android 系统提供的照片选择器的isPhotoPickerAvailable()
API 已废弃。建议使用新的isPhotoPickerAvailable(Context)
API,该 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,因为它满足要求“LifecycleOwner
和SavedStateRegistryOwner
都已通过 ViewTree API 附加到窗口”。(Idca17、I73468、b/261162296)
API 变更
- 添加了一个
ReportDrawn
可组合项,可立即将 activity 标记为已准备好调用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
开始:修复了使用maxItems
的默认值时,PickMultipleVisualMedia
Activity Result 协定不会在 Android R 设备上启动的问题。(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 运行时发出信号,以确保包含多帧启动序列期间运行的所有代码并优先进行后台编译。
- 在您的应用应被视为已完成启动指标绘制时,向 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 修复
- 修复了使用
maxItems
的默认值时,PickMultipleVisualMedia
Activity Result 协定不会在 Android R 设备上启动的问题。(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
,用于提供向后兼容协定,在照片选择器可用时使用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 中调用超级函数。(Ie33c5、b/238057118)
依赖项更新
Activity
库现在依赖于 Lifecycle2.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
使用@NonNull
标记已废弃的startActivityForResult
和startIntentSenderForResult
方法,因为传递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()
替换值,而无需调用超级函数。(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
中尝试通过构建器或顶级 Kotlin 函数创建请求会导致堆栈溢出的错误。 - 将 Android 13 开发者 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 开发者 Beta 1 SDK 进行编译。
新功能
- 添加了
ActivityResultContracts.PickVisualMedia
和ActivityResultContracts.PickMultipleVisualMedia
,用于提供向后兼容协定,在照片选择器可用时使用MediaStore.ACTION_PICK_IMAGES
,不可用时使用Intent.ACTION_OPEN_DOCUMENT
。 - 将 Android 13 开发者 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 开发者预览版 2 SDK 进行编译。
新功能
- 将 Android 13 开发者预览版 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()
替换值,而无需调用超级函数。(Ie33c5、b/238057118)
依赖项更新
Activity
库现在依赖于 Lifecycle2.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
,允许 View 通过通用方式检索正确的调度程序,无论它位于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()
现在也会调用超级onPanelClosed()
,从而修复了不会调用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
进行初始化也不受影响。如果提供 extra,则会忽略初始化的参数。(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
传递给 activityby 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
,允许 view 通过通用方式检索正确的调度程序,无论它位于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()
回调或对LifecycleObserver
(作为ComponentActivity
的init
的一部分添加)的回调访问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
接口。这样一来,任何组件都可以向 activity 添加MenuProvider
实例,从而向ActionBar
添加菜单项。可根据需要为每个MenuProvider
添加Lifecycle
,后者会根据Lifecycle
状态自动控制这些菜单项的可见性,并在Lifecycle
销毁后移除MenuProvider
。 - 使用 Kotlin 重写了
ActivityResultContract
类,以确保使用 Kotlin 编写自定义协定的开发者可以为其输入和输出类定义正确的是否可为 null 性规则。 - 使用 Kotlin 重写了
ActivityResultContracts
类及其协定,以确保正确的是否可为 null 性规则。
版本 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) - 现在,通过
Companion
对象(现在是公开对象)使用 Kotlin 时,可以访问ActivityResultContracts.StartActivityForResult
、ActivityResultContracts.StartIntentSenderForResult
和ActivityResultContracts.RequestMultiplePermissions
类中的公共常量。(aosp/1832555)
文档更新
- 现在,由 Activity Result API(即
startActivityForResult
、startIntentSenderForResult
、onActivityResult
、requestPermissions
和onRequestPermissionsResult
)处理的 API 的废弃消息均已扩展,并提供了更多详情。(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 变更
- 使用 Kotlin 重写了
ActivityResultContract
类,以确保使用 Kotlin 编写自定义协定的开发者可以为其输入和输出类定义正确的是否可为 null 性规则。(I8a8f5) - 使用 Kotlin 重写了
ActivityResultContracts
类及其协定,以确保正确的是否可为 null 性规则。(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
销毁后移除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)
}
行为变更
- 现在,尝试对尚未注册或已取消注册的
ActivityResultLauncher
调用launch()
时,ActivityResultRegistry
会抛出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 界面;且提供了 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
。activity-compose
现在于 androidx.compose.ui:ui-test-junit4
中设置了一个编译时间依赖项。
版本 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 的源 Rect 提示。(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
以上的不稳定版 fragment 不会再发出提示您使用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
会返回可为 null 的值,以更好地确定其在当前组合中是否可用。现在,如果未找到底层所有者,则需要这些 API 的 API(例如BackHandler
和rememberLauncherForActivityResult()
)会抛出更具描述性的错误。现在,即使未找到OnBackPressedDispatcherOwner
(例如在预览NavHost
时),NavHost
也可正常运行。(I7d8b4)
bug 修复
- 现在,如果 Activity 先为
STOPPED
,然后重新变为STARTED
,且之前通过 LifecycleOwner 添加了其他回调,则BackHandler
会正确拦截按下返回按钮的操作。(I71de6、b/182284739) - 在使用
launch()
方法扩展项(包含具有Unit
输入的自定义ActivityResultContract
)时,不会再导致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 起:修复了使用 Fragment 1.3.1 或更高版本时导致
InvalidFragmentVersionForActivityResult
lint 检查出现误报的问题。(I54da1、b/182388985) - 从 Activity 1.2.2 起:从之前在另一
Intent
中保存为 extra 的ActivityResultContract
中启动某个Intent
时,ComponentActivity
现在不再发生ClassNotFoundException
。(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
函数从可组合项中的 activity 获取结果。(Ia7851、b/172690553)
API 变更
LocalOnBackPressedDispatcherOwner
现在包含可与CompositionLocalProvider
搭配使用的provides
函数,替换了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 可用于允许可组合项拦截系统返回按钮。(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 修复
- 在使用
launch()
方法扩展项(包含具有Unit
输入的自定义ActivityResultContract
)时,不会再导致NullPointerException
(I76282、b/183837954) - 修复了在使用较新版本的 fragment 的快照、Alpha 版、Beta 版或 RC build 时,提示您使用 fragment
1.3.0
的误报 lint 错误。(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 修复
- 修复了使用 Fragment 1.3.1 或更高版本时
InvalidFragmentVersionForActivityResult
lint 检查会导致误报的问题。(I54da1、b/182388985) - 从之前在另一
Intent
中保存为 extra 的ActivityResultContract
中启动某个Intent
时,ComponentActivity
现在不再发生ClassNotFoundException
。(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()
可让您在上下文可用时运行非暂停代码块,并返回结果。 - 此 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,以便针对直接添加到ComponentActivity
中的任何 View 将相应 activity 返回为LifecycleOwner
、ViewModelStoreOwner
和SavedStateRegistryOwner
。
- reportFullyDrawn() 向后移植 -
reportFullyDrawn()
的Activity
方法已反向移植到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 修复
- 现在,
ActivityResultRegistry
始终会恢复已保存的确切状态。(Idd56b) - 添加了
ComponentActivity.reportFullyDrawn
跟踪记录 (Ic7632)
外部贡献
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)
行为变更
- 现在,尝试使用
Lifecycle
已达到STARTED
的LifecycleOwner
调用register()
时,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()
可让您在上下文可用时运行非暂停代码块,并返回结果。(I8290c) - 此 API 由 Fragment 1.3.0-alpha08 中的
FragmentActivity
用来恢复FragmentManager
的状态。向FragmentActivity
子类添加的任何监听器都将在该监听器之后运行。(I513da) - 此 API 由 AppCompat 1.3.0-alpha02 中的
AppCompatActivity
使用。向AppCompatActivity
子类添加的任何监听器都将在该监听器之后运行。(I513da)
- 暂停 Kotlin 扩展程序
bug 修复
- 修复了在使用 Lint 27.1.0 或更高版本时导致
ActivityResultFragmentVersionDetector
Lint 检查中断的问题。(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
,从而避免因“请求代码无效”问题引起的运行时崩溃,以及由于使用较低版本的 Fragment 而导致权限请求不起作用的问题。(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 中包含这些提交内容。
新功能
- 在
ComponentActivity
中使用View
时,添加了对来自 Lifecycle2.3.0-alpha03
的ViewTreeViewModelStoreOwner
的支持,以及对来自 SavedState1.1.0-alpha01
的ViewTreeSavedStateRegistryOwner
的支持。(aosp/1297993 和 aosp/1300264)
API 变更
TakePicture
协定现在返回指示成功的boolean
,而不是缩略图Bitmap
,因为在将图片写入提供的Uri
时,相机应用很少支持这种格式。(b/154302879)- 移除了
ActivityResultLauncher
上的invoke()
扩展程序,取而代之的是明确使用launch()
来更好地指示这些是异步操作。针对ActivityResultLauncher<Void>
和ActivityResultLauncher<Unit>
向androidx.activity.result
软件包添加了launch
的 Kotlin 扩展,这样就不再需要分别传入null
或Unit
,而是从之前的invoke()
扩展镜像了该行为。(aosp/1304674 和 aosp/1304675) setFlagsMask()
和setFlagsValues()
的IntentSenderRequest.Builder
方法已组合成单个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 中包含这些提交内容。
新功能
- 在由
ActivityResultContracts
提供的一组预构建协定的基础上添加了TakeVideo
、PickContact
、GetContent
、GetContents
、OpenDocument
、OpenDocuments
、OpenDocumentTree
和CreateDocument
协定。(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) - 由于
Intent
不会与startActivityForResult()
一起使用,之前可用的Dial
协定已移除。(aosp/1266916) - 许多不会扩展的 Activity Result API 现在都为
final
。其中包括getActivityResultRegistry()
、prepareCall()
方法、除invoke()
以外的所有ActivityResultRegistry
方法,以及一些不支持可选额外项的默认协定。(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 的支持,以便在任意视图的LifecycleOwner
直接添加到 Activity 时返回 Activity。(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 集成:现在将
by viewModels()
、ViewModelProvider
构造函数或ViewModelProviders.of()
与ComponentActivity
或其子类一起使用时,会使用SavedStateViewModelFactory
作为默认出厂设置。
版本 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.1.0-beta01
和 androidx.activity:activity-ktx:1.1.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 现在依赖于生命周期
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
现在依赖于生命周期2.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
模块包含用于访问 ViewModel 的by viewModels
Kotlin 属性扩展。当您添加 Fragment1.1.0
中的fragment-ktx
时,系统会自动添加此模块。 - OnBackPressedDispatcher:作为替换
onBackPressed()
的可组合替代方案,您现在可以从任何LifecycleOwner
(如 fragment)注册OnBackPressedCallback
来拦截系统返回按钮事件。具有接收器版本addCallback
的 lambda 已添加到activity-ktx
。如需了解详情,请参阅提供自定义返回导航文档。 - 废弃 onRetainCustomNonConfigurationInstance:已废弃
onRetainCustomNonConfigurationInstance()
和相关的getLastCustomNonConfigurationInstance()
API。强烈建议使用 ViewModel 存储非配置状态,因为它可以提供适合任何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()
方法现已最终确定。b/131416833OnBackPressedCallback
的remove()
方法现已最终确定。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()
的 lamdba,并且可以访问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 变更
- AppCompatActivity 现在包含采用
@LayoutRes int
的第二个构造函数,取代了以前使用@ContentView
注释 AppCompatActivity 类的行为。此方法同时适用于应用和库模块。(b/128352521) - ComponentActivity 的
OnBackPressedCallback
相关 API 已废弃,取而代之的是可通过getOnBackPressedDispatcher()
检索的新OnBackPressedDispatcher
。(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-ktx
模块的依赖项一致,activity
现在依赖于 ViewModel 的 2.1.0-alpha02 版本。
版本 1.0.0-alpha03
2018 年 12 月 17 日
发布了 androidx.activity 1.0.0-alpha03
。
新功能
- ComponentActivity 现在可实现
BundleSavedStateRegistryOwner
并依赖于新发布的 SavedState 库 [aosp/815133] - ComponentActivity 现在解决了一个 Android 框架方面的问题,该问题会导致 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 中替换该方法。 - 添加了新的
by viewModels()
Kotlin 属性委托,用于从ComponentActivity
检索ViewModel
。 - 现在,
onStop()
中取消了待处理输入事件(例如点击)。
API 变更
LifecycleOwner
和ViewModelStoreOwner
的实现已从FragmentActivity
移至ComponentActivity
。onRetainCustomNonConfigurationInstance
已废弃。请使用ViewModel
存储需要在配置更改后继续留存的对象。