活动
最新更新 | 稳定版 | 候选版本 | Beta 版 | Alpha 版 |
---|---|---|---|---|
2024 年 11 月 13 日 | 1.9.3 | - | 1.10.0-beta01 | - |
声明依赖项
要添加对 Activity 的依赖项,您必须将 Google Maven 存储库添加到您的项目中。阅读Google 的 Maven 存储库以获取更多信息。
在应用或模块的 build.gradle
文件中添加所需构件的依赖项
Groovy
dependencies { def activity_version = "1.9.3" // Java language implementation implementation "androidx.activity:activity:$activity_version" // Kotlin implementation "androidx.activity:activity-ktx:$activity_version" }
Kotlin
dependencies { val activity_version = "1.9.3" // Java language implementation implementation("androidx.activity:activity:$activity_version") // Kotlin implementation("androidx.activity:activity-ktx:$activity_version") }
有关依赖项的更多信息,请参阅添加构建依赖项。
反馈
您的反馈有助于改进 Jetpack。如果您发现新的问题或有改进此库的想法,请告知我们。在创建新问题之前,请查看此库中现有的问题。您可以通过点击星形按钮为现有问题添加您的投票。
有关更多信息,请参阅问题跟踪器文档。
版本 1.10
版本 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)
错误修复
- 来自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)
错误修复
- 删除了对访问新平台 API 的手动概述,因为在使用 R8 和 AGP 7.3 或更高版本(例如 R8 版本 3.3)时,以及在使用 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 包含 这些提交。
错误修复
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 包含 这些提交。
错误修复
- 修复了 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 包含 这些提交。
错误修复
- 修复了
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 包含 这些提交。
错误修复
- 修复了 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)
错误修复
- 如果在已经运行的预测后退手势期间从系统发送后退事件,则当前正在运行的预测后退手势将被取消,并且新的后退事件将接管以开始新的预测后退手势。(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 中重写。ActivityResult
Kotlin 扩展(支持解构为resultCode
和data
字段)已从activity-ktx
移至activity
。(I0565a)ComponentActivity
的by viewModels()
和trackPipAnimationHintView
的 Kotlin 扩展已从activity-ktx
移至activity
。activity-ktx
工件现在完全为空。(I0a444)
错误修复
enableEdgeToEdge
API 现在会在任何显示切口周围绘制。(a3644b, b/311173461)- 从 Activity
1.8.2
开始:修复传递给照片选择器 Activity Contract 的ACTION_SYSTEM_FALLBACK_PICK_IMAGES
的额外参数,使其正确传递EXTRA_SYSTEM_FALLBACK_PICK_IMAGES_MAX
键,而不是使用键为"com.google.android.gms.provider.extra.PICK_IMAGES_MAX"
的额外参数。强烈建议如果你是实现系统回退照片选择器的 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 合同具有相同的最低 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 包含这些提交。
错误修复
- 修复传递给照片选择器 Activity Contract 的
ACTION_SYSTEM_FALLBACK_PICK_IMAGES
的额外参数,使其正确传递EXTRA_SYSTEM_FALLBACK_PICK_IMAGES_MAX
键,而不是使用键为"com.google.android.gms.provider.extra.PICK_IMAGES_MAX"
的额外参数。强烈建议如果你是实现系统回退照片选择器的 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 包含这些提交。
错误修复
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
可组合项,用于在 Activity Compose 中处理预测后退手势事件。它提供了一个BackEventCompat
对象的流,这些对象必须在提供的挂起 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
,而不是覆盖此方法。
- 边缘到边缘 - 已添加
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
可组合项来处理预测后退手势事件。它提供了一个Flow
的BackEventCompat
对象,这些对象必须在提供的挂起 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)
错误修复
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>
实例,该实例允许调度程序的所有者在启用回调的数量从零变为非零或反之亦然时接收回调。
错误修复
- 从 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
已发布。此版本是从内部分支发布的。
错误修复
- 自 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)
错误修复
- 修复了片段错误地使 MenuHost 无效并导致 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 包含这些提交。
错误修复
- 修复了在调用
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 包含这些提交。
错误修复
- 使用
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
。
下表提供了 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 运行时发出信号,以确保在多帧启动序列期间运行的所有代码都包含在内并优先考虑进行后台编译。
- 在您的应用程序应被视为完全绘制以进行启动指标时向 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
不可用时用作回退的操作和额外内容现在是公共常量,为想要提供一致的照片选择器体验的 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)
错误修复
- 当框架照片选择器不可用时,
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 合同现在将在可用的情况下使用 Google Play 服务提供的照片选择器,在 Android 系统提供的照片选择器(例如MediaStore.ACTION_PICK_IMAGES
)不可用的情况下。仅检测 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 要求附加到窗口的LifecycleOwner
和SavedStateRegistryOwner
两个条件。(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 包含这些提交。
错误修复
- 从 Activity
1.6.1
:修复了在 Android R 设备上使用PickMultipleVisualMedia
Activity Result 合同的默认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 运行时发出信号,以确保在多帧启动序列期间运行的所有代码都包含在内并优先考虑进行后台编译。
- 在您的应用程序应被视为完全绘制以进行启动指标时向 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 包含这些提交。
错误修复
- 修复了在 Android R 设备上使用
PickMultipleVisualMedia
Activity Result 合同的默认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
,以提供一个向后兼容的合同,在 照片选择器 可用时使用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 包含这些提交。
错误修复
OnBackPressedDispatcher
现在使用PRIORITY_DEFAULT
而不是PRIORITY_OVERLAY
注册OnBackInvokedCallback
。(I3901f)- 扩展
ComponentActivity
的类现在将始终分派其两个onMultiWindowModeChanged()
回调。(Ic4d85) ActivityResultRegistry
在launch
调用抛出任何Exception
并且回调是在没有LifecycleOwner
的情况下注册时,将不再向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 包含这些提交。
错误修复
- 初始化
OnBackPressedDispatcher
在使用 SDK 版本低于 33 时将不再导致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)
错误修复
- 来自 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 保持一致。
错误修复
- 修复了在旧设备上执行 SDK 扩展检查时针对
PickVisualMedia
ActivityResultContract
发生的崩溃,以便它现在可以在运行 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
已发布。
错误修复
- 修复了
PickVisualMediaRequest
中的一个错误,该错误会导致尝试通过构建器或顶级 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 开发者 Beta 1 SDK 编译。
新功能
- 添加了
ActivityResultContracts.PickVisualMedia
和ActivityResultContracts.PickMultipleVisualMedia
,用于提供一个向后兼容的契约,当 照片选择器 可用时使用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 开发者预览版 2 SDK 编译。
新功能
- 将 Android 13 Dev 预览版 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 包含这些提交。
错误修复
当
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 包含这些提交。
错误修复
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 包含这些提交。
错误修复
SavedStateViewFactory
现在支持即使它使用SavedStateRegistryOwner
初始化,也使用CreationExtras
。如果提供了额外内容,则会忽略初始化的参数。(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)- 与 View 关联的
OnBackPressedDispatcherOwner
现在可以通过ViewTreeOnBackPressedDispatcherOwner
获取,而不是依赖于强制转换Context
。(I74685)
错误修复
- 修复了从
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 中编写自定义契约的开发人员可以为其输入和输出类定义正确的可空性。ActivityResultContracts
类及其契约已在 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 包含这些提交。
错误修复
ActivityResultRegistry
在launch
调用抛出任何Exception
时,将不再向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 中编写自定义契约的开发人员可以为其输入和输出类定义正确的可空性。(I8a8f5)ActivityResultContracts
类及其契约已在 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
接口。这允许任何组件通过向活动添加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
扩展方法,用于在活动中托管您的 Jetpack Compose UI,以及用于与ComponentActivity
API 交互以处理系统后退按钮和 Activity Result API 的 Compose 特定包装器。有关更多详细信息,请参阅 文档。 - 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 包含这些提交。
错误修复
- 现在已正确保存和恢复
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 包含这些提交。
错误修复
- 现在,即使由于重新组合而导致合同发生变化,
rememberLauncherForActivityResult
也会返回对同一ActivityResultLauncher
实例的稳定引用。(Id2d6d) - 使用高于
1.3.0
的不稳定版本的 Fragments 将不再抛出错误的正误 Lint 错误,提示您使用1.3.0
。(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)
错误修复
- 现在,
BackHandler
将在 ActivitySTOPPED
,然后再次STARTED
,并且使用 LifecycleOwner 添加了其他回调的情况下正确拦截后退按钮按下。(I71de6,b/182284739) - 使用具有自定义
ActivityResultContract
的launch()
方法扩展,该扩展具有Unit
输入,将不再导致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 包含这些提交。
错误修复
- 来自 Activity 1.2.2:修复了
InvalidFragmentVersionForActivityResult
Lint 检查中的一个问题,该问题导致在使用 Fragment 1.3.1 或更高版本时出现误报。(I54da1,b/182388985) - 来自 Activity 1.2.2:
ComponentActivity
现在避免在从先前作为另一个Intent
中的额外内容保存的ActivityResultContract
启动Intent
时出现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 包含这些提交。
错误修复
- 来自 Activity
1.2.1
:RequestMultiplePermissions
现在始终返回所有请求权限的结果,而不仅仅是以前未授予的权限。(I50bc3,b/180884668) - 来自 Activity
1.2.1
:ActivityResultRegistry
现在确保即使您unregister()
,然后使用相同的键再次register()
,正在进行的launch()
请求也会返回其结果。(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
函数,用于从可组合项内的活动获取结果。(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 包含这些提交。
错误修复
- 修复了 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 包含这些提交。
错误修复
- 从 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 包含这些提交。
错误修复
- 使用具有自定义
ActivityResultContract
的launch()
方法扩展,该扩展具有Unit
输入,将不再导致NullPointerException
(I76282,b/183837954) - 修复了一个错误的 lint 错误,该错误在使用 Fragment 的较新版本的快照、Alpha、Beta 或 RC 版本时,提示您使用 Fragment
1.3.0
。(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 包含这些提交。
错误修复
- 修复了
InvalidFragmentVersionForActivityResult
lint 检查中的一个问题,该问题导致在使用 Fragment 1.3.1 或更高版本时出现误报。(I54da1,b/182388985) ComponentActivity
现在避免在从先前作为另一个Intent
中的额外内容保存的ActivityResultContract
启动Intent
时出现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 包含这些提交。
错误修复
RequestMultiplePermissions
现在始终返回所有请求权限的结果,而不仅仅是以前未授予的权限。(I50bc3,b/180884668)ActivityResultRegistry
现在确保即使您unregister()
,然后使用相同的键再次register()
,正在进行的launch()
请求也会返回其结果。(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
,允许您处理startActivityForResult()
+onActivityResult()
以及requestPermissions()
+onRequestPermissionsResult()
流,而无需覆盖 Activity 或 Fragment 中的方法,通过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() 反向移植 -
ComponentActivity
中已反向移植了reportFullyDrawn()
的Activity
方法,以在所有 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 包含这些提交。
错误修复
外部贡献
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 包含这些提交。
错误修复
- 修复了一个问题,即在使用
Lifecycle
注册时,ActivityResult API 不会在 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 包含这些提交。
错误修复
ActivityResultRegistry
现在随机生成整数,直到找到一个未分配的整数作为register()
的请求代码,从而防止因递增请求代码而导致的可能的整数溢出。(b/168779518)在
ActivityResultLauncher
上调用unregister()
时,Lifecycle
观察者将被正确移除。(b/165608393)
行为变更
ActivityResultRegistry
现在在尝试使用其Lifecycle
已经达到STARTED
的LifecycleOwner
调用register()
时抛出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 由
FragmentActivity
在 Fragment 1.3.0-alpha08 中使用以恢复FragmentManager
的状态。添加到FragmentActivity
子类的任何监听器将在该监听器之后运行。(I513da) - 此 API 由
AppCompatActivity
在 AppCompat 1.3.0-alpha02 中使用。添加到AppCompatActivity
子类的任何监听器将在该监听器之后运行。(I513da)
- 一个挂起的 Kotlin 扩展函数
错误修复
- 修复了
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 检查,该检查验证您在使用 Fragment1.3.0-alpha07
时是否正在使用 Activity Result API,避免由于使用旧版本的 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()
来更好地指示这些是异步操作。已为androidx.activity.result
包中的ActivityResultLauncher<Void>
和ActivityResultLauncher<Unit>
添加了launch
的 Kotlin 扩展函数,以消除分别传递null
或Unit
的需要,反映了先前invoke()
扩展函数中的行为。(aosp/1304674,aosp/1304675)IntentSenderRequest.Builder
的setFlagsMask()
和setFlagsValues()
方法已合并为单个setFlags()
方法。(aosp/1302111)
错误修复
- 在使用
LifecycleOwner
注册ActivityResultCallback
时,修复了回调在状态达到STARTED
之前触发的問題。(aosp/1309744)
行为变更
ActivityResultRegistry
现在从0xFFFF
而不是0
开始生成请求代码,避免在活动中使用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)
错误修复
- 在使用
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) - ActivityResult API 现在支持使用可选的
ActivityOptionsCompat
启动活动以获取结果。(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()
),以及许多不支持可选额外内容的默认合约。(b/152439361)
错误修复
- 修复了
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
,它允许您处理startActivityForResult()
+onActivityResult()
以及requestPermissions()
+onRequestPermissionsResult()
流程,而无需在 Activity 或 Fragment 中重写方法,通过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)
错误修复
- 修复了 Activity
1.1.0
在运行较旧平台版本时引入的回归问题,在这些版本中,onBackPressed()
会由于android.app.FragmentManager
中的错误而导致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.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 稳定版。
错误修复
- 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 属性扩展,用于访问 ViewModel。 包含 Fragment1.1.0
中的fragment-ktx
时,会自动包含此模块。 - OnBackPressedDispatcher:作为重写
onBackPressed()
的可组合替代方案,您现在可以从任何LifecycleOwner
(例如 Fragment)注册一个OnBackPressedCallback
来拦截系统后退按钮事件。activity-ktx
中添加了一个带有接收器版本的addCallback
lambda。 有关更多详细信息,请参阅 提供自定义后退导航文档。 - 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()
方法现在是 final。b/131416833OnBackPressedCallback
的remove()
方法现在是 final 的。 aosp/952720OnBackPressedDispatcher
现在拥有公有构造函数,允许您构建自己的实例用于测试等。 aosp/953431ComponentActivity
的onBackPressed()
现在明确标记为@MainThread
aosp/952721
错误修复
- 修复了在
OnBackPressedCalback
的handleOnBackPressed()
方法内部调用remove()
时发生的ConcurrentModificationException
,该OnBackPressedCalback
是使用LifecycleOwner
添加的。 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)
错误修复
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 框架中的一个错误,该错误会导致 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()
回调,而无需在您的活动中覆盖该方法。 - 添加了一个新的
by viewModels()
Kotlin 属性委托,用于从ComponentActivity
中检索ViewModel
。 - 挂起的输入事件(例如点击)现在在
onStop()
中被取消。
API 更改
LifecycleOwner
和ViewModelStoreOwner
的实现已从FragmentActivity
移动到ComponentActivity
。onRetainCustomNonConfigurationInstance
已弃用。使用ViewModel
存储需要在配置更改后继续存在的对象。