活动

访问构建在 Activity 之上的可组合 API。
最新更新 稳定版 候选版本 Beta 版 Alpha 版
2024 年 11 月 13 日 1.9.3 - 1.10.0-beta01 -

声明依赖项

要添加对 Activity 的依赖项,您必须将 Google Maven 存储库添加到您的项目中。阅读Google 的 Maven 存储库以获取更多信息。

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

Groovy

dependencies {
    def activity_version = "1.9.3"

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

Kotlin

dependencies {
    val activity_version = "1.9.3"

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

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

反馈

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

创建新问题

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

版本 1.10

版本 1.10.0-beta01

2024 年 11 月 13 日

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

错误修复

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

依赖项更新

版本 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)

错误修复

  • 删除了对访问新平台 API 的手动概述,因为在使用 R8 和 AGP 7.3 或更高版本(例如 R8 版本 3.3)时,以及在使用 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 包含 这些提交

错误修复

  • 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 包含 这些提交

错误修复

  • 修复了 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 包含 这些提交

错误修复

  • 修复了 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 包含 这些提交

错误修复

  • 修复了 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 警告

  • 在处理后退时,OnBackPressedCallbackBackHandlerPredictiveBackHandler API 现在会在调用 onBackPressedDispatcher.onBackPressed() 时发出警告,因为这将始终破坏 预测后退动画。有关更多详细信息,请参阅 最佳实践指南。(1e42222c950db/287505200)

错误修复

  • 如果在已经运行的预测后退手势期间从系统发送后退事件,则当前正在运行的预测后退手势将被取消,并且新的后退事件将接管以开始新的预测后退手势。(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 中重写。ActivityResult Kotlin 扩展(支持解构为 resultCodedata 字段)已从 activity-ktx 移至 activity。(I0565a)
  • ComponentActivityby viewModels()trackPipAnimationHintView 的 Kotlin 扩展已从 activity-ktx 移至 activityactivity-ktx 工件现在完全为空。(I0a444)

错误修复

  • enableEdgeToEdge API 现在会在任何显示切口周围绘制。(a3644b, b/311173461)
  • Activity 1.8.2 开始:修复传递给照片选择器 Activity Contract 的 ACTION_SYSTEM_FALLBACK_PICK_IMAGES 的额外参数,使其正确传递 EXTRA_SYSTEM_FALLBACK_PICK_IMAGES_MAX 键,而不是使用键为 "com.google.android.gms.provider.extra.PICK_IMAGES_MAX" 的额外参数。强烈建议如果你是实现系统回退照片选择器的 OEM,则支持这两个额外参数以确保最广泛的兼容性。(I96a00)

版本 1.9.0-alpha01

2023年11月29日

androidx.activity:activity:1.9.0-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 合同具有相同的最低 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 包含这些提交。

错误修复

  • 修复传递给照片选择器 Activity Contract 的 ACTION_SYSTEM_FALLBACK_PICK_IMAGES 的额外参数,使其正确传递 EXTRA_SYSTEM_FALLBACK_PICK_IMAGES_MAX 键,而不是使用键为 "com.google.android.gms.provider.extra.PICK_IMAGES_MAX" 的额外参数。强烈建议如果你是实现系统回退照片选择器的 OEM,则支持这两个额外参数以确保最广泛的兼容性。(I96a00)

版本 1.8.1

2023年11月15日

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

错误修复

  • 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 可组合项,用于在 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-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 可组合项来处理预测后退手势事件。它提供了一个 FlowBackEventCompat 对象,这些对象必须在提供的挂起 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-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/2546393, b/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> 实例,该实例允许调度程序的所有者在启用回调的数量从零变为非零或反之亦然时接收回调。

错误修复

版本 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 已发布。此版本是从内部分支发布的。

错误修复

版本 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)

错误修复

  • 修复了片段错误地使 MenuHost 无效并导致 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 包含这些提交。

错误修复

  • 修复了在调用 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 包含这些提交。

错误修复

  • 使用 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 中的照片选择器 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 附加到窗口的 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 运行时发出信号,以确保在多帧启动序列期间运行的所有代码都包含在内并优先考虑进行后台编译。
  • 在您的应用程序应被视为完全绘制以进行启动指标时向 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 合同在 MediaStore.ACTION_PICK_IMAGES 不可用时用作回退的操作和额外内容现在是公共常量,为想要提供一致的照片选择器体验的 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)

错误修复

  • 当框架照片选择器不可用时,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 合同现在将在可用的情况下使用 Google Play 服务提供的照片选择器,在 Android 系统提供的照片选择器(例如 MediaStore.ACTION_PICK_IMAGES)不可用的情况下。仅检测 Android 系统提供的照片选择器的 isPhotoPickerAvailable() API 已弃用。建议使用新的 isPhotoPickerAvailable(Context) API,它将返回任何一个照片选择器是否可用。(I55be6

版本 1.7.0-alpha03

2023 年 1 月 11 日

androidx.activity:activity:1.7.0-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 要求附加到窗口的 LifecycleOwnerSavedStateRegistryOwner 两个条件。(Idca17I73468 b/261162296

API 更改

  • 添加了一个 ReportDrawn 可组合项,它会立即将 Activity 标记为已准备好调用 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 包含这些提交。

错误修复

  • Activity 1.6.1:修复了在 Android R 设备上使用 PickMultipleVisualMedia Activity Result 合同的默认 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 运行时发出信号,以确保在多帧启动序列期间运行的所有代码都包含在内并优先考虑进行后台编译。
  • 在您的应用程序应被视为完全绘制以进行启动指标时向 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 包含这些提交。

错误修复

  • 修复了在 Android R 设备上使用 PickMultipleVisualMedia Activity Result 合同的默认 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,以提供一个向后兼容的合同,在 照片选择器 可用时使用 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 包含这些提交。

错误修复

  • OnBackPressedDispatcher 现在使用 PRIORITY_DEFAULT 而不是 PRIORITY_OVERLAY 注册 OnBackInvokedCallback。(I3901f
  • 扩展 ComponentActivity 的类现在将始终分派其两个 onMultiWindowModeChanged() 回调。(Ic4d85
  • ActivityResultRegistrylaunch 调用抛出任何 Exception 并且回调是在没有 LifecycleOwner 的情况下注册时,将不再向 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 包含这些提交。

错误修复

  • 初始化 OnBackPressedDispatcher 在使用 SDK 版本低于 33 时将不再导致 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

错误修复

  • 来自 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 保持一致。

错误修复

  • 修复了在旧设备上执行 SDK 扩展检查时针对 PickVisualMedia ActivityResultContract 发生的崩溃,以便它现在可以在运行 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 已发布。

错误修复

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

版本 1.6.0-alpha03

2022年4月27日

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

  • 注意:此版本仅可针对 Android 13 开发者 Beta 1 SDK 编译。

新功能

  • 添加了 ActivityResultContracts.PickVisualMediaActivityResultContracts.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-alpha01androidx.activity:activity-compose:1.6.0-alpha01androidx.activity:activity-ktx:1.6.0-alpha01 已发布。

  • 注意:此版本仅可针对 Android 13 开发者预览版 2 SDK 编译。

新功能

  • 将 Android 13 Dev 预览版 2 中的更改集成到 ComponentActivity 中。

版本 1.5.1

版本 1.5.1

2022年7月27日

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

错误修复

  • 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,允许视图以通用方式检索正确的分派器,无论它是否存在于 ComponentActivityComponentDialog 中。
  • 回调接口 - 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 包含这些提交。

错误修复

  • 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 包含这些提交。

错误修复

  • SavedStateViewFactory 现在支持即使它使用 SavedStateRegistryOwner 初始化,也使用 CreationExtras。如果提供了额外内容,则会忽略初始化的参数。(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,允许视图以通用方式检索正确的分派器,无论它是否存在于 ComponentActivityComponentDialog 中。(I8a1bc
  • ComponentActivity 现在实现了新的 OnNewIntentProvider 接口,以允许任何组件接收这些事件。(If1f8b

  • ComponentActivity 现在实现了新的 OnConfigurationChangedProvider 接口,以允许任何组件接收这些事件。(If623b
  • ComponentActivity 现在实现了新的 OnTrimMemoryProvider 接口,以允许任何组件接收这些事件。(Ia9295

API 更改

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

错误修复

  • 修复了从 registerForActivityResult() 回调或作为 ComponentActivityinit 部分添加的 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 中编写自定义契约的开发人员可以为其输入和输出类定义正确的可空性。
  • ActivityResultContracts 类及其契约已在 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 包含这些提交。

错误修复

  • ActivityResultRegistrylaunch 调用抛出任何 Exception 时,将不再向 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 中编写自定义契约的开发人员可以为其输入和输出类定义正确的可空性。(I8a8f5
  • ActivityResultContracts 类及其契约已在 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 接口。这允许任何组件通过向活动添加 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 扩展方法,用于在活动中托管您的 Jetpack Compose UI,以及用于与 ComponentActivity API 交互以处理系统后退按钮和 Activity Result API 的 Compose 特定包装器。有关更多详细信息,请参阅 文档
  • CaptureVideo 契约 - CaptureVideo ActivityResultContract 替换了现在已弃用的 TakeVideo 契约,并返回一个布尔值以表示成功,该值可在许多相机应用程序中使用。
  • 画中画提示视图跟踪 - activity-ktx 的用户现在可以使用 Activity 上的 trackPipAnimationHintView 扩展方法,以使用视图的新位置自动重建 PictureInPictureParams,因为该视图相对于窗口的位置会发生变化。

版本 1.3.0-rc02

2021 年 7 月 14 日

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

错误修复

  • 现在已正确保存和恢复 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 包含这些提交。

错误修复

  • 现在,即使由于重新组合而导致合同发生变化,rememberLauncherForActivityResult 也会返回对同一 ActivityResultLauncher 实例的稳定引用。(Id2d6d
  • 使用高于 1.3.0 的不稳定版本的 Fragments 将不再抛出错误的正误 Lint 错误,提示您使用 1.3.0。(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

错误修复

  • 现在,BackHandler 将在 Activity STOPPED,然后再次 STARTED,并且使用 LifecycleOwner 添加了其他回调的情况下正确拦截后退按钮按下。(I71de6b/182284739
  • 使用具有自定义 ActivityResultContractlaunch() 方法扩展,该扩展具有 Unit 输入,将不再导致 NullPointerExceptionI76282b/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 包含这些提交。

错误修复

  • 来自 Activity 1.2.2:修复了 InvalidFragmentVersionForActivityResult Lint 检查中的一个问题,该问题导致在使用 Fragment 1.3.1 或更高版本时出现误报。(I54da1b/182388985
  • 来自 Activity 1.2.2ComponentActivity 现在避免在从先前作为另一个 Intent 中的额外内容保存的 ActivityResultContract 启动 Intent 时出现 ClassNotFoundException。(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 包含这些提交。

错误修复

  • 来自 Activity 1.2.1RequestMultiplePermissions 现在始终返回所有请求权限的结果,而不仅仅是以前未授予的权限。(I50bc3b/180884668
  • 来自 Activity 1.2.1ActivityResultRegistry 现在确保即使您 unregister(),然后使用相同的键再次 register(),正在进行的 launch() 请求也会返回其结果。(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 函数,用于从可组合项内的活动获取结果。(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 包含这些提交。

错误修复

  • 修复了 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 包含这些提交。

错误修复

版本 1.2.3

版本 1.2.3

2021 年 5 月 5 日

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

错误修复

  • 使用具有自定义 ActivityResultContractlaunch() 方法扩展,该扩展具有 Unit 输入,将不再导致 NullPointerExceptionI76282b/183837954
  • 修复了一个错误的 lint 错误,该错误在使用 Fragment 的较新版本的快照、Alpha、Beta 或 RC 版本时,提示您使用 Fragment 1.3.0。(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 包含这些提交。

错误修复

  • 修复了 InvalidFragmentVersionForActivityResult lint 检查中的一个问题,该问题导致在使用 Fragment 1.3.1 或更高版本时出现误报。(I54da1b/182388985
  • ComponentActivity 现在避免在从先前作为另一个 Intent 中的额外内容保存的 ActivityResultContract 启动 Intent 时出现 ClassNotFoundException。(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 包含这些提交。

错误修复

  • RequestMultiplePermissions 现在始终返回所有请求权限的结果,而不仅仅是以前未授予的权限。(I50bc3b/180884668
  • ActivityResultRegistry 现在确保即使您 unregister(),然后使用相同的键再次 register(),正在进行的 launch() 请求也会返回其结果。(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,允许您处理 startActivityForResult()+onActivityResult() 以及 requestPermissions()+onRequestPermissionsResult() 流,而无需覆盖 Activity 或 Fragment 中的方法,通过 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() 反向移植 - ComponentActivity 中已反向移植了 reportFullyDrawn()Activity 方法,以在所有 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 包含这些提交。

错误修复

  • 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 包含这些提交。

错误修复

  • 修复了一个问题,即在使用 Lifecycle 注册时,ActivityResult API 不会在 Lifecycle 达到 STARTED 之前传递结果。(I109ea

外部贡献

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

版本 1.2.0-beta01

2020 年 10 月 1 日

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

错误修复

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

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

行为变更

  • ActivityResultRegistry 现在在尝试使用其 Lifecycle 已经达到 STARTEDLifecycleOwner 调用 register() 时抛出 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 由 FragmentActivityFragment 1.3.0-alpha08 中使用以恢复 FragmentManager 的状态。添加到 FragmentActivity 子类的任何监听器将在该监听器之后运行。(I513da)
    • 此 API 由 AppCompatActivityAppCompat 1.3.0-alpha02 中使用。添加到 AppCompatActivity 子类的任何监听器将在该监听器之后运行。(I513da)

错误修复

  • 修复了 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 检查,该检查验证您在使用 Fragment 1.3.0-alpha07 时是否正在使用 Activity Result API,避免由于使用旧版本的 Fragment 导致的“无效请求代码”问题和权限请求功能失效的运行时崩溃。(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> 添加了 launch 的 Kotlin 扩展函数,以消除分别传递 nullUnit 的需要,反映了先前 invoke() 扩展函数中的行为。(aosp/1304674aosp/1304675)
  • IntentSenderRequest.BuildersetFlagsMask()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-alpha04androidx.activity:activity-ktx:1.2.0-alpha04 已发布。 版本 1.2.0-alpha04 包含这些提交。

新功能

  • 向 ActivityResult API 添加了一个可以调用 startIntentSenderForResult 的合同。(b/153007517)

API 更改

  • prepareCall() 方法已重命名为 registerForActivityResult(),这里在 ComponentActivity 中以及在 Fragment 1.3.0-alpha04 中都是如此。(aosp/1278717)
  • GetContentsOpenDocumentsRequestPermissions 合同分别重命名为 GetMultipleContentsOpenMultipleDocumentsRequestMultiplePermissions。(aosp/1280161)
  • ComponentActivity 现在实现了 ActivityResultRegisteryOwner 接口。(aosp/1290888)
  • - ComponentActivity 上的 startActivityForResult()/onActivityResult()onRequestPermissionsResult() API 已弃用。请使用 Activity Result API。(b/154751887)

错误修复

  • 在使用 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)
  • ActivityResult API 现在支持使用可选的 ActivityOptionsCompat 启动活动以获取结果。(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() 来传递结果,而无需调用 startActivityForResultRequestPermissionRequestPermissions 合约使用此功能,以便在已授予请求的权限时正确传递“已授予”状态。(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-alpha02androidx.activity:activity-ktx:1.2.0-alpha02 已发布。版本 1.2.0-alpha02 包含这些提交。

新功能

  • ActivityResultRegistryComponentActivity 现在提供了一个 ActivityResultRegistry,它允许您处理 startActivityForResult() + onActivityResult() 以及 requestPermissions() + onRequestPermissionsResult() 流程,而无需在 Activity 或 Fragment 中重写方法,通过 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

错误修复

  • 修复了 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-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.1.0-beta01androidx.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-alpha03androidx.activity:activity-ktx:1.1.0-alpha03 已发布。 此版本中包含的提交可以在 此处 找到。

新功能

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

错误修复

版本 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 的主要功能

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

版本 1.0.0-rc01

2019 年 7 月 2 日

androidx.activity:activity:1.0.0-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() 现在明确标记为 @MainThread aosp/952721

错误修复

  • 修复了在 OnBackPressedCalbackhandleOnBackPressed() 方法内部调用 remove() 时发生的 ConcurrentModificationException,该 OnBackPressedCalback 是使用 LifecycleOwner 添加的。 b/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)

错误修复

  • 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,这是现有 FragmentActivityAppCompatActivity 的一个新的基类。

新功能

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

API 更改

  • LifecycleOwnerViewModelStoreOwner 的实现已从 FragmentActivity 移动到 ComponentActivity
  • onRetainCustomNonConfigurationInstance 已弃用。使用 ViewModel 存储需要在配置更改后继续存在的对象。