Activity

访问基于 Activity 构建的可组合 API。
最近更新时间 当前稳定版 下一候选版本 Beta 版 Alpha 版
2021 年 6 月 2 日 1.2.3 - 1.3.0-beta01 -

声明依赖项

如需添加 Activity 的依赖项,您必须将 Google Maven 代码库添加到项目中。如需了解详情,请参阅 Google 的 Maven 代码库

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

Groovy

dependencies {
    def activity_version = "1.2.3"

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

Kotlin

dependencies {
    val activity_version = "1.2.3"

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

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

反馈

您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对库的改进有某些建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。

创建新问题

如需了解详情,请参阅问题跟踪器文档

版本 1.3.0

版本 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 中包含这些提交内容。

问题修复

  • 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)

问题修复

  • 现在,如果 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 中包含这些提交内容。

问题修复

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

问题修复

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

问题修复

  • 修复了 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.3

版本 1.2.3

2021 年 5 月 5 日

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

问题修复

  • 在使用 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 中包含这些提交内容。

问题修复

  • 修复了使用 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 中包含这些提交内容。

问题修复

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

版本 1.2.0

版本 1.2.0

2021 年 2 月 10 日

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

自 1.1.0 以来的重要变更

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

    • 通过挂起的 Kotlin 扩展 withContextAvailable(),您可以在 Context 变为可用时运行非挂起代码块,并返回结果。
    • 此 API 由 Fragment 1.3.0 中的 FragmentActivity 用来恢复 FragmentManager 的状态。向 FragmentActivity 的子类添加的任何监听器都将在该监听器之后运行。
    • 此 API 由 AppCompat 1.3.0-alpha02 或更高版本中的 AppCompatActivity 使用。向 AppCompatActivity 的子类添加的任何监听器都将在该监听器之后运行。
  • ViewTree 支持ComponentActivity 现在支持在 Lifecycle 2.3.0SavedState 1.1.0 中添加的 ViewTreeLifecycleOwner.get(View)ViewTreeViewModelStoreOwner.get(View)ViewTreeSavedStateRegistryOwner API,以便针对直接添加到 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 中包含这些提交内容

问题修复

  • 现在,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 中包含这些提交内容

问题修复

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

问题修复

  • 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)

问题修复

  • 修复了在使用 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)

问题修复

  • 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)

问题修复

  • 使用 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)

问题修复

  • 修复了在配置更改后,尝试向尚未重新注册的回调传递结果时,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)

问题修复

  • 修复了在旧版平台上运行时在 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 集成:现在将 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 稳定版。

问题修复

版本 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 属性扩展。当您添加 Fragment1.1.0 中的 fragment-ktx 时,系统会自动添加此模块。
  • OnBackPressedDispatcher:作为替换 onBackPressed() 的可组合替代方案,您现在可以从任何 LifecycleOwner(如 Fragment)注册 OnBackPressedCallback来拦截系统返回按钮事件。具有接收器版本 addCallback 的 lambda 已添加到 activity-ktx。如需了解详情,请参阅提供自定义返回导航文档
  • onRetainCustomNonConfigurationInstance 弃用:已弃用 onRetainCustomNonConfigurationInstance() 和相关的 getLastCustomNonConfigurationInstance() API。强烈建议使用 ViewModel 来存储非配置状态,因为它可以提供适合任何 ViewModelStoreOwner 的可组合解决方案。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

问题修复

  • 修复了从使用 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)

问题修复

  • 为了与 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 存储需要在配置更改后继续留存的对象。