活动

访问构建在 Activity 之上的可组合 API。
最新更新 稳定版 候选版本 Beta 版 Alpha 版
2024 年 9 月 4 日 1.9.2 - - 1.10.0-alpha02

声明依赖项

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

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

Groovy

dependencies {
    def activity_version = "1.9.2"

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

Kotlin

dependencies {
    val activity_version = "1.9.2"

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

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

反馈

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

创建新问题

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

版本 1.10

版本 1.10.0-alpha02

2024 年 9 月 4 日

androidx.activity:activity:1.10.0-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.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 包含 这些 lthcocommits

错误修复

  • 修复了一个问题,即 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 现在绘制在任何显示切口周围。(a3644bb/311173461
  • 来自 Activity 1.8.2:修复了传递给 Photo Picker Activity Contract 的 ACTION_SYSTEM_FALLBACK_PICK_IMAGES 的额外参数,以正确地将 EXTRA_SYSTEM_FALLBACK_PICK_IMAGES_MAX 密钥传递给它,而不是使用密钥为 "com.google.android.gms.provider.extra.PICK_IMAGES_MAX" 的额外参数。如果您是实现系统回退照片选择器的 OEM,强烈建议您支持这两个额外参数以确保最广泛的兼容性。(I96a00

版本 1.9.0-alpha01

2023年11月29日

androidx.activity:activity:1.9.0-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 包含这些提交。

错误修复

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

错误修复

  • 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 可组合项来处理预测后退手势事件。它提供了一个 BackEventCompat 对象的 Flow,这些对象必须在您提供的挂起 lambda 中收集。

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

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

  • ComponentActivity 中的 onBackPressedDispatcher 现在延迟初始化,以便仅在需要时创建。(I0bf8e

错误修复

  • 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> 实例,允许分派程序的所有者在启用回调的数量从零变为非零或反之亦然时接收回调。

错误修复

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

错误修复

  • 修复了 Fragment 错误地使 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 合同现在将在 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 附加到窗口的 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 包含这些提交。

错误修复

  • 修复了 PickMultipleVisualMedia Activity Result 合同在 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,以提供一个向后兼容的合同,当 照片选择器 可用时使用 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
  • launch 调用引发任何 Exception 并且回调是在没有 LifecycleOwner 的情况下注册时,ActivityResultRegistry 将不再向 ActivityResultCallback 返回结果。(Ia7ff7b/238350794
  • ComponentActivity 现在将正确分派菜单调用,而无需在您的活动中调用 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 包含这些提交。

错误修复

  • 在使用 SDK 版本早于 33 时,初始化 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

错误修复

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

错误修复

  • 修复了在旧设备上执行 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

错误修复

  • 修复了 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 开发者 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 开发者预览版 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 现在支持使用 CreationExtras,即使它已使用 SavedStateRegistryOwner 初始化。如果提供了额外信息,则会忽略初始化的参数。(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 传递给活动 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
  • 现在可以通过 ViewTreeOnBackPressedDispatcherOwner 检索与 View 关联的 OnBackPressedDispatcherOwner,而不是依赖于转换 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

文档更新

  • 现在由 活动结果 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)
  }

行为变更

  • 当尝试对未注册或已取消注册的 ActivityResultLauncher 调用 launch() 时,ActivityResultRegistry 现在将抛出 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 交互以处理系统后退按钮和活动结果 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 的不稳定版本的 Fragment 将不再抛出错误的 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)

错误修复

  • 如果活动 STOPPED,然后再次 STARTED,并且其他回调已与 LifecycleOwner 关联,则 BackHandler 现在将正确拦截后退按下操作。(I71de6b/182284739)
  • 使用具有自定义 ActivityResultContractlaunch() 方法扩展,该扩展具有 Unit 输入,将不再导致 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 包含这些提交。

错误修复

  • 来自 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 现在确保正在进行的 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 函数,用于在 composable 中获取来自 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 包含这些提交。

错误修复

  • 修复了 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 输入,将不再导致 NullPointerException(I76282b/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 现在避免了在从 ActivityResultContract 启动 Intent 时出现 ClassNotFoundException,该 ActivityResultContract 之前作为另一个 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 包含这些提交。

错误修复

  • 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,它允许您处理 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 作为 LifecycleOwnerViewModelStoreOwnerSavedStateRegistryOwner 返回,用于直接添加到 ComponentActivity 的任何 View。

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

错误修复

  • 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 注册时,Activity Result API 不会在 Lifecycle 达到 STARTED 之前传递结果。 (I109ea)

外部贡献

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

版本 1.2.0-beta01

2020 年 10 月 1 日

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

错误修复

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

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

行为变更

  • 当尝试使用 LifecycleOwner 调用 register() 时,ActivityResultRegistry 现在会抛出 IllegalStateException,该 LifecycleOwnerLifecycle 已经达到 STARTED。 (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)

错误修复

  • 修复了 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。 (I8f9e3, b/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(),以便更好地指示这些是异步操作。已将 launch 的 Kotlin 扩展添加到 androidx.activity.result 包中,用于 ActivityResultLauncher<Void>ActivityResultLauncher<Unit>,从而无需分别传入 nullUnit,反映了之前 invoke() 扩展中的行为。 (aosp/1304674, aosp/1304675)
  • IntentSenderRequest.Builder 用于 setFlagsMask()setFlagsValues() 的方法已合并为单个 setFlags() 方法。 (aosp/1302111)

错误修复

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

行为变更

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

版本 1.2.0-alpha04

2020 年 4 月 29 日

androidx.activity:activity:1.2.0-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)
  • Activity Result 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() 以在不调用 startActivityForResult 的情况下传递结果。 RequestPermissionRequestPermissions 合同使用此方法在已授予请求的权限时正确传递“已授予”状态。(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.0AppCompatActivity 的新基类。

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

版本 1.0.0-rc01

2019 年 7 月 2 日

androidx.activity:activity:1.0.0-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 更改

  • 重大更改:先前已弃用的 addOnBackPressedCallbackremoveOnBackPressedCallback 方法已从 ComponentActivity 中删除。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() 并可以访问 isEnabledremove() 的 lambda。(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 存储需要在配置更改后继续存在的对象。