Savedstate

编写可插拔组件,在进程死亡时保存 UI 状态,并在进程重新启动时恢复该状态。
最新更新 稳定版 候选版本 Beta 版 Alpha 版
2024 年 8 月 7 日 1.2.1 - - 1.3.0-alpha01

声明依赖项

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

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

Groovy

dependencies {
    // Java language implementation
    implementation "androidx.savedstate:savedstate:1.2.1"

    // Kotlin
    implementation "androidx.savedstate:savedstate-ktx:1.2.1"
}

Kotlin

dependencies {
    // Java language implementation
    implementation("androidx.savedstate:savedstate:1.2.1")

    // Kotlin
    implementation("androidx.savedstate:savedstate-ktx:1.2.1")
}

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

反馈

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

创建新的问题

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

版本 1.3

版本 1.3.0-alpha01

2024 年 8 月 7 日

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

API 更改

  • savedstate-ktx Kotlin 扩展现已移至基本 savedstate 模块。(I1cc18b/274803094

注意

  • compileSdk 更新到 35(5dc41be

版本 1.2.1

版本 1.2.1

2023 年 3 月 22 日

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

依赖项更新

版本 1.2.0

版本 1.2.0

2022 年 6 月 29 日

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

自 1.1.0 以来重要的更改

  • SavedStateRegistryController 现在允许通过 performAttach() 早期附加 SavedStateRegistry
  • 您现在可以通过 getSavedStateProvider()SavedStateRegistry 中检索之前注册的 SavedStateProvider
  • SavedState 库已重写为 Kotlin。
    • 对于 SavedStateRegistryOwner,对于用 Kotlin 编写的那些类来说,这是一个**源代码不兼容的更改** - 您现在必须覆盖 savedStateRegistry 属性,而不是实现以前的 getSavedStateRegistry() 函数。
    • 对于 ViewTreeSavedStateRegistryOwner,对于用 Kotlin 编写的那些类来说,这是一个**源代码不兼容的更改** - 您现在必须直接导入并在 View 上使用 Kotlin 扩展方法 androidx.savedstate.setViewTreeSavedStateRegistryOwnerandroidx.savedstate.findViewTreeSavedStateRegistryOwner 来设置和查找之前设置的所有者。这取代了 savedstate-ktx API 的 findViewTreeSavedStateRegistryOwner

行为更改

  • SavedStateRegistry 如果没有状态需要保存,则不再保存空 Bundle。

版本 1.2.0-rc01

2022 年 5 月 11 日

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

文档更改

  • SavedStateRegistryOwner 的 Kdocs 已更新,以阐明所有者在如何实现接口或何时在 SavedStateRegistryController 上调用方法方面所承担的责任和契约。 (Iefc95b/228887344)

版本 1.2.0-beta01

2022 年 4 月 20 日

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

API 更改

  • SavedStateRegistryViewTreeSavedStateRegistryOwner 类已重写为 Kotlin。对于 ViewTreeSavedStateRegistryOwner,对于用 Kotlin 编写的那些类来说,这是一个**源代码不兼容的更改** - 您现在必须直接导入并在 View 上使用 Kotlin 扩展方法 androidx.savedstate.setViewTreeSavedStateRegistryOwnerandroidx.savedstate.findViewTreeSavedStateRegistryOwner 来设置和查找之前设置的所有者。这取代了 savedstate-ktx API 的 findViewTreeSavedStateRegistryOwner。这对二进制文件兼容,并且对于用 Java 编程语言编写的实现来说仍然是源代码兼容的。 (b/220191285)

版本 1.2.0-alpha02

2022 年 4 月 6 日

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

新功能

  • 您现在可以通过 getSavedStateProvider()SavedStateRegistry 中检索之前注册的 SavedStateProvider。 (I7ea47b/215406268)

API 更改

  • SavedStateRegistryOwnerSavedStateRegistryControllerRecreator 类已重写为 Kotlin。对于 SavedStateRegistryOwner,对于用 Kotlin 编写的那些类来说,这是一个**源代码不兼容的更改** - 您现在必须覆盖 savedStateRegistry 属性,而不是实现以前的 getSavedStateRegistry() 函数。这对二进制文件兼容,并且对于用 Java 编程语言编写的实现来说是源代码兼容的。 (b/220191285)

版本 1.2.0-alpha01

2022 年 1 月 26 日

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

新功能

  • SavedStateRegistryController 现在允许通过 performAttach() 早期附加 SavedStateRegistry。 (Ice4bf)

行为更改

版本 1.1.0

版本 1.1.0

2021 年 2 月 10 日

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

自 1.0.0 以来主要的更改

  • ViewTreeSavedStateRegistryOwner API:新的 ViewTreeSavedStateRegistryOwner.get(View) API 允许您在给定 View 实例的情况下检索包含的 SavedStateRegistry。您必须升级到 Activity 1.2.0Fragment 1.3.0AppCompat 1.3.0-alpha01 或更高版本才能正确填充此内容。
  • savedstate-ktx 工件:已添加新的 savedstate-ktx 工件,其中包含一个用于处理 ViewTreeSavedStateRegistryOwnerfindViewTreeSavedStateRegistryOwner() Kotlin 扩展方法。

版本 1.1.0-rc01

2020 年 12 月 16 日

androidx.savedstate:savedstate:1.1.0-rc01androidx.savedstate:savedstate-ktx:1.1.0-rc01 已发布,自 1.1.0-beta01 以来没有更改。 版本 1.1.0-rc01 包含这些提交。

版本 1.1.0-beta01

2020 年 10 月 1 日

androidx.savedstate:savedstate:1.1.0-beta01androidx.savedstate:savedstate-ktx:1.1.0-beta01 已发布,自 1.1.0-alpha01 以来没有更改。 版本 1.1.0-beta01 包含这些提交。

版本 1.1.0-alpha01

2020 年 5 月 20 日

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

新功能

  • 新的 ViewTreeSavedStateRegistryOwner.get(View) API 允许您在给定 View 实例的情况下检索包含的 SavedStateRegistry。您必须升级到 Activity 1.2.0-alpha05Fragment 1.3.0-alpha05AppCompat 1.3.0-alpha01 才能正确填充此内容。 (aosp/1298679)
  • 已添加新的 savedstate-ktx 工件,其中包含一个用于处理 ViewTreeSavedStateRegistryOwnerfindViewTreeSavedStateRegistryOwner() Kotlin 扩展方法。 (aosp/1299434)

版本 1.0.0

版本 1.0.0

2019 年 9 月 5 日

androidx.savedstate:savedstate:1.0.0 已发布。此版本中包含的提交可以在这里找到 这里

SavedState 1.0.0 的主要功能

androidx.savedstate 已发布稳定版本。这是一组 API,允许开发人员将组件插入到 restore / saveInstanceState 过程中。API 的主要入口点是 SavedStateRegistry,它提供了一种使用 consumeRestoredStateForKey 检索之前保存的状态以及注册回调到 registerSavedStateProvider 的方法,以便在系统请求时提供保存的状态。

版本 1.0.0-rc01

2019 年 7 月 2 日

androidx.savedstate:savedstate:1.0.0-rc01 已发布。此版本中包含的提交可以在这里找到 这里

错误修复

版本 1.0.0-beta01

2019 年 5 月 7 日

androidx.savedstate:savedstate:1.0.0-beta01 已发布。此版本中包含的提交可以在这里找到 这里

版本 1.0.0-alpha02

2019 年 3 月 13 日

androidx.savedstate:savedstate:1.0.0-alpha02 已发布。androidx.savedstate:savedstate 将工件 androidx.savedstate:savedstate-bundleandroidx.savedstate:savedstate-common 合并为一个工件,因为已决定简化 savedstate 基础结构并从 SavedStateRegistry 中删除泛型。因此,无需单独的模块。

此版本中包含的完整提交列表可以在这里找到 这里

新功能

  • 已添加 SavedStateRegistry.runOnNextRecreaction(Class<? extends AutoRecreated> clazz )。当拥有组件重新启动时,将实例化给定的类,并将运行方法 AutoRecreated.onRecreated

API 更改

  • SavedStateRegistry<T> 中删除了泛型
  • AbstractSavedStateRegistry 和 BundlableSavedStateRegistry 已删除,请改用简单的 SavedStateRegistry
  • BundleSavedStateRegistryOwner 已重命名为 SavedStateRegistryOwner

版本 1.0.0-alpha01

2018 年 12 月 17 日

这是 SavedState 的第一个版本。

新功能

androidx.savedstate 是一组新的 alpha API,允许开发人员将组件插入到 restore / saveInstanceState 过程中。API 的主要入口点是 SavedStateRegistry<T>,它提供了一种通过 consumeRestoredStateForKey 检索之前保存的状态以及注册回调到 registerSavedStateProvider 的方法,以便在系统请求时提供保存的状态。