活动
最新更新 | 稳定版 | 候选版本 | 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") }
有关依赖项的更多信息,请参阅添加构建依赖项。
反馈
您的反馈有助于使 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
操作和相关额外信息为 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.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。
错误修复
- 修复了一个问题,即 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
:修复了传递给 Photo Picker 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 包含这些提交。
错误修复
- 修复了传递给 Photo Picker Activity Contract 的
ACTION_SYSTEM_FALLBACK_PICK_IMAGES
的额外参数,使其正确地传递EXTRA_SYSTEM_FALLBACK_PICK_IMAGES_MAX
键,而不是使用键为"com.google.android.gms.provider.extra.PICK_IMAGES_MAX"
的额外参数。强烈建议您,如果你是实现系统回退 Photo Picker 的 OEM 厂商,请支持这两个额外参数,以确保最广泛的兼容性。(I96a00)
版本 1.8.1
2023 年 11 月 15 日
androidx.activity:activity:1.8.1
、androidx.activity:activity-compose:1.8.1
和 androidx.activity:activity-ktx:1.8.1
已发布。版本 1.8.1 包含这些提交。
错误修复
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
可组合项来处理预测后退手势事件。它提供了一个BackEventCompat
对象的Flow
,这些对象必须在您提供的挂起 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)
错误修复
- 修复了 Fragment 错误地使 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 合同现在将在 Android 系统提供的照片选择器(例如MediaStore.ACTION_PICK_IMAGES
)不可用的情况下使用 Google Play 服务提供的照片选择器(如果可用)。仅检测 Android 系统提供的照片选择器的isPhotoPickerAvailable()
API 已弃用。建议使用新的isPhotoPickerAvailable(Context)
API,它将返回任何一个照片选择器是否可用。(I55be6)
版本 1.7.0-alpha03
2023年1月11日
androidx.activity:activity:1.7.0-alpha03
、androidx.activity:activity-compose:1.7.0-alpha03
和 androidx.activity:activity-ktx:1.7.0-alpha03
已发布。版本 1.7.0-alpha03 包含这些提交。
新功能
ComponentDialog
现在实现了SavedStateRegistryOwner
,并可以访问其自己的SavedStateRegistry
,并为其 ViewTree 设置SavedStateRegistryOwner
。现在可以在ComponentDialog
中使用 Jetpack Compose,因为它满足了通过 ViewTree API 附加到窗口的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 包含这些提交。
错误修复
- 修复了
PickMultipleVisualMedia
Activity Result 合同在 Android R 设备上使用maxItems
的默认值时无法启动的问题。(Ie2776,b/249182130)
版本 1.6.0
版本 1.6.0
2022 年 9 月 21 日
已发布 androidx.activity:activity:1.6.0
、androidx.activity:activity-compose:1.6.0
和 androidx.activity:activity-ktx:1.6.0
。版本 1.6.0 包含这些提交。
自 1.5.0 以来的重要更改
- 添加了
ActivityResultContracts.PickVisualMedia
和ActivityResultContracts.PickMultipleVisualMedia
,以提供一个向后兼容的合同,当 照片选择器 可用时使用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) - 当
launch
调用引发任何Exception
并且回调是在没有LifecycleOwner
的情况下注册时,ActivityResultRegistry
将不再向ActivityResultCallback
返回结果。(Ia7ff7,b/238350794) ComponentActivity
现在将正确分派菜单调用,而无需在您的活动中调用 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 包含这些提交。
错误修复
- 在使用 SDK 版本早于 33 时,初始化
OnBackPressedDispatcher
将不再导致ClassVerificationError
。(Ic32e1) - 覆盖
ComponentActivity
的onPictureInPictureModeChanged()
回调的类现在将始终分派其回调。(Ib7fdb)
版本 1.6.0-beta01
2022 年 8 月 10 日
已发布 androidx.activity:activity:1.6.0-beta01
、androidx.activity:activity-compose:1.6.0-beta01
和 androidx.activity:activity-ktx:1.6.0-beta01
。版本 1.6.0-beta01 包含这些提交。
API 更改
- 将
ComponentActivity
上已弃用的startActivityForResult
和startIntentSenderForResult
方法标记为@NonNull
,因为传递null
始终会导致崩溃。(Id2a25,b/231476082)
错误修复
- 来自 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 保持一致。
错误修复
- 修复了在旧设备上执行
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
。
错误修复
- 修复了
PickVisualMediaRequest
中的一个错误,该错误会导致尝试通过 Builder 或顶级 Kotlin 函数创建请求时发生堆栈溢出。 - 将 Android 13 Dev Beta 2 中的
OnBackInvokedCallback
集成到ComponentDialog
提供的OnBackPressedDispatcher
中。这确保了在 启用预测返回手势 时,构建在OnBackPressedDispatcher
上的所有 API 都能正常工作。
版本 1.6.0-alpha03
2022 年 4 月 27 日
已发布 androidx.activity:activity:1.6.0-alpha03
、androidx.activity:activity-compose:1.6.0-alpha03
和 androidx.activity:activity-ktx:1.6.0-alpha03
。
- 注意:此版本将仅编译针对 Android 13 开发者 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 开发者预览版 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
现在支持使用CreationExtras
,即使它已使用SavedStateRegistryOwner
初始化。如果提供了额外信息,则会忽略初始化的参数。(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
传递给活动by viewModels()
函数(I6a3e6、b/217600303)
版本 1.5.0-alpha02
2022 年 2 月 9 日
androidx.activity:activity:1.5.0-alpha02
、androidx.activity:activity-compose:1.5.0-alpha02
和 androidx.activity:activity-ktx:1.5.0-alpha02
发布。版本 1.5.0-alpha02 包含这些提交。
新功能
ComponentActivity
现在实现了OnPictureInPictureModeChangedProvider
接口,以允许任何组件接收画中画模式更改事件。(I9f567)ComponentActivity
现在实现了OnMultiWindowModeChangedProvider
接口,以允许任何组件接收多窗口模式更改事件。(I62d91)
版本 1.5.0-alpha01
2022 年 1 月 26 日
androidx.activity:activity:1.5.0-alpha01
、androidx.activity:activity-compose:1.5.0-alpha01
和 androidx.activity:activity-ktx:1.5.0-alpha01
发布。版本 1.5.0-alpha01 包含这些提交。
新功能
ComponentActivity
现在与 ViewModel CreationExtras 集成,作为 Lifecycle2.5.0-alpha01
的一部分引入。(Ie7e00、b/207012584)- 添加了
ComponentDialog
,它是Dialog
的一个子类,包含一个OnBackPressedDispatcher
,当对话框可见时按下系统后退按钮时,将调用该子类。重要的是,此子类还设置了ViewTreeOnBackPressedDispatcherOwner
,允许视图以通用方式检索正确的调度程序,无论它是否存在于ComponentActivity
或ComponentDialog
中。(I8a1bc) ComponentActivity
现在实现了新的OnNewIntentProvider
接口,以允许任何组件接收这些事件。(If1f8b)ComponentActivity
现在实现了新的OnConfigurationChangedProvider
接口,以允许任何组件接收这些事件。(If623b)ComponentActivity
现在实现了新的OnTrimMemoryProvider
接口,以允许任何组件接收这些事件。(Ia9295)
API 更改
ActivityResultContracts.CreateDocument
的无参数构造函数已被弃用,并替换为一个新的构造函数,该构造函数需要一个具体的 MIME 类型(例如,"image/png"
),这是Intent.ACTION_CREATE_DOCUMENT
所需的。(I2bec6)- 现在可以通过
ViewTreeOnBackPressedDispatcherOwner
检索与 View 关联的OnBackPressedDispatcherOwner
,而不是依赖于转换Context
。(I74685)
错误修复
- 修复了在
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)
文档更新
- 现在由 活动结果 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)
}
行为变更
- 当尝试对未注册或已取消注册的
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
扩展方法,用于在活动中托管 Jetpack Compose UI,以及用于与ComponentActivity
API 交互以处理系统后退按钮和活动结果 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
的不稳定版本的 Fragment 将不再抛出错误的 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)
错误修复
- 如果活动
STOPPED
,然后再次STARTED
,并且其他回调已与 LifecycleOwner 关联,则BackHandler
现在将正确拦截后退按下操作。(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
现在确保正在进行的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
函数,用于在 composable 中获取来自 Activity 的结果。(Ia7851,b/172690553)
API 更改
LocalOnBackPressedDispatcherOwner
现在有一个provides
函数,可与CompositionLocalProvider
一起使用,替换asProvidableCompositionLocal()
API。(I45d24)
版本 1.3.0-alpha02
2021 年 2 月 10 日
androidx.activity:activity:1.3.0-alpha02
、androidx.activity:activity-compose:1.3.0-alpha02
和 androidx.activity:activity-ktx:1.3.0-alpha02
已发布。 版本 1.3.0-alpha02 包含这些提交。
错误修复
- 修复了 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
现在避免了在从ActivityResultContract
启动Intent
时出现ClassNotFoundException
,该ActivityResultContract
之前作为另一个Intent
中的额外信息保存。(Ieff05,b/182906230)
依赖项更新
- Activity 现在依赖于 Lifecycle
2.3.1
。
版本 1.2.1
版本 1.2.1
2021 年 3 月 10 日
androidx.activity:activity:1.2.1
和 androidx.activity:activity-ktx:1.2.1
已发布。 版本 1.2.1 包含这些提交。
错误修复
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
,它允许您处理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 作为LifecycleOwner
、ViewModelStoreOwner
和SavedStateRegistryOwner
返回,用于直接添加到ComponentActivity
的任何 View。
- reportFullyDrawn() 回退 -
Activity
的reportFullyDrawn()
方法已在ComponentActivity
中回退,使其适用于所有 API 级别,修复了 API 19 上的崩溃问题,并为所有 API 级别添加了此方法的追踪。
版本 1.2.0-rc01
2020 年 12 月 16 日
androidx.activity:activity:1.2.0-rc01
和 androidx.activity:activity-ktx:1.2.0-rc01
已发布。 版本 1.2.0-rc01 包含这些提交。
错误修复
外部贡献
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
注册时,Activity Result 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)
行为变更
- 当尝试使用
LifecycleOwner
调用register()
时,ActivityResultRegistry
现在会抛出IllegalStateException
,该LifecycleOwner
的Lifecycle
已经达到STARTED
。 (b/165435866)
文档更新
ContextAware
文档链接到LifecycleOwner
,以突出显示Lifecycle
回调作为创建和销毁事件的适当位置。 (aosp/1414152)
版本 1.2.0-alpha08
2020 年 8 月 19 日
androidx.activity:activity:1.2.0-alpha08
和 androidx.activity:activity-ktx:1.2.0-alpha08
已发布。 版本 1.2.0-alpha08 包含这些提交。
新功能
ComponentActivity
现在实现了ContextAware
,允许您添加一个或多个OnContextAvailableListener
实例,这些实例将在基本Activity.onCreate()
之前接收回调。 (b/161390636)- 一个挂起式 Kotlin 扩展
withContextAvailable()
允许您在 Context 可用时运行一个非挂起式代码块并返回结果。 (I8290c) - 此 API 由 Fragment 1.3.0-alpha08 中的
FragmentActivity
用于恢复FragmentManager
的状态。添加到FragmentActivity
的子类的任何侦听器都将在该侦听器之后运行。 (I513da) - 此 API 由 AppCompat 1.3.0-alpha02 中的
AppCompatActivity
使用。添加到AppCompatActivity
的子类的任何侦听器都将在该侦听器之后运行。 (I513da)
- 一个挂起式 Kotlin 扩展
错误修复
- 修复了
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 包含这些提交。
新功能
- 添加了对来自 Lifecycle
2.3.0-alpha03
的ViewTreeViewModelStoreOwner
和来自 SavedState1.1.0-alpha01
的ViewTreeSavedStateRegistryOwner
的支持,在ComponentActivity
中使用View
时。 (aosp/1297993, aosp/1300264)
API 更改
TakePicture
合同现在返回一个boolean
值指示成功,而不是缩略图Bitmap
,因为在将图像写入提供的Uri
时,相机应用很少支持此功能。 (b/154302879)ActivityResultLauncher
上的invoke()
扩展已删除,取而代之的是显式使用launch()
,以便更好地指示这些是异步操作。已将launch
的 Kotlin 扩展添加到androidx.activity.result
包中,用于ActivityResultLauncher<Void>
和ActivityResultLauncher<Unit>
,从而无需分别传入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) - Activity Result 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
模块包含一个用于访问 ViewModel 的by viewModels
Kotlin 属性扩展。当您从 Fragment1.1.0
中包含fragment-ktx
时,会自动包含此模块。 - OnBackPressedDispatcher:作为覆盖
onBackPressed()
的可组合替代方案,您现在可以从任何LifecycleOwner
(例如片段)注册一个OnBackPressedCallback
来拦截系统后退按钮事件。activity-ktx
中添加了带接收器的 lambda 版本addCallback
。有关更多详细信息,请参阅 提供自定义后退导航文档。 - onRetainCustomNonConfigurationInstance 已弃用:
onRetainCustomNonConfigurationInstance()
和相关的getLastCustomNonConfigurationInstance()
API 已弃用。强烈建议使用 ViewModel 来存储非配置状态,因为它们提供了一种适用于任何ViewModelStoreOwner
的可组合解决方案,这使得保留对象的拥有权清晰明了,并提供了一个onCleared()
回调,用于在活动最终销毁时清理资源。
版本 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 更改
- 重大更改:先前已弃用的
addOnBackPressedCallback
和removeOnBackPressedCallback
方法已从ComponentActivity
中删除。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()
并可以访问isEnabled
和remove()
的 lambda。(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
存储需要在配置更改后继续存在的对象。