Activity

访问基于 Activity 构建的可组合 API。
最新更新 稳定版 候选版本 Beta 版 Alpha 版
2025 年 6 月 4 日 1.10.1 1.11.0-rc01 - 1.12.0-alpha02

声明依赖项

要添加对 Activity 的依赖项,您必须将 Google Maven 代码库添加到您的项目中。请阅读Google 的 Maven 代码库以了解详情。

在应用或模块的 build.gradle 文件中添加所需工件的依赖项

Groovy

dependencies {
    def activity_version = "1.10.1"

    // Java language implementation
    implementation "androidx.activity:activity:$activity_version"
    // Kotlin
    implementation "androidx.activity:activity-ktx:$activity_version"
}

Kotlin

dependencies {
    val activity_version = "1.10.1"

    // Java language implementation
    implementation("androidx.activity:activity:$activity_version")
    // Kotlin
    implementation("androidx.activity:activity-ktx:$activity_version")
}

有关依赖项的更多信息,请参阅添加构建依赖项

反馈

您的反馈有助于改进 Jetpack。如果您发现新问题或有改进此库的建议,请告诉我们。在创建新问题之前,请查看此库中的现有问题。您可以通过点击星形按钮为现有问题投票。

创建新问题

有关更多信息,请参阅问题跟踪器文档

版本 1.12

版本 1.12.0-alpha02

2025 年 6 月 4 日

androidx.activity:activity:1.12.0-alpha02androidx.activity:activity-compose:1.12.0-alpha02androidx.activity:activity-ktx:1.12.0-alpha02 已发布。版本 1.12.0-alpha02 包含这些提交

Bug 修复

  • 来自NavigationEvent 1.0.0-alpha02:修复了由于同时修改内部可关闭列表而在调用 NavigationEventCallback.remove() 时可能发生的 ConcurrentModificationException。(I63066

版本 1.12.0-alpha01

2025 年 5 月 20 日

androidx.activity:activity:1.12.0-alpha01androidx.activity:activity-compose:1.12.0-alpha01androidx.activity:activity-ktx:1.12.0-alpha01 已发布。版本 1.12.0-alpha01 包含这些提交

新功能

  • ComponentActivityComponentDialog 已通过 NavigationEventDispatcherOwner API 集成到NavigationEvent 1.0.0-alpha01。您现在可以通过 navigationEventDispatcher 字段从 ComponentActivity 中检索 NavigationEventDispatcher。由于 OnBackPressedDispatcher 已在新库的基础上重写,因此所有以前的用法都应继续正常工作。今后您应使用 NavigationEventDispatcherNavigationEventCallback。(Ib8eedI6cc44Ib7724I9a0f7b/412597031b/415028038b/412596729b/412597140b/412596012

版本 1.11

版本 1.11.0-rc01

2025 年 4 月 23 日

androidx.activity:activity:1.11.0-rc01androidx.activity:activity-compose:1.11.0-rc01androidx.activity:activity-ktx:1.11.0-rc01 已发布。版本 1.11.0-rc01 包含这些提交

版本 1.11.0-beta01

2025 年 4 月 9 日

androidx.activity:activity:1.11.0-beta01androidx.activity:activity-compose:1.11.0-beta01androidx.activity:activity-ktx:1.11.0-beta01 已发布。版本 1.11.0-beta01 包含这些提交

版本 1.11.0-alpha02

2025 年 3 月 26 日

androidx.activity:activity:1.11.0-alpha02androidx.activity:activity-compose:1.11.0-alpha02androidx.activity:activity-ktx:1.11.0-alpha02 已发布。版本 1.11.0-alpha02 包含这些提交

API 变更

  • 将 Android 16 Beta03 中的新 EDGE_NONEframeTimeMillis 集成到 OnBackPressedCallbackhandleOnBackStartedhandleOnBackProgressed 函数提供的 BackEventCompat 中。

依赖项更新

版本 1.11.0-alpha01

2025 年 3 月 12 日

androidx.activity:activity:1.11.0-alpha01androidx.activity:activity-compose:1.11.0-alpha01androidx.activity:activity-ktx:1.11.0-alpha01 已发布。版本 1.11.0-alpha01 包含这些提交

新功能

  • MediaCapabilities API 添加到 PickVisualMediaRequest,以允许应用指定其媒体功能,例如支持的 HDR 类型。(Ic3ee7

版本 1.10

版本 1.10.1

2025 年 2 月 26 日

androidx.activity:activity:1.10.1androidx.activity:activity-compose:1.10.1androidx.activity:activity-ktx:1.10.1 已发布。版本 1.10.1 包含这些提交

Bug 修复

  • ViewTree OnBackPressedDispatcherOwnersFullyDrawnReporterOwners 现在可以通过视图的分离父级(例如 ViewOverlay)进行解析。有关分离视图父级的更多信息,请参阅核心库的版本说明或 ViewTree.setViewTreeDisjointParent 中的文档。(Ie7750

版本 1.10.0

2025 年 1 月 15 日

androidx.activity:activity:1.10.0androidx.activity:activity-compose:1.10.0androidx.activity:activity-ktx:1.10.0 已发布。版本 1.10.0 包含这些提交

自 1.9.0 以来的重要变更

  • PhotoPicker 现在允许按顺序选择图片,并选择初始可见的标签页(相册或图片)。
  • 触发照片选择器的 PickVisualMediaPickMultipleVisualMedia Activity Result 合同不再在系统照片选择器不可用时直接委托给 Google Play 服务,而是使用公共的 ACTION_SYSTEM_FALLBACK_PICK_IMAGES 操作和相关额外数据,为 OEM 和系统应用提供一致的照片选择器体验作为回退方案。
  • 新的 LocalActivity 组合本地提供当前范围的 Activity,消除了开发者从 LocalContext 获取 Activity 的需要。

版本 1.10.0-rc01

2024 年 12 月 11 日

androidx.activity:activity:1.10.0-rc01androidx.activity:activity-compose:1.10.0-rc01androidx.activity:activity-ktx:1.10.0-rc01 已发布。版本 1.10.0-rc01 包含这些提交

Bug 修复

  • 修复了在 PredictiveBackHandler 处于活动状态时更改启用状态会立即中断回调的问题。现在,无论启用状态如何变化,它都会完成当前回调。(Ib8719

版本 1.10.0-beta01

2024 年 11 月 13 日

androidx.activity:activity:1.10.0-beta01androidx.activity:activity-compose:1.10.0-beta01androidx.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-alpha03androidx.activity:activity-compose:1.10.0-alpha03androidx.activity:activity-ktx:1.10.0-alpha03 已发布。版本 1.10.0-alpha03 包含这些提交

API 变更

  • 新增 LocalActivity 组合本地,为当前范围提供 Activity,从而消除了开发者从 LocalContext 获取 Activity 的需求。它还附带了一个新的 lint 规则,用于检查 LocalContext 何时被错误地强制转换为 Activity。(I7746ab/283009666

Bug 修复

  • 来自Activity 1.9.3PredictiveBackHandler 在处理程序被禁用后将不再触发其回调。这将修复 Navigation Compose 中的 NavHost 会抛出 IndexOutOfBoundsException 的问题。(I3f75eb/365027664b/340202286

依赖项更新

  • Activity Compose 现在依赖于 Compose Runtime 1.7.0。(I7746ab/283009666

版本 1.10.0-alpha02

2024 年 9 月 4 日

androidx.activity:activity:1.10.0-alpha02androidx.activity:activity-compose:1.10.0-alpha02androidx.activity:activity-ktx:1.10.0-alpha02 已发布。版本 1.10.0-alpha02 包含这些提交

行为变更

  • 触发照片选择器的 PickVisualMediaPickMultipleVisualMedia Activity Result 合同不再在系统照片选择器不可用时直接委托给 Google Play 服务,而是使用公共的 ACTION_SYSTEM_FALLBACK_PICK_IMAGES 操作和相关额外数据,为 OEM 和系统应用提供一致的照片选择器体验作为回退方案。对于安装了最新版 Google Play 服务的设备,这应该不会影响用户体验。(I3513d

Bug 修复

  • 移除了对新平台 API 访问的手动概要,因为在使用 AGP 7.3 或更高版本(例如 R8 版本 3.3)的 R8 时,以及在使用 AGP 8.1 或更高版本(例如 D8 版本 8.1)的所有构建中,这都会通过 API 建模自动发生。不使用 AGP 的客户端建议更新到 D8 8.1 或更高版本。有关更多详细信息,请参阅本文。(I9496cb/345472586
  • 来自Activity 1.9.2:修复了 Activity Compose PredictiveBackHandler API 在禁用帧后仍会继续处理系统返回手势的问题,这可能导致 Navigation Compose 等库在返回堆栈为空时也处理返回,从而抛出 IndexOutOfBoundsException。(Ie3301b/340202286
  • 来自Activity 1.9.1:修复了 PredictiveBackHandler 的一个问题,即在执行系统返回后,尝试从 OnBackPressedDispatcher 执行 onBackPressed 会失败。(I5f1f8

版本 1.10.0-alpha01

2024 年 6 月 26 日

androidx.activity:activity:1.10.0-alpha01androidx.activity:activity-compose:1.10.0-alpha01androidx.activity:activity-ktx:1.10.0-alpha01 已发布。此版本在内部分支中开发。

新功能

  • 新增对 Android V 中引入的 PhotoPicker 新功能的支持,包括能够按顺序选择图像以及选择初始显示的选项卡(相册或图像)。

版本 1.9

版本 1.9.3

2024 年 10 月 16 日

androidx.activity:activity:1.9.3androidx.activity:activity-compose:1.9.3androidx.activity:activity-ktx:1.9.3 已发布。版本 1.9.3 包含这些提交

Bug 修复

  • PredictiveBackHandler 在处理程序被禁用后将不再触发其回调。这将修复 Navigation Compose 中的 NavHost 会抛出 IndexOutOfBoundsException 的问题。(I3f75eb/340202286

版本 1.9.2

2024 年 9 月 4 日

androidx.activity:activity:1.9.2androidx.activity:activity-compose:1.9.2androidx.activity:activity-ktx:1.9.2 已发布。版本 1.9.2 包含这些提交

Bug 修复

  • 修复了 Activity Compose PredictiveBackHandler API 在禁用帧后仍会继续处理系统返回手势的问题,这可能导致 Navigation Compose 等库在返回堆栈为空时也处理返回,从而抛出 IndexOutOfBoundsException。(Ie3301b/340202286

版本 1.9.1

2024 年 7 月 24 日

androidx.activity:activity:1.9.1androidx.activity:activity-compose:1.9.1androidx.activity:activity-ktx:1.9.1 已发布。版本 1.9.1 包含这些提交

Bug 修复

  • 修复了 PredictiveBackHandler 的一个问题,即在执行系统返回后,尝试从 OnBackPressedDispatcher 执行 onBackPressed 会失败。(I5f1f8

版本 1.9.0

2024 年 4 月 17 日

androidx.activity:activity:1.9.0androidx.activity:activity-compose:1.9.0androidx.activity:activity-ktx:1.9.0 已发布。版本 1.9.0 包含这些提交

自 1.8.0 以来的重要变更

  • ComponentActivity 现在实现 OnUserLeaveHintProvider,以允许组件为 onUserLeaveHint 事件提供回调。
  • OnBackPressedCallbackBackHandlerPredictiveBackHandler API 现在在处理返回时调用 onBackPressedDispatcher.onBackPressed() 时会发出警告,因为这总是会破坏预测返回动画。有关详细信息,请参阅最佳实践指南
  • Activity API 的其余部分已用 Kotlin 重写,并且以前在 activity-ktx 中可用的所有扩展都已移至 activityactivity-ktx 现在完全为空。
    • 作为将 ActivityResultLauncher 转换为 Kotlin 的一部分,getContract 方法现在是一个抽象的 Kotlin 属性。这是一个二进制兼容的更改,但如果您的 ActivityResultLauncher 实现是用 Kotlin 编写的,则会破坏源兼容性。

版本 1.9.0-rc01

2024 年 4 月 3 日

androidx.activity:activity:1.9.0-rc01androidx.activity:activity-compose:1.9.0-rc01androidx.activity:activity-ktx:1.9.0-rc01 已发布。版本 1.9.0-rc01 包含这些提交

依赖项更新

版本 1.9.0-beta01

2024 年 3 月 20 日

androidx.activity:activity:1.9.0-beta01androidx.activity:activity-compose:1.9.0-beta01androidx.activity:activity-ktx:1.9.0-beta01 已发布。版本 1.9.0-beta01 包含这些提交

Bug 修复

  • 修复了 Activity 1.9.0-alpha02 中引入的 Activity 启动性能回归问题,该问题是由于在 Activity 创建过程中调用 OnBackPressedDispatcher 引起的。(Ie75e3

版本 1.9.0-alpha03

2024 年 2 月 7 日

androidx.activity:activity:1.9.0-alpha03androidx.activity:activity-compose:1.9.0-alpha03androidx.activity:activity-ktx:1.9.0-alpha03 已发布。版本 1.9.0-alpha03 包含这些提交。

Lint 警告

Bug 修复

  • 如果在一个已经运行的预测返回手势期间从系统发送返回事件,则当前运行的预测返回手势将被取消,并且新的返回事件将接管以开始新的预测返回手势。(I3482e
  • 修复了首次从后台线程访问 ComponentActivity 中的 onBackPressedDispatcher 时发生的崩溃。现在可以在任何线程上安全地访问 onBackPressedDispatcher。(I79955

版本 1.9.0-alpha02

2024 年 1 月 24 日

androidx.activity:activity:1.9.0-alpha02androidx.activity:activity-compose:1.9.0-alpha02androidx.activity:activity-ktx:1.9.0-alpha02 已发布。版本 1.9.0-alpha02 包含这些提交。

Kotlin 转换

  • ActivityResultRegistry 已用 Kotlin 重写。这确保了传递给 register 的契约泛型的可空性将正确地传递给返回给您的 ActivityResultLauncher。(I121f0
  • ActivityResult 已用 Kotlin 重写。支持解构为 resultCodedata 字段的 ActivityResult Kotlin 扩展已从 activity-ktx 移至 activity。(I0565a
  • ComponentActivitytrackPipAnimationHintViewby viewModels() 的 Kotlin 扩展已从 activity-ktx 移至 activityactivity-ktx 工件现在完全为空。(I0a444

Bug 修复

  • enableEdgeToEdge API 现在围绕所有显示屏切口绘制。(a3644b, b/311173461
  • 来自 Activity 1.8.2:修复了传递给 Photo Picker Activity Contract 的 ACTION_SYSTEM_FALLBACK_PICK_IMAGES 的额外数据,以正确传递 EXTRA_SYSTEM_FALLBACK_PICK_IMAGES_MAX 键,而不是使用键为 "com.google.android.gms.provider.extra.PICK_IMAGES_MAX" 的额外数据。强烈建议作为实现系统回退 Photo Picker 的 OEM 支持这两种额外数据,以确保最广泛的兼容性。(I96a00

版本 1.9.0-alpha01

2023 年 11 月 29 日

androidx.activity:activity:1.9.0-alpha01androidx.activity:activity-compose:1.9.0-alpha01androidx.activity:activity-ktx:1.9.0-alpha01 已发布。版本 1.9.0-alpha01 包含这些提交。

新功能

  • ComponentActivity 现在实现 OnUserLeaveHintProvider,以允许组件为 onUserLeaveHint 事件提供回调。(I54892

API 变更

  • ComponentActivity 已用 Kotlin 重写。(I14f31
  • ActivityResultCaller 已用 Kotlin 重写。(Ib02e4
  • ActivityResultLauncher 已用 Kotlin 重写。作为该转换的一部分,getContract 方法现在是一个抽象的 Kotlin 属性。这是一个二进制兼容的更改,但如果您的 ActivityResultLauncher 实现是用 Kotlin 编写的,则会破坏源兼容性。(Id4615
  • PickVisualMediaRequest 现在具有与 PickVisualMedia Activity Result contract 相同的最低 API 级别 19。(Id6e21

依赖项更新

版本 1.8

版本 1.8.2

2023 年 12 月 13 日

androidx.activity:activity:1.8.2androidx.activity:activity-compose:1.8.2androidx.activity:activity-ktx:1.8.2 已发布。版本 1.8.2 包含这些提交。

Bug 修复

  • 修复了传递给 Photo Picker Activity Contract 的 ACTION_SYSTEM_FALLBACK_PICK_IMAGES 的额外数据,以正确传递 EXTRA_SYSTEM_FALLBACK_PICK_IMAGES_MAX 键,而不是使用键为 "com.google.android.gms.provider.extra.PICK_IMAGES_MAX" 的额外数据。强烈建议作为实现系统回退 Photo Picker 的 OEM 支持这两种额外数据,以确保最广泛的兼容性。(I96a00

版本 1.8.1

2023 年 11 月 15 日

androidx.activity:activity:1.8.1androidx.activity:activity-compose:1.8.1androidx.activity:activity-ktx:1.8.1 已发布。版本 1.8.1 包含这些提交。

Bug 修复

  • OnBackPressedDispatcher 现在即使在处理返回手势时添加了新的 OnBackPressedCallback,也会继续分派到正确的 OnBackPressedCallback。(Id0ff6

版本 1.8.0

2023 年 10 月 4 日

androidx.activity:activity:1.8.0androidx.activity:activity-compose:1.8.0androidx.activity:activity-ktx:1.8.0 已发布。版本 1.8.0 包含这些提交。

自 1.7.0 以来的重要变更

  • 预测返回 - OnBackPressedCallback 现在提供新的预测返回回调,用于处理返回手势的开始、手势全程的进度以及返回手势的取消,此外还有之前用于提交返回手势时的 handleOnBackPressed() 回调。这还包括 PredictiveBackHandler Composable,用于在 Activity Compose 中处理预测返回手势事件。它提供一个 BackEventCompat 对象流,必须在您提供的 suspending lambda 中收集。
  PredictiveBackHandler { progress: Flow<BackEventCompat> ->
    // code for gesture back started
    try {
      progress.collect { backEvent ->
      // code for progress
    }
    // code for completion
    } catch (e: CancellationException) {
      // code for cancellation
    }
  }

ComponentActivity.onBackPressed() 现已弃用,取而代之的是用于处理返回的 API。开发者现在应该使用 OnBackPressedDispatcher,而不是覆盖此方法。

  • EdgeToEdge - ComponentActivity.enableEdgeToEdge() 已添加,以便以向后兼容的方式轻松设置全屏显示。

版本 1.8.0-rc01

2023 年 9 月 20 日

androidx.activity:activity:1.8.0-rc01androidx.activity:activity-compose:1.8.0-rc01androidx.activity:activity-ktx:1.8.0-rc01 已发布。版本 1.8.0-rc01 包含这些提交。

版本 1.8.0-beta01

2023 年 9 月 6 日

androidx.activity:activity:1.8.0-beta01androidx.activity:activity-compose:1.8.0-beta01androidx.activity:activity-ktx:1.8.0-beta01 已发布。版本 1.8.0-beta01 包含这些提交。

文档改进

版本 1.8.0-alpha07

2023 年 8 月 23 日

androidx.activity:activity:1.8.0-alpha07androidx.activity:activity-compose:1.8.0-alpha07androidx.activity:activity-ktx:1.8.0-alpha07 已发布。版本 1.8.0-alpha07 包含这些提交。

新功能

  • Activity Compose 添加了一个新的 PredictiveBackHandler Composable,用于处理预测返回手势事件。它提供了一个 BackEventCompat 对象 Flow,必须在您提供的 suspending lambda 中收集。

    PredictiveBackHandler { progress: Flow<BackEventCompat> ->
      // code for gesture back started
      try {
        progress.collect { backEvent ->
        // code for progress
      }
      // code for completion
      } catch (e: CancellationException) {
        // code for cancellation
      }
    }
    

    它还通过 lint 规则提供编译时警告,以确保 Flow 调用 collect()。(Id2773b/294884345

  • ComponentActivity 中的 onBackPressedDispatcher 现在是惰性初始化的,因此只有在需要时才会创建。(I0bf8e

Bug 修复

  • ComponentActivity 在 Android 13 上接收到 onBackPressed() 回调且 Activity 已 DESTROYED 时,将不再显示 NPE。(Idb055b/291869278
  • 删除了实验性 isAtLeastU() API 的使用。(Ie9117b/289269026

版本 1.8.0-alpha06

2023 年 6 月 21 日

androidx.activity:activity:1.8.0-alpha06androidx.activity:activity-compose:1.8.0-alpha06androidx.activity:activity-ktx:1.8.0-alpha06 已发布。版本 1.8.0-alpha06 包含这些提交。

新功能

  • OnBackPressedDispatcher 现在在预测返回手势期间移除任何回调时,会正确取消这些回调。(I3f90f

API 变更

  • 当将 SystemBarStyle.auto 传递给 enableEdgeToEdge API 时,您现在可以覆盖 detectDarkMode lambda 参数,以提供自定义逻辑来检测夜间模式。(aosp/2546393b/278263793

版本 1.8.0-alpha05

2023 年 6 月 7 日

androidx.activity:activity:1.8.0-alpha05androidx.activity:activity-compose:1.8.0-alpha05androidx.activity:activity-ktx:1.8.0-alpha05 已发布。此版本是在内部分支中开发的。

API 变更

  • Activity 现在提供了一个 BackEventCompat 类,它是一个与框架 BackEvent 类解耦的向后兼容的 BackEvent 版本。
  • 重大变更:OnBackPressedCallbackhandleOnBackStartedhandleOnBackProgressed 方法现在接收 androidx.activity.BackEventCompat 实例,而不是框架 android.window.BackEvent 类。OnBackPressedDispatcher 上等效的 @VisibleForTesting API 也已更新。
  • OnBackPressedDispatcher 的构造函数现在接受一个可选的 Consumer<Boolean> 实例,该实例允许调度器的所有者在启用的回调数量从零变为非零或反之亦然时接收回调。

Bug 修复

版本 1.8.0-alpha04

2023 年 5 月 10 日

androidx.activity:activity:1.8.0-alpha04androidx.activity:activity-compose:1.8.0-alpha04androidx.activity:activity-ktx:1.8.0-alpha04 已发布。此版本从内部分支发布。

Bug 修复

  • 来自 Activity 1.7.1:- 当将 ComponentActivityActivityScenario 一起使用时,ReportFullyDrawExecuter 不再泄漏。(Id2ff2b/277434271

版本 1.8.0-alpha03

2023 年 4 月 12 日

androidx.activity:activity:1.8.0-alpha03androidx.activity:activity-compose:1.8.0-alpha03androidx.activity:activity-ktx:1.8.0-alpha03 已发布。此版本从内部分支发布。

新功能

  • 添加了 ComponentActivity.setUpEdgeToEdge(),以便以向后兼容的方式轻松设置全屏显示。

API 变更

  • ComponentActivity.onBackPressed() 现已弃用,取而代之的是用于处理返回的 API。开发者现在应该使用 OnBackPressedDispatcher,而不是覆盖此方法。(Ibce2fb/271596918
  • ComponentDialogComponentActivity 现在包含公共 API initViewTreeOwners(),用于在设置内容视图之前初始化所有视图树所有者。(Ibdce0b/261314581

Bug 修复

  • 修复了 Fragments 错误地使 MenuHosts 失效并导致 Activity 中其他菜单出现意外行为的问题。(I9404eb/244336571

其他变更

  • ActivityResultRegister 现在使用 Kotlin Random 而不是 Java。(I4d98fb/272096025

版本 1.8.0-alpha02

2023 年 3 月 8 日

androidx.activity:activity:1.8.0-alpha02androidx.activity:activity-compose:1.8.0-alpha02androidx.activity:activity-ktx:1.8.0-alpha02 已发布。从内部分支开发。

依赖项更新

版本 1.8.0-alpha01

2023 年 2 月 8 日

androidx.activity:activity:1.8.0-alpha01androidx.activity:activity-compose:1.8.0-alpha01androidx.activity:activity-ktx:1.8.0-alpha01 已发布。此版本从内部分支构建。

新功能

  • OnBackPressedCallback 类现在包含新的预测返回进度回调,用于处理返回手势的开始、手势全程的进度以及返回手势的取消,此外还有之前用于提交返回手势时的 handleOnBackPressed() 回调。

版本 1.7

版本 1.7.2

2023 年 5 月 24 日

androidx.activity:activity:1.7.2androidx.activity:activity-compose:1.7.2androidx.activity:activity-ktx:1.7.2 已发布。版本 1.7.2 包含这些提交。

Bug 修复

  • 修复了在调用 report 之前从屏幕导航走时 ReportDrawn 崩溃的问题。(Ic46f1b/260506820

版本 1.7.1

2023 年 4 月 19 日

androidx.activity:activity:1.7.1androidx.activity:activity-compose:1.7.1androidx.activity:activity-ktx:1.7.1 已发布。版本 1.7.1 包含这些提交。

Bug 修复

  • 当将 ComponentActivityActivityScenario 一起使用时,ReportFullyDrawExecuter 不再泄漏。(Id2ff2b/277434271

版本 1.7.0

2023 年 3 月 22 日

androidx.activity:activity:1.7.0androidx.activity:activity-compose:1.7.0androidx.activity:activity-ktx:1.7.0 已发布。版本 1.7.0 包含这些提交。

自 1.6.0 以来的重要变更

  • PickVisualMediaPickMultipleVisualMedia 中的 Photo Picker activity contract 已更新,包含一个额外的回退机制,用于在 MediaStore.ACTION_PICK_IMAGES 不可用时,允许 OEM 和系统应用(例如 Google Play 服务)通过实现回退操作,在更广泛的 Android 设备和 API 级别上提供一致的 Photo Picker 体验。如果此回退机制可用,Photo Picker 将会使用它,然后再回退到使用 Intent.ACTION_OPEN_DOCUMENT,后者仍支持所有 API 19 及更高版本的设备。
  • ComponentDialog 现在实现 SavedStateRegistryOwner 并可以访问其自己的 SavedStateRegistry,并为其 ViewTree 设置 SavedStateRegistryOwner。现在可以在 ComponentDialog 中使用 Jetpack Compose,因为它满足通过 ViewTree API 附加到 Window 的 LifecycleOwnerSavedStateRegistryOwner 要求。
  • IntentSenderRequest.Builder.setFlags() 现在允许您设置 Intent 中的多个标志,而不仅仅是一个标志。

Kotlin 转换

许多 Activity 类已转换为 Kotlin。所有转换后的类仍与以前的版本保持二进制兼容性。以下类对于用 Kotlin 编写的类存在源不兼容的更改:ActivityResultRegistryOwnerOnBackPressedDispatcherOwner

下表提供了新版 Activity 的源转换。

Activity 1.5 Activity 1.6
override fun getActivityResultRegistry() = activityResultRegistry override val activityResultRegistry = activityResultRegistry
override fun getOnBackPressedDispatcher() = onBackPressedDispatcher override val onBackPressedDispatcher = onBackPressedDispatcher

这些类也已转换为 Kotlin,但仍保持源兼容性:ContextAwareContextAwareHelperOnContextAvailableListenerIntentSenderRequestOnBackPressedDispatcher

FullyDrawnReporter API

ComponentActivity 现在提供了一个 FullyDrawnReporter 实例,允许多个组件报告何时准备好进行交互。ComponentActivity 将等待所有组件完成,然后代表您调用 reportFullyDrawn()。这些 API 会为您处理时间要求,无需在 onDraw 调用中调用它们。

鼓励使用这些 API 来实现:

  • 在启动完成时向 Android Runtime 发送信号,以确保多帧启动序列中运行的所有代码都包含在后台编译中并获得优先级。
  • 向 Macrobenchmark 和 Play Vitals 发送信号,说明您的应用程序何时应被视为完全绘制以用于启动指标,以便您可以跟踪性能。

添加了三个 Activity Compose API,以便更方便地从单个可组合项中使用 FullyDrawnReporter

  • ReportDrawn 指示您的可组合项立即准备好进行交互。
  • ReportDrawnWhen 接受一个谓词(例如,list.count > 0)来指示您的可组合项何时准备好进行交互。
  • ReportDrawnAfter 接受一个挂起方法,当它完成时,表示您已准备好进行交互。

依赖项更新

版本 1.7.0-rc01

2023 年 3 月 8 日

androidx.activity:activity:1.7.0-rc01androidx.activity:activity-compose:1.7.0-rc01androidx.activity:activity-ktx:1.7.0-rc01 已发布。版本 1.7.0-rc01 包含这些提交。

依赖项更新

版本 1.7.0-beta02

2023 年 2 月 22 日

androidx.activity:activity:1.7.0-beta02androidx.activity:activity-compose:1.7.0-beta02androidx.activity:activity-ktx:1.7.0-beta02 已发布。版本 1.7.0-beta02 包含这些提交。

API 变更

  • PickVisualMediaPickMultipleVisualMedia contracts 在 MediaStore.ACTION_PICK_IMAGES 不可用时作为回退机制所使用的 action 和 extra 现在是公共常量,为希望提供一致照片选择器体验的 OEM 和系统应用提供了 API 稳定性。此回退机制的实现仍然仅限于系统应用。(Icd320

版本 1.7.0-beta01

2023 年 2 月 8 日

androidx.activity:activity:1.7.0-beta01androidx.activity:activity-compose:1.7.0-beta01androidx.activity:activity-ktx:1.7.0-beta01 已发布。版本 1.7.0-beta01 包含这些提交。

新功能

  • IntentSenderRequest.Builder.setFlags() 现在允许您设置 Intent 中的多个标志,而不仅仅是一个标志。(Iac04c

Bug 修复

  • PickVisualMedia 在框架照片选择器不可用时的回退现在正确地将处理限制为设备系统映像中安装的应用程序。(If8ae6

Kotlin 转换

  • ActivityResultRegistryOwner 现在用 Kotlin 编写。对于用 Kotlin 编写的类来说,这是一个源不兼容的更改——您现在必须覆盖 activityResultRegistry 属性,而不是实现以前的 getActivityResultRegistry() 函数。(I0b00e
  • OnBackPressedDispatcherOwner 现在用 Kotlin 编写。对于用 Kotlin 编写的类来说,这是一个源不兼容的更改——您现在必须覆盖 onBackPressedDispatcher 属性,而不是实现以前的 getOnBackPressedDispatcher 函数。(Ia277d
  • ContextAwareContextAwareHelperOnContextAvailableListenerIntentSenderRequestOnBackPressedDispatcher 现在用 Kotlin 编写。(I1a73eIada92aosp/2410754I18ac7b/257291701

版本 1.7.0-alpha04

2023 年 1 月 25 日

androidx.activity:activity:1.7.0-alpha04androidx.activity:activity-compose:1.7.0-alpha04androidx.activity:activity-ktx:1.7.0-alpha04 已发布。版本 1.7.0-alpha04 包含这些提交。

新功能

  • PickVisualMediaPickMultipleVisualMedia Activity Result contracts 现在将在 Android 系统提供的照片选择器(例如,MediaStore.ACTION_PICK_IMAGES)不可用时,使用 Google Play 服务提供的照片选择器。仅检测 Android 系统提供的照片选择器的 isPhotoPickerAvailable() API 已弃用。建议使用新的 isPhotoPickerAvailable(Context) API,它将返回任一照片选择器是否可用。(I55be6

版本 1.7.0-alpha03

2023 年 1 月 11 日

androidx.activity:activity:1.7.0-alpha03androidx.activity:activity-compose:1.7.0-alpha03androidx.activity:activity-ktx:1.7.0-alpha03 已发布。版本 1.7.0-alpha03 包含这些提交。

新功能

  • ComponentDialog 现在实现 SavedStateRegistryOwner 并可以访问其自己的 SavedStateRegistry,并为其 ViewTree 设置 SavedStateRegistryOwner。现在可以在 ComponentDialog 中使用 Jetpack Compose,因为它满足通过 ViewTree API 附加到 Window 的 LifecycleOwnerSavedStateRegistryOwner 要求。(Idca17I73468 b/261162296

API 变更

  • 添加了一个 ReportDrawn 可组合项,它立即将活动标记为准备好调用 reportFullyDrawn。(Ic5b14b/259687964

Kotlin 转换

  • ActvitiyResultCallbackOnBackPressedCallback 类都已转换为 Kotlin,同时保持源和二进制兼容性。(Ifc5e5Ide1b0b/257291701

版本 1.7.0-alpha02

2022 年 10 月 24 日

androidx.activity:activity:1.7.0-alpha02androidx.activity:activity-compose:1.7.0-alpha02androidx.activity:activity-ktx:1.7.0-alpha02 已发布。版本 1.7.0-alpha02 包含这些提交。

Bug 修复

  • 来自 Activity 1.6.1:修复了 PickMultipleVisualMedia Activity Result contract 在 Android R 设备上使用 maxItems 的默认值时无法启动的问题。(Ie2776b/249182130

版本 1.7.0-alpha01

2022 年 10 月 5 日

androidx.activity:activity:1.7.0-alpha01androidx.activity:activity-compose:1.7.0-alpha01androidx.activity:activity-ktx:1.7.0-alpha01 已发布。版本 1.7.0-alpha01 包含这些提交。

FullyDrawnReporter API

ComponentActivity 现在提供了一个 FullyDrawnReporter 实例,允许多个组件报告何时准备好进行交互。ComponentActivity 将等待所有组件完成,然后代表您调用 reportFullyDrawn()。这些 API 会为您处理时间要求,无需在 onDraw 调用中调用它们。

鼓励使用这些 API 来实现:

  • 在启动完成时向 Android Runtime 发送信号,以确保多帧启动序列中运行的所有代码都包含在后台编译中并获得优先级。
  • 向 Macrobenchmark 和 Play Vitals 发送信号,说明您的应用程序何时应被视为完全绘制以用于启动指标,以便您可以跟踪性能。

添加了两个 Activity Compose API,以便更方便地从单个可组合项中使用 FullyDrawnReporter

  • ReportDrawnWhen 接受一个谓词(例如,list.count > 0)来指示您的可组合项何时准备好进行交互。
  • ReportDrawnAfter 接受一个挂起方法,当它完成时,表示您已准备好进行交互。

版本 1.6.1

版本 1.6.1

2022 年 10 月 24 日

androidx.activity:activity:1.6.1androidx.activity:activity-compose:1.6.1androidx.activity:activity-ktx:1.6.1 已发布。版本 1.6.1 包含这些提交。

Bug 修复

  • 修复了 PickMultipleVisualMedia Activity Result contract 在 Android R 设备上使用 maxItems 的默认值时无法启动的问题。(Ie2776b/249182130

版本 1.6.0

版本 1.6.0

2022 年 9 月 21 日

androidx.activity:activity:1.6.0androidx.activity:activity-compose:1.6.0androidx.activity:activity-ktx:1.6.0 已发布。版本 1.6.0 包含这些提交。

自 1.5.0 以来的重要变更

  • 添加了 ActivityResultContracts.PickVisualMediaActivityResultContracts.PickMultipleVisualMedia,用于提供向后兼容的 contract,在照片选择器可用时使用 MediaStore.ACTION_PICK_IMAGES,在不可用时使用 Intent.ACTION_OPEN_DOCUMENT
  • 将 Android 13 中的 OnBackInvokedCallback 集成到 ComponentActivityComponentDialog 提供的 OnBackPressedDispatchers 中。这确保了所有基于 OnBackPressedDispatcher 构建的 API 在启用预测返回手势时都能正常工作。

版本 1.6.0-rc02

2022 年 9 月 7 日

androidx.activity:activity:1.6.0-rc02androidx.activity:activity-compose:1.6.0-rc02androidx.activity:activity-ktx:1.6.0-rc02 已发布。版本 1.6.0-rc02 包含这些提交。

Bug 修复

  • OnBackPressedDispatcher 现在使用 PRIORITY_DEFAULT 而不是 PRIORITY_OVERLAY 注册 OnBackInvokedCallback。(I3901f
  • 扩展 ComponentActivity 的类现在将始终分派其两个 onMultiWindowModeChanged() 回调。(Ic4d85
  • launch 调用抛出任何 Exception 且回调未注册 LifecycleOwner 时,ActivityResultRegistry 将不再向 ActivityResultCallback 返回结果。(Ia7ff7b/238350794
  • ComponentActivity 现在将正确分派菜单调用,而无需在您的 activity 中调用 super 函数。(Ie33c5b/238057118

依赖项更新

版本 1.6.0-rc01

2022 年 8 月 24 日

androidx.activity:activity:1.6.0-rc01androidx.activity:activity-compose:1.6.0-rc01androidx.activity:activity-ktx:1.6.0-rc01 已发布。版本 1.6.0-rc01 包含这些提交。

Bug 修复

  • 在使用低于 33 的 SDK 版本时,初始化 OnBackPressedDispatcher 将不再导致 ClassVerificationError。(Ic32e1
  • 覆盖 ComponentActivityonPictureInPictureModeChanged() 回调的类现在将始终分派其回调。(Ib7fdb

版本 1.6.0-beta01

2022 年 8 月 10 日

androidx.activity:activity:1.6.0-beta01androidx.activity:activity-compose:1.6.0-beta01androidx.activity:activity-ktx:1.6.0-beta01 已发布。版本 1.6.0-beta01 包含这些提交。

API 变更

  • 已将 ComponentActivity 中已弃用的 startActivityForResultstartIntentSenderForResult 方法标记为 @NonNull,因为传递 null 总是会导致崩溃。(Id2a25b/231476082

Bug 修复

  • 来自 Activity 1.5.1:当 launch 调用抛出任何 Exception 且回调未注册 LifecycleOwner 时,ActivityResultRegistry 将不再向 ActivityResultCallback 返回结果。(Ia7ff7b/238350794
  • 来自 Activity 1.5.1ComponentActivity 现在将正确分派菜单调用到 onPrepareOptionMenu()onCreateOptionsMenu()onOptionsItemSelected() 覆盖,而无需调用 super 函数。(Ie33c5b/238057118

依赖项更新

版本 1.6.0-alpha05

2022 年 6 月 15 日

androidx.activity:activity:1.6.0-alpha05androidx.activity:activity-compose:1.6.0-alpha05androidx.activity:activity-ktx:1.6.0-alpha05 已发布。版本 1.6.0-alpha05 是在私人预发布分支中开发的,没有公共提交。

API 变更

  • minCompileSdk 现在是 33,以与 Tiramisu Beta 3 SDK 对齐。

Bug 修复

  • 修复了旧设备上执行 PickVisualMedia ActivityResultContract 的 SDK 扩展检查时发生的崩溃,使其现在应该在运行 Android 10 及更低版本的设备上与 ACTION_OPEN_DOCUMENT 配合使用。

版本 1.6.0-alpha04

2022 年 5 月 18 日

androidx.activity:activity:1.6.0-alpha04androidx.activity:activity-ktx:1.6.0-alpha04 已发布。

Bug 修复

  • 修复了 PickVisualMediaRequest 中的一个错误,即尝试通过 Builder 或顶级 Kotlin 函数创建请求会导致堆栈溢出。
  • 将 Android 13 Dev Beta 2 中的 OnBackInvokedCallback 集成到 ComponentDialog 提供的 OnBackPressedDispatcher 中。这确保了所有基于 OnBackPressedDispatcher 构建的 API 在启用预测返回手势时都能正常工作。

版本 1.6.0-alpha03

2022 年 4 月 27 日

androidx.activity:activity:1.6.0-alpha03androidx.activity:activity-compose:1.6.0-alpha03androidx.activity:activity-ktx:1.6.0-alpha03 已发布。

  • 注意:此版本仅针对 Android 13 Developer Beta 1 SDK 进行编译。

新功能

  • 添加了 ActivityResultContracts.PickVisualMediaActivityResultContracts.PickMultipleVisualMedia,用于提供向后兼容的 contract,在照片选择器可用时使用 MediaStore.ACTION_PICK_IMAGES,在不可用时使用 Intent.ACTION_OPEN_DOCUMENT
  • 将 Android 13 Dev Beta 1 中的 OnBackInvokedCallback 集成到 ComponentActivity 提供的 OnBackPressedDispatcher 中。这确保了所有基于 OnBackPressedDispatcher 构建的 API 在启用预测返回手势时都能正常工作。

版本 1.6.0-alpha01

2022 年 3 月 23 日

androidx.activity:activity:1.6.0-alpha01androidx.activity:activity-compose:1.6.0-alpha01androidx.activity:activity-ktx:1.6.0-alpha01 已发布。

  • 注意:此版本仅针对 Android 13 Developer Preview 2 SDK 进行编译。

新功能

  • 将 Android 13 Dev Preview 2 中的更改集成到 ComponentActivity 中。

版本 1.5.1

版本 1.5.1

2022 年 7 月 27 日

androidx.activity:activity:1.5.1androidx.activity:activity-compose:1.5.1androidx.activity:activity-ktx:1.5.1 已发布。版本 1.5.1 包含这些提交。

Bug 修复

  • launch() 调用抛出任何 Exception 且回调未注册 LifecycleOwner 时,ActivityResultRegistry 将不再向 ActivityResultCallback 返回结果。(Ia7ff7b/238350794

  • ComponentActivity 现在将正确分派菜单调用到 onPrepareOptionMenu()onCreateOptionsMenu()onOptionsItemSelected() 覆盖,而无需调用 super 函数。(Ie33c5b/238057118

依赖项更新

版本 1.5.0

版本 1.5.0

2022 年 6 月 29 日

androidx.activity:activity:1.5.0androidx.activity:activity-compose:1.5.0androidx.activity:activity-ktx:1.5.0 已发布。版本 1.5.0 包含这些提交。

自 1.4.0 以来的重要变更

  • ComponentDialog - ComponentDialogDialog 的子类,它包含一个 OnBackPressedDispatcher,当系统返回按钮被按下且对话框可见时,将调用该调度器。重要的是,此子类还会设置 ViewTreeOnBackPressedDispatcherOwner,允许视图以通用方式检索正确的调度器,无论它存在于 ComponentActivity 还是 ComponentDialog 中。
  • 回调接口 - ComponentActivity 现在实现了一组模块化回调接口,可以替代 Activity 回调使用。这些接口包括:OnNewIntentProviderOnConfigurationChangedProviderOnTrimMemoryProviderOnPictureInPictureModeChangedProviderOnMultiWindowModeChangedProvider
  • CreationExtras 集成 - ComponentActivity 现在能够通过 Lifecycle 2.5.0CreationExtras 提供一个无状态的 ViewModelProvider.Factory

其他变更

  • ActivityResultContracts.CreateDocument 的无参数构造函数已弃用,并替换为接受具体 MIME 类型(例如“image/png”)的新构造函数,这是 Intent.ACTION_CREATE_DOCUMENT 所要求的。

版本 1.5.0-rc01

2022 年 5 月 11 日

androidx.activity:activity:1.5.0-rc01androidx.activity:activity-compose:1.5.0-rc01androidx.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-beta01androidx.activity:activity-compose:1.5.0-beta01androidx.activity:activity-ktx:1.5.0-beta01 已发布。版本 1.5.0-beta01 包含这些提交。

依赖项更新

版本 1.5.0-alpha05

2022 年 4 月 6 日

androidx.activity:activity:1.5.0-alpha05androidx.activity:activity-compose:1.5.0-alpha05androidx.activity:activity-ktx:1.5.0-alpha05 已发布。版本 1.5.0-alpha05 包含这些提交。

Bug 修复

  • ComponentActivityonPanelClosed() 现在也调用 super onPanelClosed(),修复了 onContextMenuClosed 方法不会被调用的问题。(Ib6f77

版本 1.5.0-alpha04

2022 年 3 月 23 日

androidx.activity:activity:1.5.0-alpha04androidx.activity:activity-compose:1.5.0-alpha04androidx.activity:activity-ktx:1.5.0-alpha04 已发布。版本 1.5.0-alpha04 包含这些提交。

Bug 修复

  • SavedStateViewFactory 现在支持使用 CreationExtras,即使它已使用 SavedStateRegistryOwner 初始化。如果提供了 extras,则忽略初始化的参数。(I6c43bb/224844583

版本 1.5.0-alpha03

2022 年 2 月 23 日

androidx.activity:activity:1.5.0-alpha03androidx.activity:activity-compose:1.5.0-alpha03androidx.activity:activity-ktx:1.5.0-alpha03 已发布。版本 1.5.0-alpha03 包含这些提交。

API 变更

  • 您现在可以将 CreationExtras 传递给 activity 的 by viewModels() 函数。(I6a3e6b/217600303

版本 1.5.0-alpha02

2022 年 2 月 9 日

androidx.activity:activity:1.5.0-alpha02androidx.activity:activity-compose:1.5.0-alpha02androidx.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-alpha01androidx.activity:activity-compose:1.5.0-alpha01androidx.activity:activity-ktx:1.5.0-alpha01 已发布。版本 1.5.0-alpha01 包含这些提交。

新功能

  • ComponentActivity 现在与 ViewModel CreationExtras 集成,该功能作为 Lifecycle 2.5.0-alpha01 的一部分引入。(Ie7e00b/207012584
  • 添加了 ComponentDialog,它是 Dialog 的子类,包含一个 OnBackPressedDispatcher,当系统返回按钮被按下且对话框可见时,将调用该调度器。重要的是,此子类还会设置 ViewTreeOnBackPressedDispatcherOwner,允许视图以通用方式检索正确的调度器,无论它存在于 ComponentActivity 还是 ComponentDialog 中。(I8a1bc
  • ComponentActivity 现在实现新的 OnNewIntentProvider 接口,以允许任何组件接收这些事件。(If1f8b
  • ComponentActivity 现在实现新的 OnConfigurationChangedProvider 接口,以允许任何组件接收这些事件。(If623b
  • ComponentActivity 现在实现新的 OnTrimMemoryProvider 接口,以允许任何组件接收这些事件。(Ia9295

API 变更

  • ActivityResultContracts.CreateDocument 的无参数构造函数已弃用,并替换为接受具体 MIME 类型(例如,"image/png")的新构造函数,这是 Intent.ACTION_CREATE_DOCUMENT 所要求的。(I2bec6
  • 现在可以通过 ViewTreeOnBackPressedDispatcherOwner 检索与 View 关联的 OnBackPressedDispatcherOwner,而不是依赖于强制转换 Context。(I74685

Bug 修复

  • 修复了首次从 registerForActivityResult() 回调或作为 ComponentActivity init 的一部分添加的 LifecycleObserver 回调访问 ViewModel 时发生的崩溃。(Ife83f

版本 1.4.0

版本 1.4.0

2021 年 10 月 27 日

androidx.activity:activity:1.4.0androidx.activity:activity-compose:1.4.0androidx.activity:activity-ktx:1.4.0 已发布。版本 1.4.0 包含这些提交。

自 1.3.0 以来的重要变更

  • AndroidX ComponentActivity 现在实现 MenuHost 接口。这允许任何组件通过向活动添加 MenuProvider 实例来向 ActionBar 添加菜单项。每个 MenuProvider 可以选择性地添加 Lifecycle,该 Lifecycle 将根据 Lifecycle 状态自动控制这些菜单项的可见性,并在 Lifecycle 销毁时处理 MenuProvider 的移除。
  • ActivityResultContract 类已用 Kotlin 重写,以确保编写 Kotlin 自定义 contract 的开发者可以为其输入和输出类定义正确的可空性。
  • ActivityResultContracts 类及其 contract 已用 Kotlin 重写,以确保正确的可空性。

版本 1.4.0-rc01

2021 年 10 月 13 日

androidx.activity:activity:1.4.0-rc01androidx.activity:activity-compose:1.4.0-rc01androidx.activity:activity-ktx:1.4.0-rc01 已发布。版本 1.4.0-rc01 包含这些提交。

Bug 修复

  • launch 调用抛出任何 Exception 时,ActivityResultRegistry 将不再向 ActivityResultCallback 返回结果。(If4f91b/200845664

版本 1.4.0-beta01

2021 年 9 月 29 日

androidx.activity:activity:1.4.0-beta01androidx.activity:activity-compose:1.4.0-beta01androidx.activity:activity-ktx:1.4.0-beta01 已发布。版本 1.4.0-beta01 包含这些提交。

API 变更

  • 修复了 ActivityResultContracts.OpenMultipleDocumentsActivityResultContracts.GetMultipleContents 的类型问题,该问题导致在使用 Java 编程语言代码时,它们的输出类型为 List<? extends Uri>。(If71de
  • ActivityResultContracts.StartActivityForResultActivityResultContracts.StartIntentSenderForResultActivityResultContracts.RequestMultiplePermissions 类中的公共常量现在可以通过其公共 Companion 对象在 Kotlin 中访问。(aosp/1832555

文档更新

  • Activity Result API 处理的 API(即 startActivityForResultstartIntentSenderForResultonActivityResultrequestPermissionsonRequestPermissionsResult)的弃用消息都已扩展,包含更多详细信息。(cce80f

版本 1.4.0-alpha02

2021 年 9 月 15 日

androidx.activity:activity:1.4.0-alpha02androidx.activity:activity-compose:1.4.0-alpha02androidx.activity:activity-ktx:1.4.0-alpha02 已发布。版本 1.4.0-alpha02 包含这些提交。

新功能

  • activity-compose 工件现在包含一个 LaunchDuringComposition lint 错误,它阻止您在组合过程中调用 ActivityResultLauncherlaunch 方法,因为组合应该是无副作用的。请使用处理副作用的 API。(7c2bbeb/191347220

API 变更

  • ActivityResultContract 类已用 Kotlin 重写,以确保编写 Kotlin 自定义 contract 的开发者可以为其输入和输出类定义正确的可空性。(I8a8f5
  • ActivityResultContracts 类及其 contract 已用 Kotlin 重写,以确保正确的可空性。(I69802

版本 1.4.0-alpha01

2021 年 9 月 1 日

androidx.activity:activity:1.4.0-alpha01androidx.activity:activity-compose:1.4.0-alpha01androidx.activity:activity-ktx:1.4.0-alpha01 已发布。版本 1.4.0-alpha01 包含这些提交。

新功能

  • AndroidX ComponentActivity 现在实现 MenuHost 接口。这允许任何组件通过向 activity 添加 MenuProvider 实例来向 ActionBar 添加菜单项。每个 MenuProvider 可以选择性地添加 Lifecycle,该 Lifecycle 将根据 Lifecycle 状态自动控制这些菜单项的可见性,并在 Lifecycle 销毁时处理 MenuProvider 的移除。(I3b608
/**
  * Using the addMenuProvider() API directly in your Activity
  **/
class ExampleActivity : ComponentActivity(R.layout.activity_example) {

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    // Add menu items without overriding methods in the Activity
   addMenuProvider(object : MenuProvider {
      override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
        // Add menu items here
        menuInflater.inflate(R.menu.example_menu, menu)
      }

      override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
        // Handle the menu selection
        return true
      }
    })
  }
}

/**
  * Using the addMenuProvider() API in a Fragment
  **/
class ExampleFragment : Fragment(R.layout.fragment_example) {

  override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    // The usage of an interface lets you inject your own implementation
    val menuHost: MenuHost = requireActivity()
  
    // Add menu items without using the Fragment Menu APIs
    // Note how we can tie the MenuProvider to the viewLifecycleOwner
    // and an optional Lifecycle.State (here, RESUMED) to indicate when
    // the menu should be visible
    menuHost.addMenuProvider(object : MenuProvider {
      override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
        // Add menu items here
        menuInflater.inflate(R.menu.example_menu, menu)
      }

      override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
        // Handle the menu selection
        return true
      }
    }, viewLifecycleOwner, Lifecycle.State.RESUMED)
  }

行为变更

  • ActivityResultRegistry 现在将在尝试对尚未注册或已注销的 ActivityResultLauncher 调用 launch() 时抛出 IllegalStateException。(Ida75db/192567522

外部贡献

  • 感谢 dmitrilc 修复了 ActivityResult 文档中的一个拼写错误。(#221

版本 1.3.1

版本 1.3.1

2021 年 8 月 4 日

androidx.activity:activity:1.3.1androidx.activity:activity-compose:1.3.1androidx.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.0androidx.activity:activity-compose:1.3.0androidx.activity:activity-ktx:1.3.0 已发布。版本 1.3.0 包含这些提交。

自 1.2.0 以来的重要变化

  • Activity Compose 工件 - activity-compose 工件提供了 setContent 扩展方法,用于在 Activity 中托管您的 Jetpack Compose UI,以及 Compose 特定的封装器,用于与 ComponentActivity API 交互,以处理系统返回按钮和 Activity Result API。有关更多详细信息,请参阅文档
  • CaptureVideo 协定 - CaptureVideo ActivityResultContract 取代了目前已弃用的 TakeVideo 协定,并返回一个布尔值,表示在许多相机应用中均可用的成功结果。
  • 画中画提示视图跟踪 - activity-ktx 用户现在可以在 Activity 上使用 trackPipAnimationHintView 扩展方法,以便在视图相对于窗口改变位置时,自动使用视图的新位置重建 PictureInPictureParams

版本 1.3.0-rc02

2021年7月14日

androidx.activity:activity:1.3.0-rc02androidx.activity:activity-compose:1.3.0-rc02androidx.activity:activity-ktx:1.3.0-rc02 已发布。版本 1.3.0-rc02 包含这些提交。

Bug 修复

  • ActivityResultRegistry 回调现在已正确保存和恢复,因此回调不会在 savedState 中重复。(I97816b/191893160

版本 1.3.0-rc01

2021年7月1日

androidx.activity:activity:1.3.0-rc01androidx.activity:activity-compose:1.3.0-rc01androidx.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-beta02androidx.activity:activity-compose:1.3.0-beta02androidx.activity:activity-ktx:1.3.0-beta02 已发布。版本 1.3.0-beta02 包含这些提交。

已将 activity-compose 更新为依赖 Compose 1.0.0-beta09androidx.compose.ui:ui-test-junit4 现在对 activity-compose 有编译时依赖。

版本 1.3.0-beta01

2021年6月2日

androidx.activity:activity:1.3.0-beta01androidx.activity:activity-compose:1.3.0-beta01androidx.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-alpha08androidx.activity:activity-compose:1.3.0-alpha08androidx.activity:activity-ktx:1.3.0-alpha08 已发布。版本 1.3.0-alpha08 包含这些提交。

新功能

  • 新的 CaptureVideo ActivityResultContract 会向您的 ActivityResultCallback 返回一个布尔值,指示您的视频是否已成功保存到给定 URI。这取代了目前已弃用的 TakeVideo 协定,因为相机应用很少支持返回缩略图位图,导致结果无用。(Ie21f2b/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-alpha07androidx.activity:activity-compose:1.3.0-alpha07androidx.activity:activity-ktx:1.3.0-alpha07 已发布。版本 1.3.0-alpha07 包含这些提交。

Bug 修复

  • rememberLauncherForActivityResult 现在返回对同一 ActivityResultLauncher 实例的稳定引用,即使协定因重组而更改。(Id2d6d
  • 使用高于 1.3.0 的不稳定版 Fragments 将不再抛出指示您使用 1.3.0 的误报 lint 错误。(aosp/1670206b/184847092

版本 1.3.0-alpha06

2021年4月7日

androidx.activity:activity:1.3.0-alpha06androidx.activity:activity-compose:1.3.0-alpha06androidx.activity:activity-ktx:1.3.0-alpha06 已发布。版本 1.3.0-alpha06 包含这些提交。

API 变更

  • registerForActivityResult() API 已重命名为 rememberLauncherForActivityResult(),以更好地表明返回的 ActivityResultLauncher 是为您记住的托管对象。尝试调用 unregister 返回的 ActivityResultLauncher 现在将抛出错误。(I2bb6d
  • LocalOnBackPressedDispatcherOwner.currentLocalActivityResultRegistryOwner.current 现在返回一个可空值,以便更好地确定它在当前组合中是否可用。需要这些 API 的 API,例如 BackHandlerrememberLauncherForActivityResult(),如果未找到底层所有者,现在将分别抛出更具描述性的错误。NavHost 即使在未找到 OnBackPressedDispatcherOwner 的情况下(例如预览 NavHost 时)也能正常工作。(I7d8b4

Bug 修复

  • 如果 Activity 为 STOPPED,然后再次 STARTED,并且使用 LifecycleOwner 添加了其他回调,则 BackHandler 将正确拦截返回按钮按下。(I71de6b/182284739
  • 使用带有 Unit 输入的自定义 ActivityResultContractlaunch() 方法扩展将不再导致 NullPointerException。(I76282b/183837954

版本 1.3.0-alpha05

2021年3月24日

androidx.activity:activity:1.3.0-alpha05androidx.activity:activity-compose:1.3.0-alpha05androidx.activity:activity-ktx:1.3.0-alpha05 已发布。版本 1.3.0-alpha05 包含这些提交。

Bug 修复

  • 来自 Activity 1.2.2:修复了 InvalidFragmentVersionForActivityResult lint 检查中的一个问题,该问题在使用 Fragment 1.3.1 或更高版本时导致误报。(I54da1b/182388985
  • 来自 Activity 1.2.2ComponentActivity 现在避免了在从 ActivityResultContract 启动 Intent 时发生 ClassNotFoundException,该 ActivityResultContract 之前作为 extra 保存在另一个 Intent 中。(Ieff05b/182906230

依赖项更新

版本 1.3.0-alpha04

2021年3月10日

androidx.activity:activity:1.3.0-alpha04androidx.activity:activity-compose:1.3.0-alpha04androidx.activity:activity-ktx:1.3.0-alpha04 已发布。版本 1.3.0-alpha04 包含这些提交。

Bug 修复

  • 来自 Activity 1.2.1RequestMultiplePermissions 现在总是返回所有请求权限的结果,而不仅仅是以前未授予的权限。(I50bc3b/180884668
  • 来自 Activity 1.2.1ActivityResultRegistry 现在确保正在进行的 launch() 请求将返回其结果,即使您使用相同的键 unregister() 然后再次 register()。(I9ef34b/181267562
  • Activity Compose 不再向运行时类路径添加测试依赖项。(Ifd8b3
  • 修复了 BackHandler 的一个问题,该问题导致在重组后仍使用之前设置的 onBack lambda。(8eb5eb

版本 1.3.0-alpha03

2021年2月24日

androidx.activity:activity:1.3.0-alpha03androidx.activity:activity-compose:1.3.0-alpha03androidx.activity:activity-ktx:1.3.0-alpha03 已发布。版本 1.3.0-alpha03 包含这些提交。

新功能

  • 现在有一个 Composable registerForActivityResult 函数,用于从 composables 中获取 Activity 结果。(Ia7851b/172690553

API 变更

  • LocalOnBackPressedDispatcherOwner 现在有一个 provides 函数,可以与 CompositionLocalProvider 一起使用,取代了 asProvidableCompositionLocal() API。(I45d24

版本 1.3.0-alpha02

2021年2月10日

androidx.activity:activity:1.3.0-alpha02androidx.activity:activity-compose:1.3.0-alpha02androidx.activity:activity-ktx:1.3.0-alpha02 已发布。版本 1.3.0-alpha02 包含这些提交。

Bug 修复

  • 修复了 Activity Compose 1.3.0-alpha01 中的一个问题,该问题在使用 Compose 1.0.0-alpha12 时会导致 NoSuchMethodError: No static method setContent 异常。所有 Compose 用户都应依赖 1.3.0-alpha02 及更高版本。(b/179911234

API 变更

  • BackHandler API 可用于允许 Composable 拦截系统返回按钮。(I58ed5b/172154006

版本 1.3.0-alpha01

2021年2月10日

androidx.activity:activity:1.3.0-alpha01androidx.activity:activity-compose:1.3.0-alpha01androidx.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.4androidx.activity:activity-ktx:1.2.4 已发布。版本 1.2.4 包含这些提交。

Bug 修复

版本 1.2.3

版本 1.2.3

2021年5月5日

androidx.activity:activity:1.2.3androidx.activity:activity-ktx:1.2.3 已发布。版本 1.2.3 包含这些提交。

Bug 修复

  • 使用带有 Unit 输入的自定义 ActivityResultContractlaunch() 方法扩展将不再导致 NullPointerException。(I76282b/183837954
  • 修复了一个误报 lint 错误,该错误在使用 Fragment 1.3.0 时指示您使用 Fragment 1.3.0,即使您使用的是更高版本 Fragment 的快照、alpha、beta 或 RC 版本。(f4a57eb/184847092

版本 1.2.2

版本 1.2.2

2021年3月24日

androidx.activity:activity:1.2.2androidx.activity:activity-ktx:1.2.2 已发布。版本 1.2.2 包含这些提交。

Bug 修复

  • 修复了 InvalidFragmentVersionForActivityResult lint 检查中的一个问题,该问题在使用 Fragment 1.3.1 或更高版本时导致误报。(I54da1b/182388985
  • ComponentActivity 现在避免了在从 ActivityResultContract 启动 Intent 时发生 ClassNotFoundException,该 ActivityResultContract 之前作为 extra 保存在另一个 Intent 中。(Ieff05b/182906230

依赖项更新

版本 1.2.1

版本 1.2.1

2021年3月10日

androidx.activity:activity:1.2.1androidx.activity:activity-ktx:1.2.1 已发布。版本 1.2.1 包含这些提交。

Bug 修复

  • RequestMultiplePermissions 现在总是返回所有请求权限的结果,而不仅仅是以前未授予的权限。(I50bc3b/180884668
  • ActivityResultRegistry 现在确保正在进行的 launch() 请求将返回其结果,即使您使用相同的键 unregister() 然后再次 register()。(I9ef34b/181267562

版本 1.2.0

版本 1.2.0

2021年2月10日

androidx.activity:activity:1.2.0androidx.activity:activity-ktx:1.2.0 已发布。版本 1.2.0 包含这些提交。

自 1.1.0 以来的主要变化

  • Activity Result APIComponentActivity 现在提供了一个 ActivityResultRegistry,让您无需在 Activity 或 Fragment 中覆盖方法即可处理 startActivityForResult()+onActivityResult() 以及 requestPermissions()+onRequestPermissionsResult() 流程,通过 ActivityResultContract 提高了类型安全性,并提供了用于测试这些流程的钩子。请参阅更新后的获取 Activity 结果
  • ContextAwareComponentActivity 现在实现了 ContextAware,允许您添加一个或多个 OnContextAvailableListener 实例,这些实例将在基础 Activity.onCreate() 之前收到回调。

    • 一个挂起 Kotlin 扩展 withContextAvailable() 允许您在 Context 可用时运行非挂起块并返回结果。
    • 此 API 由 Fragment 1.3.0 中的 FragmentActivity 用于恢复 FragmentManager 的状态。添加到 FragmentActivity 子类的任何监听器都将在该监听器之后运行。
    • 此 API 由 AppCompat 1.3.0-alpha02 或更高版本中的 AppCompatActivity 使用。添加到 AppCompatActivity 子类的任何监听器都将在该监听器之后运行。
  • ViewTree 支持ComponentActivity 现在支持在 Lifecycle 2.3.0SavedState 1.1.0 中添加的 ViewTreeLifecycleOwner.get(View)ViewTreeViewModelStoreOwner.get(View)ViewTreeSavedStateRegistryOwner API,以便它将 Activity 作为直接添加到 ComponentActivity 的任何 View 的 LifecycleOwnerViewModelStoreOwnerSavedStateRegistryOwner 返回。

  • reportFullyDrawn() 回溯 - ActivityreportFullyDrawn() 方法已在 ComponentActivity 中回溯,可在所有 API 级别上工作,修复了 API 19 上的崩溃问题,并为此方法添加了所有 API 级别的跟踪。

版本 1.2.0-rc01

2020年12月16日

androidx.activity:activity:1.2.0-rc01androidx.activity:activity-ktx:1.2.0-rc01 已发布。版本 1.2.0-rc01 包含这些提交。

Bug 修复

  • ActivityResultRegistry 现在总是恢复已保存的确切状态。(Idd56b
  • ComponentActivity.reportFullyDrawn 添加跟踪。(Ic7632

外部贡献

  • ComponentActivity 现在覆盖了 reportFullyDrawn(),允许在所有 API 级别上调用它,并修复了在 API 19 设备上未获得适当系统权限而调用此方法时发生的崩溃。感谢 Simon Schiller!(b/163239764#103

版本 1.2.0-beta02

2020年12月2日

androidx.activity:activity:1.2.0-beta02androidx.activity:activity-ktx:1.2.0-beta02 已发布。版本 1.2.0-beta02 包含这些提交。

Bug 修复

  • 修复了 Activity Result API 在使用 Lifecycle 注册时不会等待 Lifecycle 达到 STARTED 状态就传递结果的问题。(I109ea

外部贡献

  • 更新了 launch() 的文档,明确指出它可能会抛出 ActivityNotFoundException。感谢 Michał Zieliński!(aosp/1493580

版本 1.2.0-beta01

2020年10月1日

androidx.activity:activity:1.2.0-beta01androidx.activity:activity-ktx:1.2.0-beta01 已发布。版本 1.2.0-beta01 包含这些提交。

Bug 修复

  • ActivityResultRegistry 现在随机生成整数,直到找到一个未分配的整数作为请求代码 register(),从而防止因递增请求代码而可能导致的整数溢出。(b/168779518

  • ActivityResultLauncher 上调用 unregister() 时,Lifecycle 观察者会正确移除。(b/165608393

行为变更

  • 当尝试使用 LifecycleOwner 调用 register() 时,如果其 Lifecycle 已达到 STARTED 状态,则 ActivityResultRegistry 现在会抛出 IllegalStateException。(b/165435866

文档已更新

  • ContextAware 文档链接到 LifecycleOwner,以强调 Lifecycle 回调是创建和销毁事件的合适位置。(aosp/1414152

版本 1.2.0-alpha08

2020年8月19日

androidx.activity:activity:1.2.0-alpha08androidx.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

Bug 修复

  • 修复了 ActivityResultFragmentVersionDetector Lint 检查的一个问题,该问题导致其在使用 Lint 27.1.0 或更高版本时中断。(b/162155191

版本 1.2.0-alpha07

2020年7月22日

androidx.activity:activity:1.2.0-alpha07androidx.activity:activity-ktx:1.2.0-alpha07 已发布。版本 1.2.0-alpha07 包含这些提交。

新功能

  • 添加了一个新的 InvalidFragmentVersionForActivityResult lint 检查,该检查验证您在使用 Activity Result API 时是否使用 Fragment 1.3.0-alpha07,从而避免了因使用旧版本 Fragments 导致的“无效请求代码”问题和不 functioning 的权限请求运行时崩溃。(b/152554847

外部贡献

  • 修复了 RequestPermission Activity Result 协定的结果解析时发生的 ArrayIndexOutOfBoundsException。(I8f9e3b/161057605

版本 1.2.0-alpha06

2020年6月10日

androidx.activity:activity:1.2.0-alpha06androidx.activity:activity-ktx:1.2.0-alpha06 已发布。版本 1.2.0-alpha06 包含这些提交。

新功能

  • 您现在可以在 Kotlin 中解构 ActivityResult 类,以直接访问 requestCodeintent。(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-alpha05androidx.activity:activity-ktx:1.2.0-alpha05 已发布。版本 1.2.0-alpha05 包含这些提交。

新功能

API 变更

  • TakePicture 协定现在返回一个 boolean 指示成功,而不是缩略图 Bitmap,因为当将图像写入提供的 Uri 时,相机应用很少支持这一点。(b/154302879
  • ActivityResultLauncher 上的 invoke() 扩展已被移除,取而代之的是明确使用 launch() 以更好地表明这些是异步操作。已向 androidx.activity.result 包添加了 ActivityResultLauncher<Void>ActivityResultLauncher<Unit> 的 Kotlin 扩展,分别消除了传递 nullUnit 的需要,这反映了之前 invoke() 扩展的行为。(aosp/1304674aosp/1304675
  • IntentSenderRequest.BuildersetFlagsMask()setFlagsValues() 方法已合并为一个 setFlags() 方法。(aosp/1302111

Bug 修复

  • 当使用 LifecycleOwner 注册 ActivityResultCallback 时,修复了回调在状态达到 STARTED 之前触发的问题。(aosp/1309744

行为变更

  • ActivityResultRegistry 现在从 0xFFFF 开始生成请求代码,而不是从 0 开始,从而防止在 Activity 中使用 startActivityForResult()requestPermissions() 时发生重叠。(aosp/1302324

版本 1.2.0-alpha04

2020年4月29日

androidx.activity:activity:1.2.0-alpha04androidx.activity:activity-ktx:1.2.0-alpha04 已发布。版本 1.2.0-alpha04 包含这些提交。

新功能

  • 在 ActivityResult API 中添加了一个可以调用 startIntentSenderForResult 的协定。(b/153007517

API 变更

  • prepareCall() 方法已重命名为 registerForActivityResult(),这在 ComponentActivityFragment 1.3.0-alpha04 中均已生效。(aosp/1278717
  • GetContentsOpenDocumentsRequestPermissions 协定已分别重命名为 GetMultipleContentsOpenMultipleDocumentsRequestMultiplePermissions。(aosp/1280161
  • ComponentActivity 现在实现了 ActivityResultRegisteryOwner 接口。(aosp/1290888
  • - ComponentActivity 上的 startActivityForResult()/onActivityResult()onRequestPermissionsResult() API 已弃用。请使用 Activity Result API。(b/154751887

Bug 修复

  • 当使用 GetMultipleContentsOpenMultipleDocuments 协定并选择单个项目时,现在会正确地将其返回给您的回调。(b/152941153

版本 1.2.0-alpha03

2020年4月1日

androidx.activity:activity:1.2.0-alpha03androidx.activity:activity-ktx:1.2.0-alpha03 已发布。版本 1.2.0-alpha03 包含这些提交。

新功能

  • TakeVideoPickContactGetContentGetContentsOpenDocumentOpenDocumentsOpenDocumentTreeCreateDocument 协定添加到 ActivityResultContracts 提供的预构建协定集中。(aosp/1262482aosp/1266916aosp/1268960
  • Activity Result API 现在支持使用可选的 ActivityOptionsCompat 启动 Activity 以获取结果。(b/151860054

API 变更

  • TakePicture 协定现在接受一个 Uri 输入,用于存储图像的位置。之前不接受任何输入的协定已重命名为 TakePicturePreview。(aosp/1262482
  • ActivityResultRegistry 上的 registerActivityResultCallback() 方法已重命名为 register()。(aosp/1267621
  • ActivityResultLauncher 上的 dispose() 方法已重命名为 unregister(),并且 ActivityResultRegistry 上的 unregisterResultCallback() 已移除。(aosp/1267621
  • ActivityResultContactcreateIntent() 方法现在除了输入外还接受 Context,从而可以创建显式 Intent。(aosp/1238800
  • 一个 ActivityResultContract 现在可以覆盖 getSynchronousResult(),以便在不调用 startActivityForResult 的情况下传递结果。这由 RequestPermissionRequestPermissions 协定使用,以便在请求的权限已授予时正确传递“已授予”状态。(b/151110799
  • 之前可用的 Dial 协定已被移除,因为该 Intent 不应与 startActivityForResult() 一起使用。(aosp/1266916
  • 许多不应扩展的 Activity Result API 现在是 final 的。这包括 getActivityResultRegistry()prepareCall() 方法、ActivityResultRegistry 的所有方法(invoke() 除外),以及许多不支持可选 extra 的默认协定。(b/152439361

Bug 修复

  • 修复了 ActivityResultRegistry 中的 NullPointerException,该异常在尝试将结果传递给配置更改后尚未重新注册的回调时发生;ActivityResultRegistry 现在保留这些待处理的结果并在回调重新注册时传递它们。(b/152137004

版本 1.2.0-alpha02

2020年3月18日

androidx.activity:activity:1.2.0-alpha02androidx.activity:activity-ktx:1.2.0-alpha02 已发布。版本 1.2.0-alpha02 包含这些提交。

新功能

  • ActivityResultRegistryComponentActivity 现在提供了一个 ActivityResultRegistry,让您无需在 Activity 或 Fragment 中覆盖方法即可处理 startActivityForResult()+onActivityResult() 以及 requestPermissions()+onRequestPermissionsResult() 流程,通过 ActivityResultContract 提高了类型安全性,并提供了用于测试这些流程的钩子。请参阅更新后的获取 Activity 结果。(b/125158199

版本 1.2.0-alpha01

2020年3月4日

androidx.activity:activity:1.2.0-alpha01androidx.activity:activity-ktx:1.2.0-alpha01 已发布。版本 1.2.0-alpha01 包含这些提交。

新功能

  • 添加了对 Lifecycle 2.3.0-alpha01 中添加的 ViewTreeLifecycleOwner.get(View) API 的支持,以便它将 Activity 作为直接添加到 Activity 的任何 View 的 LifecycleOwner 返回。(aosp/1182955

Bug 修复

  • 修复了 Activity 1.1.0 中引入的一个回归问题,该问题在旧版本的平台上运行时会导致 onBackPressed() 由于 android.app.FragmentManager 中的一个 bug 而引发 IllegalStateException。(b/146290338

版本 1.1.0

版本 1.1.0

2020年1月22日

androidx.activity:activity:1.1.0 已发布。版本 1.1.0 包含这些提交

自 1.0.0 以来的重要变化

  • Lifecycle ViewModel SavedState 集成SavedStateViewModelFactory 现在是使用 by viewModels()ViewModelProvider 构造函数或 ViewModelProviders.of()ComponentActivity 或其子类一起使用时的默认工厂。

版本 1.1.0-rc03

2019年12月4日

androidx.activity:activity:1.1.0-rc03androidx.activity:activity-ktx:1.1.0-rc03 已发布。版本 1.1.0-rc03 包含这些提交

依赖项更改

  • Activity 现在依赖于 Lifecycle 2.2.0-rc03 和 Lifecycle ViewModel SavedState 1.0.0-rc03

版本 1.1.0-rc02

2019年11月7日

androidx.activity:activity:1.1.0-rc02androidx.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-rc01androidx.activity:activity-ktx:1.1.0-rc01 已发布,与 1.1.0-beta01 相比没有变化。版本 1.1.0-rc01 包含这些提交

版本 1.1.0-beta01

2019年10月9日

androidx.activity::activity:1.0.0-beta01androidx.activity:activity-ktx:1.0.0-beta01 已发布。版本 1.1.0-beta01 包含这些提交

依赖项更改

  • Activity 现在依赖于 SavedState 1.0.0 稳定版。

版本 1.1.0-alpha03

2019年9月5日

androidx.activity:activity:1.1.0-alpha03androidx.activity:activity-ktx:1.1.0-alpha03 已发布。此版本中包含的提交可在此处找到。

新特性

  • Activity 现在依赖于 Core 1.1.0 稳定版。

Bug 修复

版本 1.1.0-alpha02

2019年8月7日

androidx.activity:activity:1.1.0-alpha02androidx.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-alpha01androidx.activity:activity-ktx:1.1.0-alpha01 已发布。此版本中包含的提交可在此处找到。

新特性

  • activity 现在依赖于 Lifecycle 2.2.0-alpha02。(aosp/1007817
  • activity-ktx 添加了对 lifecycle-runtime-ktx 的依赖;在使用 activity-ktx 或依赖 activity-ktx 的库(例如 fragment-ktx)时,您不再需要显式将其添加到您的依赖项中。(aosp/987162

版本 1.0.0

版本 1.0.0

2019年9月5日

androidx.activity:activity:1.0.0androidx.activity:activity-ktx:1.0.0 已发布。此版本中包含的提交可在此处找到。

1.0.0 的主要特性

  • ComponentActivityComponentActivityFragment 1.1.0FragmentActivity 的新基类,并且通过扩展,也是 AppCompat 1.1.0AppCompatActivity 的新基类。
  • activity-ktxactivity-ktx 模块包含一个 by viewModels Kotlin 属性扩展,用于访问 ViewModels。当您包含 Fragment 1.1.0 中的 fragment-ktx 时,此模块会自动包含在内。
  • OnBackPressedDispatcher:作为覆盖 onBackPressed() 的可组合替代方案,您现在可以从任何 LifecycleOwner(例如 fragment)注册 OnBackPressedCallback 以拦截系统返回按钮事件。activity-ktx 中已添加了一个带有接收器版本的 lambda addCallback。有关更多详细信息,请参阅提供自定义返回导航文档
  • onRetainCustomNonConfigurationInstance 弃用onRetainCustomNonConfigurationInstance() 和相关的 getLastCustomNonConfigurationInstance() API 已弃用。强烈建议使用 ViewModels 来存储非配置状态,因为它们提供了一个适用于任何 ViewModelStoreOwner 的可组合解决方案,该解决方案明确了保留对象的所有权,并提供了 onCleared() 回调,以便在 Activity 最终销毁时清理资源。

版本 1.0.0-rc01

2019年7月2日

androidx.activity:activity:1.0.0-rc01androidx.activity:activity-ktx:1.0.0-rc01 已发布,与 1.0.0-beta01 相比没有变化。此版本中包含的提交可在此处找到。

版本 1.0.0-beta01

2019年6月5日

androidx.activity::activity:1.0.0-beta01androidx.activity:activity-ktx:1.0.0-beta01 已发布,与 1.0.0-alpha08 相比没有变化。此版本中包含的提交可在此处找到。

版本 1.0.0-alpha08

2019年5月7日

androidx.activity:activity:1.0.0-alpha08androidx.activity:activity-ktx:1.0.0-alpha08 已发布。此版本中包含的提交可在此处找到。

API 更改

  • 重大变更:ComponentActivity 上之前弃用的 addOnBackPressedCallbackremoveOnBackPressedCallback 方法已被移除。aosp/953857
  • OnBackPressedCallbacksetEnabled()isEnabled() 方法现在是 final 的。b/131416833
  • OnBackPressedCallbackremove() 方法现在是 final 的。aosp/952720
  • OnBackPressedDispatcher 现在具有公共构造函数,允许您为测试等构造自己的实例。aosp/953431
  • ComponentActivityonBackPressed() 现在明确标记为 @MainThreadaosp/952721

Bug 修复

  • 修复了在从使用 LifecycleOwner 添加的 OnBackPressedCalbackhandleOnBackPressed() 方法中调用 remove() 时发生的 ConcurrentModificationExceptionb/131765095

版本 1.0.0-alpha07

2019年4月25日

androidx.activity:activity:1.0.0-alpha07androidx.activity:activity-ktx:1.0.0-alpha07 已发布。此版本中包含的提交可在此处找到。

API 更改

此版本对 onBackPressed() 的处理方式进行了重大更改。有关更多详细信息,请参阅更新后的自定义返回文档

  • OnBackPressedCallbackOnBackPressedDispatcher 的方法已标记为 @MainThread。(aosp/943813
  • handleOnBackPressed() 方法不再返回 boolean。相反,OnBackPressedCallback 现在是一个抽象类,可以启用或禁用 - 只有当新的 isEnabled() 方法返回 true 时,才会调用 handleOnBackPressed(),在此方法中您必须处理返回按钮。(aosp/944518
  • OnBackPressedDispatcheraddCallback 方法不再返回 Cancellable 实例。OnBackPressedCallback 现在包含一个 remove() 方法来实现此功能,允许您在 handleOnBackPressed() 期间调用 remove()。(aosp/944519) (aosp/946316
  • activity-ktx 现在包含一个用于 addCallback 的接收器范围回调,它接受一个实现 handleOnBackPressed() 的 lambda,并可以访问 isEnabledremove()。(aosp/944520

版本 1.0.0-alpha06

2019年4月3日

androidx.activity:activity:1.0.0-alpha06androidx.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-alpha05androidx.activity:activity-ktx:1.0.0-alpha05 已发布。此版本中包含的完整提交列表可在此处找到。

新特性

  • @ContentView 注解查找现在已缓存。(b/123709449

版本 1.0.0-alpha04

2019年1月30日

androidx.activity:activity 1.0.0-alpha04androidx.activity:activity-ktx 1.0.0-alpha04 已发布。

新特性

  • 添加了对 @ContentView 类注解的支持,允许您指示应膨胀哪个布局 XML 文件,作为使用 setContentView() 的替代方案。(aosp/837619

API 更改

  • 添加了一个说明,指出不应覆盖 getViewModelStore(),并且它将在未来版本中设置为 final。如果您当前正在覆盖此方法,请提交功能请求。(aosp/837619

Bug 修复

  • activity 模块现在依赖于 ViewModel 2.1.0-alpha02 版本,以匹配 activity-ktx 模块的依赖项。

版本 1.0.0-alpha03

2018年12月17日

androidx.activity 1.0.0-alpha03 已发布。

新特性

  • ComponentActivity 现在实现了 BundleSavedStateRegistryOwner 并依赖于新发布的 SavedState 库。[aosp/815133]
  • ComponentActivity 现在解决了 Android 框架的一个 bug,该 bug 会导致 InputMethodManager 泄漏最后聚焦的视图。[b/37122102]

版本 1.0.0-alpha02

2018年12月3日

API 更改

  • 添加了一个说明,指出不应覆盖 getLifecycle(),并且它将在未来版本中设置为 final。如果您当前正在覆盖此方法,请提交功能请求。(aosp/815834

版本 1.0.0-alpha01

2018年11月5日

androidx.activity 1.0.0-alpha01 引入了 ComponentActivity,它是现有 FragmentActivityAppCompatActivity 的新基类。

新特性

  • 您现在可以通过 addOnBackPressedCallback 注册 OnBackPressedCallback,以接收 onBackPressed() 回调,而无需在您的 Activity 中覆盖该方法。
  • 为从 ComponentActivity 检索 ViewModel 添加了一个新的 by viewModels() Kotlin 属性委托。
  • 待处理的输入事件(如点击)现在在 onStop() 中取消。

API 更改

  • LifecycleOwnerViewModelStoreOwner 的实现已从 FragmentActivity 移至 ComponentActivity
  • onRetainCustomNonConfigurationInstance 已弃用。使用 ViewModel 存储需要 survive 配置更改的对象。