Savedstate
Letzte Aktualisierung | Stabile Version | Release Candidate | Beta-Ausgabe | Alphaversion |
---|---|---|---|---|
11. Dezember 2024 | 1.2.1 | - | - | 1.3.0-alpha06 |
Abhängigkeiten deklarieren
Wenn Sie eine Abhängigkeit von SavedState hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.
Fügen Sie der Datei build.gradle
für Ihre App oder Ihr Modul die Abhängigkeiten für die erforderlichen Artefakte hinzu:
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") }
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Ihr Feedback hilft uns, Jetpack zu verbessern. Bitte teilen Sie uns mit, wenn Sie neue Probleme feststellen oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können einem vorhandenen Problem Ihre Stimme geben, indem Sie auf die Schaltfläche mit dem Stern klicken.
Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.
Version 1.3
Version 1.3.0-alpha06
11. Dezember 2024
androidx.savedstate:savedstate-*:1.3.0-alpha06
wird veröffentlicht. Version 1.3.0-alpha06 enthält diese Commits.
Neue Funktionen
SavedState
KMP unterstützt jetzt:IBinder
,Size
,SizeF
,Array<Parcelable>
,SparseArray<Parcelable>
und Serializable (Android). (I1ba94, b/334076622)- Fügen Sie
KSerializer
-Instanzen hinzu, die zum Codieren/Decodieren von Java- und Android-Typen verwendet werden können, die von Bundle unterstützt werden. Markieren Sie dazu das entsprechende Feld in Ihrer Klasse mit@Serializable(with = ParcelableSerializer::class)
. (I8c10f, I28caf, b/376026712) SavedStateRegistryOwner
-Instanzen, die überfindViewTreeSavedStateRegistryOwner
abgerufen werden, können jetzt über nicht übereinstimmende übergeordnete Elemente einer Ansicht aufgelöst werden, z. B. überViewOverlay
. Weitere Informationen zu überlappenden Ansichtsübergeordneten finden Sie in den Releasehinweisen von Core oder in der Dokumentation unterViewTree.setViewTreeDisjointParent
. (Iccb33)
API-Änderungen
- Namen und Paketorganisation an
SavedStateRegistryOwnerDelegate
(I8c135, b/376026744) anpassen
Version 1.3.0-alpha05
13. November 2024
androidx.savedstate:savedstate-*:1.3.0-alpha05
wird veröffentlicht. Version 1.3.0-alpha05 enthält diese Commits.
Unterstützung für KotlinX-Serialisierung
SavedState
unterstützt jetzt die KotlinX-Serialisierung. Sie können eine mit@Serializable
annotierte Klasse mit den MethodenencodeToSavedState
unddecodeFromSavedState
in einenSavedState
konvertieren. Die zurückgegebeneSavedState
ist eine reguläreBundle
unter Android und kann von jeder API verwendet werden, die eineBundle
akzeptiert. (I6f59f, b/374102924)@Serializable data class Person(val firstName: String, val lastName: String) fun main() { val person = Person("John", "Doe") val encoded: SavedState = encodeToSavedState(person) val decoded: Person = decodeFromSavedState(encoded) }
Außerdem haben wir
saved
hinzugefügt, ein Lazy-Property-Delegate, mit dem sich@Serializable
-Klassen ganz einfach in einerSavedStateRegistryOwner
speichern lassen (z.B.ComponentActivity
,Fragment
usw.) und diese Klassen automatisch wiederherstellen lassen, wenn der Prozess beendet und neu erstellt wird. Hinweis: Dersaved
-Delegierte ist lausig und ruft dieinit
-Lambda-Funktion nicht auf und speichert nichts in derSavedStateRegistry
, bis darauf zugegriffen wird. (I66739, b/376027806)@Serializable data class Person(val firstName: String, val lastName: String) class MyActivity : ComponentActivity() { var person by saved { Person("John", "Doe") } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) this.person = Person("Jane", "Doe") } }
Für
SavedStateHandle
gibt es einen ähnlichensaved
-Property-Delegierten, der im Lifecycle2.9.0-alpha07
hinzugefügt wurde.
API-Änderungen
- Fügen Sie
toMap
zuSavedState
hinzu, damit alleSavedState
in eine reguläreMap
(flache Kopie) umgewandelt werden können. (I487b9, b/334076622) SavedState
KMP unterstützt jetzt Arrays. (Ic0552, b/334076622)
Version 1.3.0-alpha04
30. Oktober 2024
androidx.savedstate:savedstate-*:1.3.0-alpha04
wird veröffentlicht. Version 1.3.0-alpha04 enthält diese Commits.
API-Änderungen
- SavedState KMP unterstützt jetzt Char. (I9ac2f, b/334076622)
- Fügen Sie
putNull
undisNull
zu SavedState KMP hinzu. (Iea71d, b/334076622) - Fügen Sie zusätzliche
savedState
-Werksparameter hinzu, die ein initialesMap<String, Any>
unterstützen (I9b37d, b/334076622) - SavedState-KMP unterstützt jetzt den
contentDeepEquals
-Vergleich. (Ia515c, b/334076622) - SavedState-KMP unterstützt jetzt Long. (I4c180, b/334076622)
Version 1.3.0-alpha03
16. Oktober 2024
androidx.savedstate:savedstate-*:1.3.0-alpha03
wird ohne nennenswerte Änderungen veröffentlicht. Version 1.3.0-alpha03 enthält diese Commits.
Version 1.3.0-alpha02
2. Oktober 2024
androidx.savedstate:savedstate-*:1.3.0-alpha02
wird veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.
Kotlin Multiplatform
- Das
SavedState
-Modul ist jetzt KMP-kompatibel. Zu den unterstützten Plattformen gehören jetzt Android, iOS, Linux, Mac und JVM-Desktopumgebungen. (I26305, b/334076622)
Neue Funktionen
- Einführung des
SavedState
-Typs als Abstraktion, um den Anwendungsstatus in KMP konsistent zu speichern und wiederherzustellen. Es enthältSavedStateReader
undSavedStateWriter
zum Ändern des zu speichernden Status. Unter Android istSavedState
ein Typalias fürBundle
, der die Binärkompatibilität sicherstellt und die Migration vorhandener APIs zu einem gemeinsamen Quellsatz erleichtert. Auf anderen Plattformen istSavedState
eineMap<String, Any>
-Instanz. (I18575, b/334076622)
// Create a new SavedState object using the savedState DSL:
val savedState = savedState {
putInt("currentPage", 1)
putString("filter", "favorites")
}
// Read from a SavedState object
val currentPage = savedState.read { getInt("currentPage") }
// Edit an existing SavedState object
savedState.write {
remove("currentPage")
}
API-Änderungen
SavedStateRegistry
undSavedStateRegistryController
sind jetzt KMP-kompatibel. (Id7bb8, b/334076622)SavedState
,SavedStateWriter
undSavedStateReader
sind jetzt KMP-kompatibel. (I26305, b/334076622)
Version 1.3.0-alpha01
7. August 2024
androidx.savedstate:savedstate:1.3.0-alpha01
und androidx.savedstate:savedstate-ktx:1.3.0-alpha01
werden freigegeben. Version 1.3.0-alpha01 enthält diese Commits.
API-Änderungen
- Die
savedstate-ktx
-Kotlin-Erweiterungen wurden in das Basismodul „savedstate“ verschoben. (I1cc18, b/274803094)
Hinweis
compileSdk
auf 35 (5dc41be) aktualisieren
Version 1.2.1
Version 1.2.1
22. März 2023
androidx.savedstate:savedstate:1.2.1
und androidx.savedstate:savedstate-ktx:1.2.1
werden freigegeben. Version 1.2.1 enthält diese Commits.
Abhängigkeitsupdates
SavedState
hängt jetzt von Lifecycle2.6.1
ab. (c1f621)
Version 1.2.0
Version 1.2.0
29. Juni 2022
androidx.savedstate:savedstate:1.2.0
und androidx.savedstate:savedstate-ktx:1.2.0
werden freigegeben. Version 1.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.1.0
SavedStateRegistryController
ermöglicht jetzt die frühzeitige Verknüpfung derSavedStateRegistry
überperformAttach()
.- Sie können jetzt eine zuvor registrierte
SavedStateProvider
übergetSavedStateProvider()
von einemSavedStateRegistry
abrufen. - Die
SavedState
-Bibliothek wurde in Kotlin neu geschrieben.- Bei
SavedStateRegistryOwner
handelt es sich um eine nicht mit der Quelle kompatible Änderung für Klassen, die in Kotlin geschrieben wurden. Sie müssen jetzt die PropertysavedStateRegistry
überschreiben, anstatt die vorherigegetSavedStateRegistry()
-Funktion zu implementieren. - Für
ViewTreeSavedStateRegistryOwner
ist dies eine nicht mit der Quelle kompatible Änderung für Klassen, die in Kotlin geschrieben wurden. Sie müssen jetzt die Kotlin-Erweiterungsmethoden fürView
vonandroidx.savedstate.setViewTreeSavedStateRegistryOwner
undandroidx.savedstate.findViewTreeSavedStateRegistryOwner
direkt importieren und verwenden, um einen zuvor festgelegten Inhaber festzulegen und zu finden. Damit wird diesavedstate-ktx
API vonfindViewTreeSavedStateRegistryOwner
ersetzt.
- Bei
Verhaltensänderungen
SavedStateRegistry
speichert kein leeres Bundle mehr, wenn kein Status gespeichert werden kann.
Version 1.2.0-rc01
11. Mai 2022
androidx.savedstate:savedstate:1.2.0-rc01
und androidx.savedstate:savedstate-ktx:1.2.0-rc01
werden freigegeben. Version 1.2.0-rc01 enthält diese Commits.
Änderungen an der Dokumentation
- Die
SavedStateRegistryOwner
-KDocs wurden aktualisiert, um die Verantwortlichkeiten und den Vertrag des Inhabers zu klären, wie er die Benutzeroberfläche implementieren oder wann er die Methoden aufSavedStateRegistryController
aufrufen soll. (Iefc95, b/228887344)
Version 1.2.0-beta01
20. April 2022
androidx.savedstate:savedstate:1.2.0-beta01
und androidx.savedstate:savedstate-ktx:1.2.0-beta01
werden freigegeben. Version 1.2.0-beta01 enthält diese Commits.
API-Änderungen
- Die Klassen
SavedStateRegistry
undViewTreeSavedStateRegistryOwner
wurden in Kotlin neu geschrieben. FürViewTreeSavedStateRegistryOwner
ist dies eine nicht mit der Quelle kompatible Änderung für Klassen, die in Kotlin geschrieben sind. Sie müssen jetzt die Kotlin-Erweiterungsmethoden fürView
vonandroidx.savedstate.setViewTreeSavedStateRegistryOwner
undandroidx.savedstate.findViewTreeSavedStateRegistryOwner
direkt importieren und verwenden, um einen zuvor festgelegten Inhaber festzulegen und zu finden. Damit wird diesavedstate-ktx
API vonfindViewTreeSavedStateRegistryOwner
ersetzt. Dies ist binärkompatibel und bleibt für Implementierungen, die in der Programmiersprache Java geschrieben sind, auch weiterhin quellkompatibel. (b/220191285)
Version 1.2.0-alpha02
6. April 2022
androidx.savedstate:savedstate:1.2.0-alpha02
und androidx.savedstate:savedstate-ktx:1.2.0-alpha02
werden freigegeben. Version 1.2.0-alpha02 enthält diese Commits.
Neue Funktionen
- Sie können jetzt eine zuvor registrierte
SavedStateProvider
übergetSavedStateProvider()
von einemSavedStateRegistry
abrufen. (I7ea47, b/215406268)
API-Änderungen
- Die Klassen
SavedStateRegistryOwner
,SavedStateRegistryController
undRecreator
wurden in Kotlin neu geschrieben. BeiSavedStateRegistryOwner
handelt es sich um eine nicht mit der Quelle kompatible Änderung für diese in Kotlin geschriebenen Klassen. Sie müssen jetzt die PropertysavedStateRegistry
überschreiben, anstatt die vorherigegetSavedStateRegistry()
-Funktion zu implementieren. Dies ist binär- und quellkompatibel für Implementierungen, die in der Programmiersprache Java geschrieben sind. (b/220191285)
Version 1.2.0-alpha01
26. Januar 2022
androidx.savedstate:savedstate:1.2.0-alpha01
und androidx.savedstate:savedstate-ktx:1.2.0-alpha01
werden freigegeben. Version 1.2.0-alpha01 enthält diese Commits.
Neue Funktionen
SavedStateRegistryController
ermöglicht jetzt die frühzeitige Verknüpfung derSavedStateRegistry
überperformAttach()
. (Ice4bf)
Verhaltensänderungen
SavedStateRegistry
speichert kein leeres Bundle mehr, wenn kein Status gespeichert werden kann. (aosp/1896865, b/203457956)
Version 1.1.0
Version 1.1.0
10. Februar 2021
androidx.savedstate:savedstate:1.1.0
und androidx.savedstate:savedstate-ktx:1.1.0
werden freigegeben. Version 1.1.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.0.0
ViewTreeSavedStateRegistryOwner
API: Mit einer neuenViewTreeSavedStateRegistryOwner.get(View)
API können Sie die enthalteneSavedStateRegistry
anhand einerView
-Instanz abrufen. Sie müssen auf Activity1.2.0
, Fragment1.3.0
und AppCompat1.3.0-alpha01
oder höher umstellen, um diese Informationen korrekt einzugeben.savedstate-ktx
-Artefakt: Dem neuensavedstate-ktx
-Artefakt wurde einefindViewTreeSavedStateRegistryOwner()
-Kotlin-Erweiterung für die Arbeit mitViewTreeSavedStateRegistryOwner
hinzugefügt.
Version 1.1.0-rc01
16. Dezember 2020
androidx.savedstate:savedstate:1.1.0-rc01
und androidx.savedstate:savedstate-ktx:1.1.0-rc01
werden seit 1.1.0-beta01
unverändert veröffentlicht. Version 1.1.0-rc01 enthält diese Commits.
Version 1.1.0-beta01
1. Oktober 2020
androidx.savedstate:savedstate:1.1.0-beta01
und androidx.savedstate:savedstate-ktx:1.1.0-beta01
werden seit 1.1.0-alpha01
unverändert veröffentlicht. Version 1.1.0-beta01 enthält diese Commits.
Version 1.1.0-alpha01
20. Mai 2020
androidx.savedstate:savedstate:1.1.0-alpha01
und androidx.savedstate:savedstate-ktx:1.1.0-alpha01
werden freigegeben. Version 1.1.0-alpha01 enthält diese Commits.
Neue Funktionen
- Mit einer neuen
ViewTreeSavedStateRegistryOwner.get(View)
API können Sie die enthalteneSavedStateRegistry
anhand einerView
-Instanz abrufen. Sie müssen auf Activity1.2.0-alpha05
, Fragment1.3.0-alpha05
und AppCompat1.3.0-alpha01
umstellen, um diese Informationen korrekt einfügen zu können. (aosp/1298679) - Dem neuen
savedstate-ktx
-Artefakt wurde einefindViewTreeSavedStateRegistryOwner()
-Kotlin-Erweiterung für die Arbeit mitViewTreeSavedStateRegistryOwner
hinzugefügt. (aosp/1299434)
Version 1.0.0
Version 1.0.0
5. September 2019
androidx.savedstate:savedstate:1.0.0
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Wichtige Funktionen von SavedState 1.0.0
androidx.savedstate
wurde in eine stabile Version überführt. Diese APIs ermöglichen es Entwicklern, Komponenten in den Prozess zum Wiederherstellen / Speichern des Instance-Status einzubinden. Der Haupteingangspunkt der API ist SavedStateRegistry
. Über consumeRestoredStateForKey
können Sie zuvor gespeicherte Status abrufen und einen Rückruf an registerSavedStateProvider
registrieren, um einen gespeicherten Status bereitzustellen, sobald das System ihn anfordert.
Version 1.0.0-rc01
2. Juli 2019
androidx.savedstate:savedstate:1.0.0-rc01
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Falsche ProGuard-Regel korrigiert (b/132655499)
Version 1.0.0-beta01
7. Mai 2019
androidx.savedstate:savedstate:1.0.0-beta01
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Version 1.0.0-alpha02
13. März 2019
androidx.savedstate:savedstate:1.0.0-alpha02
wird veröffentlicht. In androidx.savedstate:savedstate
werden die Artefakte androidx.savedstate:savedstate-bundle
und androidx.savedstate:savedstate-common
zu einem einzigen Artefakt kombiniert, da die SavedState-Infrastruktur vereinfacht und die Generiken aus SavedStateRegistry
entfernt wurden. Daher sind keine separaten Module erforderlich.
Eine vollständige Liste der Commits in dieser Version finden Sie hier.
Neue Funktionen
SavedStateRegistry.runOnNextRecreaction(Class<? extends AutoRecreated> clazz )
wurde hinzugefügt. Die angegebene Klasse wird instanziiert und die MethodeAutoRecreated.onRecreated
wird ausgeführt, wenn die übergeordnete Komponente neu gestartet wird.
API-Änderungen
- Generika aus
SavedStateRegistry<T>
entfernt - AbstractSavedStateRegistry und BundlableSavedStateRegistry wurden entfernt. Verwenden Sie stattdessen einfach
SavedStateRegistry
. BundleSavedStateRegistryOwner
wird inSavedStateRegistryOwner
umbenannt
Version 1.0.0-alpha01
17. Dezember 2018
Dies ist die erste Version von SavedState
.
Neue Funktionen
androidx.savedstate
ist eine neue Reihe von Alpha-APIs, mit denen Entwickler Komponenten in den Prozess zum Wiederherstellen / Speichern des Instance-Status einbinden können. Der Haupteingangspunkt der API ist SavedStateRegistry<T>
. Über consumeRestoredStateForKey
können Sie den zuvor gespeicherten Status abrufen und einen Rückruf an registerSavedStateProvider
registrieren, um den Status bereitzustellen, sobald das System ihn anfordert.