活动

访问基于 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")
}

如需详细了解依赖项,请参阅添加 build 依赖项

反馈

您的反馈将帮助我们改进 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

bug 修复

  • Activity 1.9.3 开始:在处理脚本被停用后,PredictiveBackHandler 将不再触发其回调。这将修复 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 结果协定在系统照片选择器不可用时不再直接委托给 Google Play 服务,而是使用公共 ACTION_SYSTEM_FALLBACK_PICK_IMAGES 操作和相关 extra 作为回退,为 OEM 和系统应用提供一致的照片选择器体验。对于搭载较新版本 Google Play 服务的设备,这应该不会影响用户体验。(I3513d)

bug 修复

  • 移除了手动说明对新平台 API 的访问权限,因为当将 R8 与 AGP 7.3 或更高版本(例如 R8 版本 3.3)搭配使用时,系统会通过 API 建模自动执行此操作;当使用 AGP 8.1 或更高版本(例如 D8 版本 8.1)时,系统会针对所有 build 自动执行此操作。建议不使用 AGP 的客户更新到 D8 8.1 或更高版本。如需了解详情,请参阅这篇文章。(I9496cb/345472586
  • Activity 1.9.2 开始:修复了以下问题:Activity Compose PredictiveBackHandler API 会继续在其已停用的帧上处理系统返回手势,这可能会导致 Navigation Compose 等库即使在返回堆栈为空的情况下也处理返回,从而导致其抛出 IndexOutOfBoundsException。(Ie3301b/340202286
  • activity 1.9.1 中:修复了 PredictiveBackHandler 存在的问题,即在执行系统返回操作后,尝试从 OnBackPressedDispatcher 执行 onBackPressed 会失败。(I5f1f8)

版本 1.10.0-alpha01

2024 年 6 月 26 日

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

新功能

  • 添加了对 Android V 中引入的新 PhotoPicker 功能的支持,包括能够按顺序选择图片,以及选择应先显示哪个标签页(影集或图片)。

版本 1.9

版本 1.9.3

2024 年 10 月 16 日

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

bug 修复

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

版本 1.9.2

2024 年 9 月 4 日

发布了 androidx.activity:activity:1.9.2androidx.activity:activity-compose:1.9.2androidx.activity:activity-ktx:1.9.2。版本 1.9.2 包含这些 lthcocommit

bug 修复

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

版本 1.9.1

2024 年 7 月 24 日

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

bug 修复

  • 修复了 PredictiveBackHandler 中存在的问题:执行系统返回操作后,尝试从 OnBackPressedDispatcher 执行 onBackPressed 会失败。(I5f1f8)

版本 1.9.0

2024 年 4 月 17 日

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

自 1.8.0 以来的重要变更

  • ComponentActivity 现在会实现 OnUserLeaveHintProvider,以允许组件对 onUserLeaveHint 事件进行回调。
  • OnBackPressedCallbackBackHandlerPredictiveBackHandler API 现在会在处理返回时调用 onBackPressedDispatcher.onBackPressed() 时发出警告,因为这始终会破坏预测性返回动画。如需了解详情,请参阅最佳实践指南
  • 其余的 activity API 已使用 Kotlin 重写,之前在 activity-ktx 中提供的所有扩展程序均已移至 activityactivity-ktx 现在完全为空。
    • 在将 ActivityResultLauncher 转换为 Kotlin 的过程中,getContract 方法现在是一个抽象 Kotlin 属性。这项变更与二进制文件兼容,但如果您的 ActivityResultLauncher 实现是用 Kotlin 编写的,则会破坏源代码。

版本 1.9.0-rc01

2024 年 4 月 3 日

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

依赖项更新

版本 1.9.0-beta01

2024 年 3 月 20 日

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

bug 修复

  • 修复了在创建 activity 的过程中调用 OnBackPressedDispatcher 导致的 activity 1.9.0-alpha02 中引入的 activity 启动性能回归问题。(Ie75e3)

版本 1.9.0-alpha03

2024 年 2 月 7 日

发布了 androidx.activity:activity:1.9.0-alpha03androidx.activity:activity-compose:1.9.0-alpha03androidx.activity:activity-ktx:1.9.0-alpha03版本 1.9.0-alpha03 中包含这些提交内容

lint 警告

bug 修复

  • 如果在预测性返回手势正在运行期间从系统发送返回事件,系统会取消当前正在运行的预测性返回手势,并让新返回事件接管以开始新的预测性返回手势。(I3482e)
  • 修复了从后台线程首次从 ComponentActivity 访问 onBackPressedDispatcher 时发生崩溃的问题。现在,您可以在任何线程上安全地访问 onBackPressedDispatcher。(I79955)

版本 1.9.0-alpha02

2024 年 1 月 24 日

发布了 androidx.activity:activity:1.9.0-alpha02androidx.activity:activity-compose:1.9.0-alpha02androidx.activity:activity-ktx:1.9.0-alpha02版本 1.9.0-alpha02 中包含这些提交内容

Kotlin 转换

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

bug 修复

  • enableEdgeToEdge API 现在会围绕任何显示屏缺口进行绘制。(a3644bb/311173461
  • Activity 1.8.2 开始:修复了传递给照片选择器 activity 协定的 ACTION_SYSTEM_FALLBACK_PICK_IMAGES 的 extra,以正确传递 EXTRA_SYSTEM_FALLBACK_PICK_IMAGES_MAX 键,而不是使用键 "com.google.android.gms.provider.extra.PICK_IMAGES_MAX" 的 extra。如果您是 OEM 且实现了系统后备照片选择器,强烈建议您同时支持这两个 extra,以确保最大限度地提高兼容性。(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 现在的最低 API 级别与 PickVisualMedia activity 结果协定相同,均为 19。(Id6e21)

依赖项更新

版本 1.8

版本 1.8.2

2023 年 12 月 13 日

发布了 androidx.activity:activity:1.8.2androidx.activity:activity-compose:1.8.2androidx.activity:activity-ktx:1.8.2版本 1.8.2 中包含这些提交内容。

bug 修复

  • 修复了传递给照片选择器 activity 协定的 ACTION_SYSTEM_FALLBACK_PICK_IMAGES 的 extra,以正确传递 EXTRA_SYSTEM_FALLBACK_PICK_IMAGES_MAX 键,而不是使用键 "com.google.android.gms.provider.extra.PICK_IMAGES_MAX" 的 extra。如果您是 OEM 且实现了系统后备照片选择器,强烈建议您同时支持这两个 extra,以确保最大限度地提高兼容性。(I96a00)

版本 1.8.1

2023 年 11 月 15 日

发布了 androidx.activity:activity:1.8.1androidx.activity:activity-compose:1.8.1androidx.activity:activity-ktx:1.8.1版本 1.8.1 中包含这些提交内容。

bug 修复

  • 现在,即使在处理返回手势时添加了新 OnBackPressedCallbackOnBackPressedDispatcher 也会继续调度到正确的 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 以来的重要变更

  • 预测性返回 - 除了提交返回手势时使用的上一个 handleOnBackPressed() 回调外,OnBackPressedCallback 现在还提供用于处理返回手势启动、整个手势的进度和取消返回手势的新预测性返回回调。它还附带 PredictiveBackHandler 可组合项,用于在 activity Compose 中处理预测性返回手势事件。它会提供 BackEventCompat 对象的 Flow,您必须在提供的挂起 lamba 中收集这些对象:
  PredictiveBackHandler { progress: Flow<BackEventCompat> ->
    // code for gesture back started
    try {
      progress.collect { backEvent ->
      // code for progress
    }
    // code for completion
    } catch (e: CancellationException) {
      // code for cancellation
    }
  }

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

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

版本 1.8.0-rc01

2023 年 9 月 20 日

发布了 androidx.activity:activity:1.8.0-rc01androidx.activity:activity-compose:1.8.0-rc01androidx.activity:activity-ktx:1.8.0-rc01版本 1.8.0-rc01 中包含这些提交内容

版本 1.8.0-beta01

2023 年 9 月 6 日

发布了 androidx.activity:activity:1.8.0-beta01androidx.activity:activity-compose:1.8.0-beta01androidx.activity:activity-ktx:1.8.0-beta01版本 1.8.0-beta01 中包含这些提交内容

文档改进

版本 1.8.0-alpha07

2023 年 8 月 23 日

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

新功能

  • Activity Compose 添加了一个新的 PredictiveBackHandler 可组合项来处理预测性返回手势事件。它提供了一个 BackEventCompat 对象的 Flow,必须在您提供的挂起 lamba 中收集:

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

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

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

bug 修复

  • 在 Android 13 上,当 ComponentActivity 收到 onBackPressed() 回调且 activity 已被 DESTROYED 时,ComponentActivity 将不再显示 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> 实例,这样,每当启用的回调数量从 0 变为非 0 或反之时,调度程序的所有者都可以接收回调。

bug 修复

版本 1.8.0-alpha04

2023 年 5 月 10 日

发布了 androidx.activity:activity:1.8.0-alpha04androidx.activity:activity-compose:1.8.0-alpha04androidx.activity:activity-ktx:1.8.0-alpha04。这是从内部分支发布的。

bug 修复

  • Activity 1.7.1 开始:- 将 ComponentActivityActivityScenario 搭配使用时,ReportFullyDrawExecuter 不再发生泄漏。(Id2ff2b/277434271

版本 1.8.0-alpha03

2023 年 4 月 12 日

发布了 androidx.activity:activity:1.8.0-alpha03androidx.activity:activity-compose:1.8.0-alpha03androidx.activity:activity-ktx:1.8.0-alpha03。这是从内部分支发布的。

新功能

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

API 变更

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

bug 修复

  • 修复了以下问题: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。这是通过内部分支构建的。

新功能

  • 除了提交返回手势时使用的上一个 handleOnBackPressed() 回调外,OnBackPressedCallback 类现在还添加了用于处理返回手势启动、整个手势的进度和取消返回手势的新预测性返回进度回调。

版本 1.7

版本 1.7.2

2023 年 5 月 24 日

发布了 androidx.activity:activity:1.7.2androidx.activity:activity-compose:1.7.2androidx.activity:activity-ktx:1.7.2版本 1.7.2 中包含这些提交内容。

bug 修复

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

版本 1.7.1

2023 年 4 月 19 日

发布了 androidx.activity:activity:1.7.1androidx.activity:activity-compose:1.7.1androidx.activity:activity-ktx:1.7.1版本 1.7.1 中包含这些提交内容

bug 修复

  • ComponentActivityActivityScenario 搭配使用时,ReportFullyDrawExecuter 不再发生泄漏。(Id2ff2b/277434271

版本 1.7.0

2023 年 3 月 22 日

发布了 androidx.activity:activity:1.7.0androidx.activity:activity-compose:1.7.0androidx.activity:activity-ktx:1.7.0版本 1.7.0 中包含这些提交内容

自 1.6.0 以来的重要变更

  • PickVisualMediaPickMultipleVisualMedia 中的照片选择器 activity 协定已更新,在 MediaStore.ACTION_PICK_IMAGES 不可用时包含额外的回退,这让 OEM 和系统应用(例如 Google Play 服务)能够通过实现回退操作,在更多 Android 设备和 API 级别上提供一致的照片选择器体验。照片选择器会先使用此回退方法(如果可用),然后再回退到使用 Intent.ACTION_OPEN_DOCUMENT,后者仍支持所有 API 19 及更高版本的设备。
  • ComponentDialog 现在实现了 SavedStateRegistryOwner,能访问自己的 SavedStateRegistry 并为其 ViewTree 设置 SavedStateRegistryOwner。现在,您可在 ComponentDialog 内使用 Jetpack Compose,因为它满足要求“LifecycleOwnerSavedStateRegistryOwner 都已通过 ViewTree API 附加到窗口”。
  • 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 不可用时会将操作和 extra 用作回退,现在这些操作和 extra 已成为公共常量,可为希望提供一致照片选择器体验的 OEM 和系统应用提供 API 稳定性。此回退的实现仍然仅限于系统应用。(Icd320)

版本 1.7.0-beta01

2023 年 2 月 8 日

发布了 androidx.activity:activity:1.7.0-beta01androidx.activity:activity-compose:1.7.0-beta01androidx.activity:activity-ktx:1.7.0-beta01版本 1.7.0-beta01 中包含这些提交内容

新功能

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

bug 修复

  • 现在,当框架照片选择器不可用时,PickVisualMedia 的回退会以正确的方式将处理应用限制为设备系统映像中安装的应用。(If8ae6)

Kotlin 转换

  • ActivityResultRegistryOwner 现在用 Kotlin 编写。对于使用 Kotlin 编写的类,这项变更与源代码不兼容。您现在必须替换 activityResultRegistry 属性,而不是实现之前的 getActivityResultRegistry() 函数。(I0b00e)
  • OnBackPressedDispatcherOwner 现在用 Kotlin 编写。对于使用 Kotlin 编写的类,这项变更与源代码不兼容。您现在必须替换 onBackPressedDispatcher 属性,而不是实现之前的 getOnBackPressedDispatcher 函数。(Ia277d)
  • ContextAwareContextAwareHelperOnContextAvailableListenerIntentSenderRequestOnBackPressedDispatcher 现在用 Kotlin 编写。(I1a73eIada92aosp/2410754I18ac7b/257291701

版本 1.7.0-alpha04

2023 年 1 月 25 日

发布了 androidx.activity:activity:1.7.0-alpha04androidx.activity:activity-compose:1.7.0-alpha04androidx.activity:activity-ktx:1.7.0-alpha04版本 1.7.0-alpha04 中包含这些提交内容

新功能

  • 现在,如果 Android 系统提供的照片选择器(例如,)无法使用,PickVisualMediaPickMultipleVisualMedia activity 结果协定将使用 Google Play 服务提供的可用的照片选择器。MediaStore.ACTION_PICK_IMAGES) 不可用。仅检测 Android 系统提供的照片选择器的 isPhotoPickerAvailable() API 已废弃。建议使用新的 isPhotoPickerAvailable(Context) API,该 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,因为它满足要求“LifecycleOwnerSavedStateRegistryOwner 都已通过 ViewTree API 附加到窗口”。(Idca17I73468b/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 中包含这些提交内容

bug 修复

  • Activity 1.6.1 开始:修复了使用 maxItems 的默认值时,PickMultipleVisualMedia Activity Result 协定不会在 Android R 设备上启动的问题。(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 中包含这些提交内容

bug 修复

  • 修复了使用 maxItems 的默认值时,PickMultipleVisualMedia Activity Result 协定不会在 Android R 设备上启动的问题。(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 中包含这些提交内容

bug 修复

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

依赖项更新

版本 1.6.0-rc01

2022 年 8 月 24 日

发布了 androidx.activity:activity:1.6.0-rc01androidx.activity:activity-compose:1.6.0-rc01androidx.activity:activity-ktx:1.6.0-rc01版本 1.6.0-rc01 中包含以下提交内容。

bug 修复

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

版本 1.6.0-beta01

2022 年 8 月 10 日

发布了 androidx.activity:activity:1.6.0-beta01androidx.activity:activity-compose:1.6.0-beta01androidx.activity:activity-ktx:1.6.0-beta01版本 1.6.0-beta01 中包含这些提交内容

API 变更

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

bug 修复

  • Activity 1.5.1 开始:当 launch 调用抛出任何 Exception 并且回调没有使用 LifecycleOwner 注册时,ActivityResultRegistry 将不再向 ActivityResultCallback 返回结果。(Ia7ff7b/238350794
  • Activity 1.5.1 开始:ComponentActivity 现在可以正确地将菜单调用分派给 onPrepareOptionMenu()onCreateOptionsMenu()onOptionsItemSelected() 替换值,而无需调用超级函数。(Ie33c5b/238057118

依赖项更新

版本 1.6.0-alpha05

2022 年 6 月 15 日

发布了 androidx.activity:activity:1.6.0-alpha05androidx.activity:activity-compose:1.6.0-alpha05androidx.activity:activity-ktx:1.6.0-alpha05。版本 1.6.0-alpha05 是在一个不公开的预发布分支中开发的,没有公开提交内容。

API 变更

  • minCompileSdk 的级别现为 33,以与 Tiramisu Beta 3 SDK 保持一致

bug 修复

  • 修复了在旧版设备上针对 PickVisualMedia ActivityResultContract 进行 SDK 扩展检查时发生崩溃的问题,现在它可以在搭载 Android 10 及更低版本的设备上使用 ACTION_OPEN_DOCUMENT

版本 1.6.0-alpha04

2022 年 5 月 18 日

发布了 androidx.activity:activity:1.6.0-alpha04androidx.activity:activity-ktx:1.6.0-alpha04

bug 修复

  • 修复了 PickVisualMediaRequest 中尝试通过构建器或顶级 Kotlin 函数创建请求会导致堆栈溢出的错误。
  • 将 Android 13 开发者 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 开发者 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 中包含这些提交内容

bug 修复

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

  • ComponentActivity 现在可以正确地将菜单调用分派给 onPrepareOptionMenu()onCreateOptionsMenu()onOptionsItemSelected() 替换值,而无需调用超级函数。(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,允许 View 通过通用方式检索正确的调度程序,无论它位于 ComponentActivity 还是 ComponentDialog 中。
  • 回调接口 - ComponentActivity 现在实现了一组可以代替 Activity 回调的模块化回调接口。这些接口包括:OnNewIntentProviderOnConfigurationChangedProviderOnTrimMemoryProviderOnPictureInPictureModeChangedProviderOnMultiWindowModeChangedProvider
  • CreationExtras 集成 - ComponentActivity 现在可以通过 Lifecycle 2.5.0CreationExtras 提供无状态 ViewModelProvider.Factory

其他变化

  • ActivityResultContracts.CreateDocument 的无参数构造函数已废弃,取而代之的是接受具体 MIME 类型(例如“image/png”)的新构造函数,如 Intent.ACTION_CREATE_DOCUMENT 所要求。

版本 1.5.0-rc01

2022 年 5 月 11 日

发布了 androidx.activity:activity:1.5.0-rc01androidx.activity:activity-compose:1.5.0-rc01androidx.activity:activity-ktx:1.5.0-rc01,这些版本与 1.5.0-beta01 相比没有变化。版本 1.5.0-rc01 中包含这些提交内容

版本 1.5.0-beta01

2022 年 4 月 20 日

发布了 androidx.activity:activity:1.5.0-beta01androidx.activity:activity-compose:1.5.0-beta01androidx.activity:activity-ktx:1.5.0-beta01版本 1.5.0-beta01 中包含这些提交内容

依赖项更新

版本 1.5.0-alpha05

2022 年 4 月 6 日

发布了 androidx.activity:activity:1.5.0-alpha05androidx.activity:activity-compose:1.5.0-alpha05androidx.activity:activity-ktx:1.5.0-alpha05版本 1.5.0-alpha05 中包含这些提交内容

bug 修复

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

版本 1.5.0-alpha04

2022 年 3 月 23 日

发布了 androidx.activity:activity:1.5.0-alpha04androidx.activity:activity-compose:1.5.0-alpha04androidx.activity:activity-ktx:1.5.0-alpha04版本 1.5.0-alpha04 中包含这些提交内容

bug 修复

  • SavedStateViewFactory 现在支持使用 CreationExtras,即使其通过 SavedStateRegistryOwner 进行初始化也不受影响。如果提供 extra,则会忽略初始化的参数。(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,允许 view 通过通用方式检索正确的调度程序,无论它位于 ComponentActivity 还是 ComponentDialog 中。(I8a1bc)
  • ComponentActivity 现在会实现新的 OnNewIntentProvider 接口,以允许任何组件接收这些事件。(If1f8b)
  • ComponentActivity 现在会实现新的 OnConfigurationChangedProvider 接口,以允许任何组件接收这些事件。(If623b)
  • ComponentActivity 现在会实现新的 OnTrimMemoryProvider 接口,以允许任何组件接收这些事件。(Ia9295)

API 变更

  • ActivityResultContracts.CreateDocument 的无参数构造函数已废弃,取而代之的是采用具体 MIME 类型(例如"image/png")的新构造函数,如 Intent.ACTION_CREATE_DOCUMENT 所要求。(I2bec6)
  • 现在,可以通过 ViewTreeOnBackPressedDispatcherOwner 检索与 view 关联的 OnBackPressedDispatcherOwner,而不是依赖于转换 Context。(I74685)

bug 修复

  • 修复了首次从 registerForActivityResult() 回调或对 LifecycleObserver(作为 ComponentActivityinit 的一部分添加)的回调访问 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 接口。这样一来,任何组件都可以向 activity 添加 MenuProvider 实例,从而向 ActionBar 添加菜单项。可根据需要为每个 MenuProvider 添加 Lifecycle,后者会根据 Lifecycle 状态自动控制这些菜单项的可见性,并在 Lifecycle 销毁后移除 MenuProvider
  • 使用 Kotlin 重写了 ActivityResultContract 类,以确保使用 Kotlin 编写自定义协定的开发者可以为其输入和输出类定义正确的是否可为 null 性规则。
  • 使用 Kotlin 重写了 ActivityResultContracts 类及其协定,以确保正确的是否可为 null 性规则。

版本 1.4.0-rc01

2021 年 10 月 13 日

发布了 androidx.activity:activity:1.4.0-rc01androidx.activity:activity-compose:1.4.0-rc01androidx.activity:activity-ktx:1.4.0-rc01版本 1.4.0-rc01 中包含这些提交内容

bug 修复

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

版本 1.4.0-beta01

2021 年 9 月 29 日

发布了 androidx.activity:activity:1.4.0-beta01androidx.activity:activity-compose:1.4.0-beta01androidx.activity:activity-ktx:1.4.0-beta01版本 1.4.0-beta01 中包含这些提交内容

API 变更

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

文档更新

  • 现在,由 Activity Result API(即 startActivityForResultstartIntentSenderForResultonActivityResultrequestPermissionsonRequestPermissionsResult)处理的 API 的废弃消息均已扩展,并提供了更多详情。(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 变更

  • 使用 Kotlin 重写了 ActivityResultContract 类,以确保使用 Kotlin 编写自定义协定的开发者可以为其输入和输出类定义正确的是否可为 null 性规则。(I8a8f5)
  • 使用 Kotlin 重写了 ActivityResultContracts 类及其协定,以确保正确的是否可为 null 性规则。(I69802)

版本 1.4.0-alpha01

2021 年 9 月 1 日

发布了 androidx.activity:activity:1.4.0-alpha01androidx.activity:activity-compose:1.4.0-alpha01androidx.activity:activity-ktx:1.4.0-alpha01版本 1.4.0-alpha01 中包含这些提交内容

新功能

  • AndroidX ComponentActivity 现在会实现 MenuHost 接口。这样一来,任何组件都可以向 activity 添加 MenuProvider 实例,从而向 ActionBar 添加菜单项。可根据需要为每个 MenuProvider 添加 Lifecycle,后者会根据 Lifecycle 状态自动控制这些菜单项的可见性,并在 Lifecycle 销毁后移除 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 扩展方法,用于在 activity 中托管 Jetpack Compose 界面;且提供了 Compose 专用封装容器,用于与 ComponentActivity API 交互来处理系统返回按钮,以及与 Activity Result API 交互。如需了解详情,请参阅文档
  • CaptureVideo 协定 - CaptureVideo ActivityResultContract 取代了现已废弃的 TakeVideo 协定,并返回一个布尔值,表示可成功应用于多款相机应用。
  • 画中画提示视图跟踪 - activity-ktx 的用户现在可以在 Activity 上使用 trackPipAnimationHintView 扩展方法,并在视图相对于窗口的位置发生变化时,使用视图的新位置自动重建 PictureInPictureParams

版本 1.3.0-rc02

2021 年 7 月 14 日

发布了 androidx.activity:activity:1.3.0-rc02androidx.activity:activity-compose:1.3.0-rc02androidx.activity:activity-ktx:1.3.0-rc02版本 1.3.0-rc02 中包含这些提交内容

bug 修复

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

版本 1.3.0-rc01

2021 年 7 月 1 日

发布了 androidx.activity:activity:1.3.0-rc01androidx.activity:activity-compose:1.3.0-rc01androidx.activity:activity-ktx:1.3.0-rc01,这些版本与 1.3.0-beta02 相比没有变化。版本 1.3.0-rc01 中包含这些提交内容。

版本 1.3.0-beta02

2021 年 6 月 16 日

发布了 androidx.activity:activity:1.3.0-beta02androidx.activity:activity-compose:1.3.0-beta02androidx.activity:activity-ktx:1.3.0-beta02版本 1.3.0-beta02 中包含这些提交内容

更新了 activity-compose,现在依赖于 Compose 1.0.0-beta09activity-compose 现在于 androidx.compose.ui:ui-test-junit4 中设置了一个编译时间依赖项。

版本 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 的源 Rect 提示。(I9063d)

API 变更

  • rememberLauncherForActivityResult 函数现在会返回一个会废弃 unregister() 函数的启动器 - rememberLauncherForActivityResult 会自动处理注册和取消注册该启动器的操作。(I2443e)

Compose 兼容性

  • androidx.activity:activity-compose:1.3.0-alpha08 仅与 Compose 版本 1.0.0-beta07 及更高版本兼容。

版本 1.3.0-alpha07

2021 年 4 月 21 日

发布了 androidx.activity:activity:1.3.0-alpha07androidx.activity:activity-compose:1.3.0-alpha07androidx.activity:activity-ktx:1.3.0-alpha07版本 1.3.0-alpha07 中包含这些提交内容。

bug 修复

  • rememberLauncherForActivityResult 现在会返回对同一 ActivityResultLauncher 实例的稳定引用,即使协定因重构而发生变更也是如此。(Id2d6d)
  • 使用 1.3.0 以上的不稳定版 fragment 不会再发出提示您使用 1.3.0 的误报 lint 错误。(aosp/1670206b/184847092

版本 1.3.0-alpha06

2021 年 4 月 7 日

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

API 变更

  • registerForActivityResult() API 已重命名为 rememberLauncherForActivityResult(),以更好地表明返回的 ActivityResultLauncher 是代表您保存的托管对象。现在,如果尝试调用 unregister,则返回的 ActivityResultLauncher 会抛出错误。(I2bb6d)
  • 现在,LocalOnBackPressedDispatcherOwner.currentLocalActivityResultRegistryOwner.current 会返回可为 null 的值,以更好地确定其在当前组合中是否可用。现在,如果未找到底层所有者,则需要这些 API 的 API(例如 BackHandlerrememberLauncherForActivityResult())会抛出更具描述性的错误。现在,即使未找到 OnBackPressedDispatcherOwner(例如在预览 NavHost 时),NavHost 也可正常运行。(I7d8b4)

bug 修复

  • 现在,如果 Activity 先为 STOPPED,然后重新变为 STARTED,且之前通过 LifecycleOwner 添加了其他回调,则 BackHandler 会正确拦截按下返回按钮的操作。(I71de6b/182284739
  • 在使用 launch() 方法扩展项(包含具有 Unit 输入的自定义 ActivityResultContract)时,不会再导致 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 中包含这些提交内容。

bug 修复

  • Activity 1.2.2 起:修复了使用 Fragment 1.3.1 或更高版本时导致 InvalidFragmentVersionForActivityResult lint 检查出现误报的问题。(I54da1b/182388985
  • Activity 1.2.2 起:从之前在另一 Intent 中保存为 extra 的 ActivityResultContract 中启动某个 Intent 时,ComponentActivity 现在不再发生 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 中包含这些提交内容。

bug 修复

  • Activity 1.2.1 起:RequestMultiplePermissions 现在一律会返回所有请求的权限的结果,而不是仅返回之前未授予的权限的结果。(I50bc3b/180884668
  • Activity 1.2.1 起:ActivityResultRegistry 现在可确保进行中的 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 函数从可组合项中的 activity 获取结果。(Ia7851b/172690553

API 变更

  • LocalOnBackPressedDispatcherOwner 现在包含可与 CompositionLocalProvider 搭配使用的 provides 函数,替换了 asProvidableCompositionLocal() API。(I45d24)

版本 1.3.0-alpha02

2021 年 2 月 10 日

发布了 androidx.activity:activity:1.3.0-alpha02androidx.activity:activity-compose:1.3.0-alpha02androidx.activity:activity-ktx:1.3.0-alpha02版本 1.3.0-alpha02 中包含这些提交内容

bug 修复

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

API 变更

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

版本 1.3.0-alpha01

2021 年 2 月 10 日

发布了 androidx.activity:activity:1.3.0-alpha01androidx.activity:activity-compose:1.3.0-alpha01androidx.activity:activity-ktx:1.3.0-alpha01版本 1.3.0-alpha01 中包含这些提交内容

新功能

  • 新的 activity-compose 工件为 androidx.activity 专用 API 提供了特定于 Jetpack Compose 的帮助程序。
    • ComponentActivity.setContent 已从 androidx.compose.ui.platform.setContent 移至 androidx.activity.compose.setContent。(Icf416)

已知问题

  • 使用 Activity Compose 1.3.0-alpha01 以及依赖于它的库(例如 androidx.compose.ui:ui-test-junit4:1.0.0-alpha12)将会导致 NoSuchMethodError: No static method setContent 异常。(b/179911234)

版本 1.2.4

版本 1.2.4

2021 年 7 月 21 日

发布了 androidx.activity:activity:1.2.4androidx.activity:activity-ktx:1.2.4版本 1.2.4 中包含这些提交内容

bug 修复

版本 1.2.3

版本 1.2.3

2021 年 5 月 5 日

发布了 androidx.activity:activity:1.2.3androidx.activity:activity-ktx:1.2.3版本 1.2.3 中包含这些提交内容

bug 修复

  • 在使用 launch() 方法扩展项(包含具有 Unit 输入的自定义 ActivityResultContract)时,不会再导致 NullPointerExceptionI76282b/183837954
  • 修复了在使用较新版本的 fragment 的快照、Alpha 版、Beta 版或 RC build 时,提示您使用 fragment 1.3.0 的误报 lint 错误。(f4a57eb/184847092

版本 1.2.2

版本 1.2.2

2021 年 3 月 24 日

发布了 androidx.activity:activity:1.2.2androidx.activity:activity-ktx:1.2.2版本 1.2.2 中包含这些提交内容。

bug 修复

  • 修复了使用 Fragment 1.3.1 或更高版本时 InvalidFragmentVersionForActivityResult lint 检查会导致误报的问题。(I54da1b/182388985
  • 从之前在另一 Intent 中保存为 extra 的 ActivityResultContract 中启动某个 Intent 时,ComponentActivity 现在不再发生 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 中包含这些提交内容。

bug 修复

  • RequestMultiplePermissions 现在一律会返回所有请求的权限的结果,而不是仅返回之前未授予的权限的结果。(I50bc3b/180884668
  • ActivityResultRegistry 现在可确保进行中的 launch() 请求将会返回其结果,即使您 unregister() 然后又使用同一密钥重新 register()。(I9ef34b/181267562

版本 1.2.0

版本 1.2.0

2021 年 2 月 10 日

发布了 androidx.activity:activity:1.2.0androidx.activity:activity-ktx:1.2.0版本 1.2.0 中包含这些提交内容

自 1.1.0 以来的重要变更

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

    • 暂停 Kotlin 扩展程序 withContextAvailable() 可让您在上下文可用时运行非暂停代码块,并返回结果。
    • 此 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,以便针对直接添加到 ComponentActivity 中的任何 View 将相应 activity 返回为 LifecycleOwnerViewModelStoreOwnerSavedStateRegistryOwner

  • reportFullyDrawn() 向后移植 - reportFullyDrawn()Activity 方法已反向移植到 ComponentActivity 中,以便在所有 API 级别上使用,从而修复了 API 19 上的崩溃问题并为所有 API 级别添加了对此方法的跟踪。

版本 1.2.0-rc01

2020 年 12 月 16 日

发布了 androidx.activity:activity:1.2.0-rc01androidx.activity:activity-ktx:1.2.0-rc01版本 1.2.0-rc01 中包含这些提交内容

bug 修复

  • 现在,ActivityResultRegistry 始终会恢复已保存的确切状态。(Idd56b)
  • 添加了 ComponentActivity.reportFullyDrawn 跟踪记录 (Ic7632)

外部贡献

  • ComponentActivity 现在替换了 reportFullyDrawn(),使得所有 API 级别中都能调用此方法,并且修复了 API 19 设备在无适当系统权限的情况下调用此方法时发生崩溃的问题。感谢 Simon Schiller!(b/163239764#103

版本 1.2.0-beta02

2020 年 12 月 2 日

发布了 androidx.activity:activity:1.2.0-beta02androidx.activity:activity-ktx:1.2.0-beta02版本 1.2.0-beta02 中包含这些提交内容

bug 修复

  • 修复了 Activity Result API 在通过 Lifecycle 进行注册的情况下不会等到 Lifecycle 变为 STARTED 状态后再传递结果的问题。(I109ea)

外部贡献

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

版本 1.2.0-beta01

2020 年 10 月 1 日

发布了 androidx.activity:activity:1.2.0-beta01androidx.activity:activity-ktx:1.2.0-beta01版本 1.2.0-beta01 中包含这些提交内容

bug 修复

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

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

行为变更

  • 现在,尝试使用 Lifecycle 已达到 STARTEDLifecycleOwner 调用 register() 时,ActivityResultRegistry 会抛出 IllegalStateException。(b/165435866)

文档更新

  • ContextAware 文档中添加了 LifecycleOwner 的链接,重点说明 Lifecycle 回调是适合创建和销毁事件的位置。(aosp/1414152)

版本 1.2.0-alpha08

2020 年 8 月 19 日

发布了 androidx.activity:activity:1.2.0-alpha08androidx.activity:activity-ktx:1.2.0-alpha08版本 1.2.0-alpha08 中包含这些提交内容

新功能

  • ComponentActivity 现在实现 ContextAware,可让您添加一个或多个 OnContextAvailableListener 实例,它们将在基 Activity.onCreate() 之前接收回调。(b/161390636)
    • 暂停 Kotlin 扩展程序 withContextAvailable() 可让您在上下文可用时运行非暂停代码块,并返回结果。(I8290c)
    • 此 API 由 Fragment 1.3.0-alpha08 中的 FragmentActivity 用来恢复 FragmentManager 的状态。向 FragmentActivity 子类添加的任何监听器都将在该监听器之后运行。(I513da)
    • 此 API 由 AppCompat 1.3.0-alpha02 中的 AppCompatActivity 使用。向 AppCompatActivity 子类添加的任何监听器都将在该监听器之后运行。(I513da)

bug 修复

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

版本 1.2.0-alpha07

2020 年 7 月 22 日

发布了 androidx.activity:activity:1.2.0-alpha07androidx.activity:activity-ktx:1.2.0-alpha07版本 1.2.0-alpha07 中包含这些提交内容

新功能

  • 添加了新的 InvalidFragmentVersionForActivityResult lint 检查,用于验证在使用 Activity Result API 时使用的是否为 Fragment 1.3.0-alpha07,从而避免因“请求代码无效”问题引起的运行时崩溃,以及由于使用较低版本的 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() 来更好地指示这些是异步操作。针对 ActivityResultLauncher<Void>ActivityResultLauncher<Unit>androidx.activity.result 软件包添加了 launch 的 Kotlin 扩展,这样就不再需要分别传入 nullUnit,而是从之前的 invoke() 扩展镜像了该行为。(aosp/1304674aosp/1304675
  • setFlagsMask()setFlagsValues()IntentSenderRequest.Builder 方法已组合成单个 setFlags() 方法。(aosp/1302111)

bug 修复

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

行为变更

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

版本 1.2.0-alpha04

2020 年 4 月 29 日

发布了 androidx.activity:activity:1.2.0-alpha04androidx.activity:activity-ktx:1.2.0-alpha04版本 1.2.0-alpha04 中包含这些提交内容

新功能

  • 向 ActivityResult API 添加了可以调用 startIntentSenderForResult 的协定。(b/153007517)

API 变更

  • prepareCall() 方法已重命名为 registerForActivityResult(),在此处的 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)

bug 修复

  • 使用 GetMultipleContentsOpenMultipleDocuments 协定并选择单项时,现在会正确地向回调返回结果。(b/152941153)

版本 1.2.0-alpha03

2020 年 4 月 1 日

发布了 androidx.activity:activity:1.2.0-alpha03androidx.activity:activity-ktx:1.2.0-alpha03版本 1.2.0-alpha03 中包含这些提交内容

新功能

  • 在由 ActivityResultContracts 提供的一组预构建协定的基础上添加了 TakeVideoPickContactGetContentGetContentsOpenDocumentOpenDocumentsOpenDocumentTreeCreateDocument 协定。(aosp/1262482aosp/1266916aosp/1268960)
  • Activity Result API 现在支持使用可选的 ActivityOptionsCompat 启动 activity 获取结果。(b/151860054)

API 变更

  • TakePicture 协定现在可接受标记了的图片应该存储的位置 Uri 输入。不接受任何输入的旧协定已重命名为 TakePicturePreview。(aosp/1262482)
  • ActivityResultRegistry 上的 registerActivityResultCallback() 方法已重命名为 register()。(aosp/1267621)
  • ActivityResultLauncherdispose() 方法已重命名为 unregister()ActivityResultRegistryunregisterResultCallback() 已移除。(aosp/1267621)
  • 除了输入内容之外,ActivityResultContactcreateIntent() 方法现在还会获取 Context,以创建显式 intent。(aosp/1238800)
  • 现在,ActivityResultContract 可以替换 getSynchronousResult(),无需调用 startActivityForResult 即可传递结果。如果已授予所请求的权限,RequestPermissionRequestPermissions 协定将使用该方法来正确传递“已授权”状态。(b/151110799)
  • 由于 Intent 不会与 startActivityForResult() 一起使用,之前可用的 Dial 协定已移除。(aosp/1266916)
  • 许多不会扩展的 Activity Result API 现在都为 final。其中包括 getActivityResultRegistry()prepareCall() 方法、除 invoke() 以外的所有 ActivityResultRegistry 方法,以及一些不支持可选额外项的默认协定。(b/152439361)

bug 修复

  • 修复了在配置更改后,尝试向尚未重新注册的回调传递结果时,ActivityResultRegistry 中的 NullPointerExceptionActivityResultRegistry 现在会保留这些待处理的结果,并在重新注册回调时传递这些结果。(b/152137004)

版本 1.2.0-alpha02

2020 年 3 月 18 日

发布了 androidx.activity:activity:1.2.0-alpha02androidx.activity:activity-ktx:1.2.0-alpha02版本 1.2.0-alpha02 中包含这些提交内容

新功能

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

版本 1.2.0-alpha01

2020 年 3 月 4 日

发布了 androidx.activity:activity:1.2.0-alpha01androidx.activity:activity-ktx:1.2.0-alpha01版本 1.2.0-alpha01 中包含这些提交内容

新功能

  • Lifecycle 2.3.0-alpha01 中添加了对 ViewTreeLifecycleOwner.get(View) API 的支持,以便在任意视图的 LifecycleOwner 直接添加到 Activity 时返回 Activity。(aosp/1182955)

bug 修复

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

版本 1.1.0

版本 1.1.0

2020 年 1 月 22 日

发布了 androidx.activity:activity:1.1.0版本 1.1.0 中包含这些提交内容

自 1.0.0 以来的重要变更

  • Lifecycle ViewModel SavedState 集成:现在将 by viewModels()ViewModelProvider 构造函数或 ViewModelProviders.of()ComponentActivity 或其子类一起使用时,会使用 SavedStateViewModelFactory 作为默认出厂设置。

版本 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 稳定版。

bug 修复

版本 1.1.0-alpha02

2019 年 8 月 7 日

发布了 androidx.activity:activity:1.1.0-alpha02androidx.activity:activity-ktx:1.1.0-alpha02。点击此处可查看此版本中包含的提交内容。

新功能

  • SavedStateViewModelFactory 现在是将 by viewModels()ViewModelProvider 构造函数或 ViewModelProviders.of()ComponentActivity 一起使用时所用的默认出厂设置 (b/135716331)。

版本 1.1.0-alpha01

2019 年 7 月 2 日

发布了 androidx.activity:activity:1.1.0-alpha01androidx.activity:activity-ktx:1.1.0-alpha01。点击此处可查看此版本中包含的提交内容。

新功能

  • activity 现在依赖于生命周期 2.2.0-alpha02。(aosp/1007817)
  • activity-ktx 新增了 lifecycle-runtime-ktx 的依赖项;使用 activity-ktx 或依赖于 activity-ktx 的库(例如 fragment-ktx)时,您不再需要将其明确添加到依赖项 (aosp/987162)

版本 1.0.0

版本 1.0.0

2019 年 9 月 5 日

发布了 androidx.activity:activity:1.0.0androidx.activity:activity-ktx:1.0.0。点击此处可查看此版本中包含的提交内容。

1.0.0 的主要功能

  • ComponentActivityComponentActivityFragment 1.1.0 中充当 FragmentActivity 的新基类,由此引申开来,它在 AppCompat 1.1.0 中充当 AppCompatActivity 的新基类。
  • activity-ktxactivity-ktx 模块包含用于访问 ViewModel 的 by viewModels Kotlin 属性扩展。当您添加 Fragment 1.1.0 中的 fragment-ktx 时,系统会自动添加此模块。
  • OnBackPressedDispatcher:作为替换 onBackPressed() 的可组合替代方案,您现在可以从任何 LifecycleOwner(如 fragment)注册 OnBackPressedCallback 来拦截系统返回按钮事件。具有接收器版本 addCallback 的 lambda 已添加到 activity-ktx。如需了解详情,请参阅提供自定义返回导航文档
  • 废弃 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() 方法现已最终确定。b/131416833
  • OnBackPressedCallbackremove() 方法现已最终确定。aosp/952720
  • OnBackPressedDispatcher 现在具有公共构造函数,您可以使用它们来构造自己的实例以进行测试等。aosp/953431
  • ComponentActivityonBackPressed() 现在已明确标记为 @MainThreadaosp/952721

bug 修复

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

版本 1.0.0-alpha07

2019 年 4 月 25 日

发布了 androidx.activity:activity:1.0.0-alpha07androidx.activity:activity-ktx:1.0.0-alpha07。点击此处可查看此版本中包含的提交内容。

API 变更

此版本对 onBackPressed() 的处理方式进行了重大更改。如需了解详情,请参阅更新后的自定义返回导航文档

  • OnBackPressedCallbackOnBackPressedDispatcher 的方法已被标记为 @MainThread。(aosp/943813)
  • handleOnBackPressed() 方法不再返回 boolean。相反,OnBackPressedCallback 现在是一个可以启用或停用的抽象类 - 只有在新的 isEnabled() 方法返回 true 时,才会调用 handleOnBackPressed(),在这种情况下,您必须处理返回按钮。(aosp/944518)
  • OnBackPressedDispatcheraddCallback 方法不再返回 Cancellable 实例。OnBackPressedCallback 现在包含可实现此功能的 remove() 方法,允许您在 handleOnBackPressed() 期间调用 remove()。(aosp/944519) (aosp/946316)
  • activity-ktx 现在包含接收器限定范围的 addCallback,它接受实现 handleOnBackPressed() 的 lamdba,并且可以访问 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 变更

  • AppCompatActivity 现在包含采用 @LayoutRes int 的第二个构造函数,取代了以前使用 @ContentView 注释 AppCompatActivity 类的行为。此方法同时适用于应用和库模块。(b/128352521)
  • ComponentActivity 的 OnBackPressedCallback 相关 API 已废弃,取而代之的是可通过 getOnBackPressedDispatcher() 检索的新 OnBackPressedDispatcher。(aosp/922523)
  • 用于向 OnBackPressedDispatcher 添加新 OnBackPressedCallback的方法现在会返回 Cancellable 对象,从而允许移除回调,而无需明确引用 OnBackPressedDispatcher。(aosp/922523)
  • 如果添加具有关联 LifecycleOwnerOnBackPressedCallback,现在会导致分别在 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。点击此处可查看此版本中包含的完整提交内容列表。

新功能

版本 1.0.0-alpha04

2019 年 1 月 30 日

发布了 androidx.activity:activity 1.0.0-alpha04androidx.activity:activity-ktx 1.0.0-alpha04

新功能

  • 添加了对 @ContentView 类注释的支持,可让您指明应扩充哪个布局 XML 文件来代替使用 setContentView()。(aosp/837619)

API 变更

  • 添加了一条说明,指明 getViewModelStore() 不应被替换,它将在未来的版本中设为 final。如果您当前正在替换此方法,请提交功能请求。(aosp/837619)

bug 修复

  • 为了与 activity-ktx 模块的依赖项一致,activity 现在依赖于 ViewModel 的 2.1.0-alpha02 版本。

版本 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() 回调,而无需在 activity 中替换该方法。
  • 添加了新的 by viewModels() Kotlin 属性委托,用于从 ComponentActivity 检索 ViewModel
  • 现在,onStop() 中取消了待处理输入事件(例如点击)。

API 变更

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