Savedstate

編寫可插入的元件,在程序失敗時儲存 UI 狀態,並在程序重新啟動時還原。
最近更新時間 穩定版 候選版 Beta 版 Alpha 版
2023 年 3 月 22 日 1.2.1 - - -

宣告依附元件

如要新增 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。如果您發現新問題,或是有改進這個程式庫的建議,請告訴我們。回報新問題前,請先查看這個程式庫的現有問題。只要按一下星號按鈕,即可投票給現有的問題。

建立新問題

詳情請參閱 Issue Tracker 說明文件

1.2.1 版

1.2.1 版

2023 年 3 月 22 日

發布 androidx.savedstate:savedstate:1.2.1androidx.savedstate:savedstate-ktx:1.2.11.2.1 版本包含以下修訂項目。

依附元件更新

1.2.0 版

1.2.0 版本

2022 年 6 月 29 日

發布 androidx.savedstate:savedstate:1.2.0androidx.savedstate:savedstate-ktx:1.2.01.2.0 版本包含以下修訂項目。

自 1.1.0 版以來的重要異動

  • SavedStateRegistryController 現在允許透過 performAttach() 提前附加 SavedStateRegistry
  • 您現在可以透過 getSavedStateProvider()SavedStateRegistry 擷取先前註冊的 SavedStateProvider
  • 已改寫 Kotlin 內的 SavedState 程式庫。
    • SavedStateRegistryOwner 而言,這些類別屬於與原始碼不相容的變更,因此您現在必須覆寫 savedStateRegistry 屬性,而不是導入先前的 getSavedStateRegistry() 函式。
    • 對這些使用 Kotlin 程式語言編寫的類別而言,例如 ViewTreeSavedStateRegistryOwner,這是與原始碼不相容的變更,因此您現在必須為 androidx.savedstate.setViewTreeSavedStateRegistryOwnerandroidx.savedstate.findViewTreeSavedStateRegistryOwnerView 直接匯入及使用 Kotlin 擴充功能方法,才能設定及找出先前設定的擁有者。這會取代 findViewTreeSavedStateRegistryOwnersavedstate-ktx API,

行為變更

  • 如果無法儲存任何狀態,「SavedStateRegistry」就不會再儲存空白的軟體包。

1.2.0-rc01 版本

2022 年 5 月 11 日

發布 androidx.savedstate:savedstate:1.2.0-rc01androidx.savedstate:savedstate-ktx:1.2.0-rc011.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 變更

  • 我們已使用 Kotlin 程式語言重新編寫 SavedStateRegistryViewTreeSavedStateRegistryOwner 類別。對這些使用 Kotlin 程式語言編寫的類別而言,例如 ViewTreeSavedStateRegistryOwner,這是與原始碼不相容的變更,因此您現在必須為 androidx.savedstate.setViewTreeSavedStateRegistryOwnerandroidx.savedstate.findViewTreeSavedStateRegistryOwnerView 直接匯入及使用 Kotlin 擴充功能方法,才能設定及找出先前設定的擁有者。這會取代 findViewTreeSavedStateRegistryOwnersavedstate-ktx API,與二進位檔相容,而且原始碼仍然相容於以 Java 程式設計語言編寫的導入作業 (b/220191285)。

1.2.0-alpha02 版

2022 年 4 月 6 日

已發布 androidx.savedstate:savedstate:1.2.0-alpha02androidx.savedstate:savedstate-ktx:1.2.0-alpha021.2.0-alpha02 版包含此連結所列的修訂項目。

新功能

  • 您現在可以透過 getSavedStateProvider()SavedStateRegistry 擷取先前註冊的 SavedStateProvider (I7ea47b/215406268)。

API 變更

  • 我們已使用 Kotlin 程式語言重新編寫 SavedStateRegistryOwnerSavedStateRegistryControllerRecreator 類別。對 SavedStateRegistryOwner 而言,這些類別屬於與原始碼不相容的變更,因此您現在必須覆寫 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-alpha011.2.0-alpha01 版包含此連結所列的修訂項目。

新功能

  • SavedStateRegistryController 現在允許透過 performAttach() 提前附加 SavedStateRegistry。(Ice4bf)

行為變更

  • 如果無法儲存任何狀態,「SavedStateRegistry」就不會再儲存空白的軟體包。(aosp/1896865b/203457956)

1.1.0 版本

1.1.0 版本

2021 年 2 月 10 日

已釋出「androidx.savedstate:savedstate:1.1.0」和「androidx.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.0,以及AppCompat 1.3.0-alpha01 以上版本,才能正確填入資料。
  • savedstate-ktx成果:新的savedstate-ktx成果已新增可與ViewTreeSavedStateRegistryOwner搭配使用的findViewTreeSavedStateRegistryOwner()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-alpha011.1.0-alpha01 版本包含這些修訂版本。

新功能

1.0.0 版本

1.0.0 版

2019 年 9 月 5 日

發布了 androidx.savedstate:savedstate:1.0.0。您可以前往這裡查看這個版本包含的修訂版本。

SavedState 1.0.0 的主要功能

androidx.savedstate已升級至穩定版。這組 API 可讓開發人員將元件附加至還原 / 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-alpha02androidx.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,可讓開發人員將元件附加至還原 / saveInstanceState 程序。API 的主要進入點是 SavedStateRegistry<T>,可讓您透過 consumeRestoredStateForKey 擷取先前儲存的狀態,並向 registerSavedStateProvider 註冊回呼,以在系統要求時提供已儲存的狀態。