Savedstate
Ostatnia aktualizacja | Wersja stabilna | Wersja kandydująca | Wersja Beta | Wersja alfa |
---|---|---|---|---|
11 grudnia 2024 r. | 1.2.1 | - | - | 1.3.0-alpha06 |
Deklarowanie zależności
Aby dodać zależność od SavedState, musisz dodać repozytorium Google Maven do projektu. Więcej informacji znajdziesz w repozytorium Maven firmy Google.
Dodaj zależności dla artefaktów, których potrzebujesz, w pliku build.gradle
aplikacji lub modułu:
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") }
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Opinia
Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli zauważysz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk z gwiazdką.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.3
Wersja 1.3.0-alpha06
11 grudnia 2024 r.
androidx.savedstate:savedstate-*:1.3.0-alpha06
został zwolniony. Wersja 1.3.0-alpha06 zawiera te komity.
Nowe funkcje
SavedState
KMP obsługuje teraz:IBinder
,Size
,SizeF
,Array<Parcelable>
,SparseArray<Parcelable>
i Serializable (Android). (I1ba94, b/334076622)- Dodaj instancje
KSerializer
, które można wykorzystać do kodowania/dekodowania typów Java i Androida obsługiwanych przez pakiet, zaznaczając odpowiednie pole w klasie za pomocą@Serializable(with = ParcelableSerializer::class)
. (I8c10f, I28caf, b/376026712) - Instanse
SavedStateRegistryOwner
pobrane za pomocąfindViewTreeSavedStateRegistryOwner
można teraz rozwiązywać za pomocą niespójnych elementów nadrzędnych widoku, takich jakViewOverlay
. Aby dowiedzieć się więcej o niepowiązanych rodzicach widoku, zapoznaj się z informacjami o wersji głównej lub z dokumentacją wViewTree.setViewTreeDisjointParent
. (Iccb33)
Zmiany w interfejsie API
- Ujednolicić nazewnictwo i organizację pakietów z poziomem
SavedStateRegistryOwnerDelegate
(I8c135, b/376026744)
Wersja 1.3.0-alpha05
13 listopada 2024 r.
androidx.savedstate:savedstate-*:1.3.0-alpha05
został zwolniony. Wersja 1.3.0-alpha05 zawiera te komity.
Obsługa serializacji KotlinX
SavedState
obsługuje teraz serializację KotlinX. Za pomocą metodencodeToSavedState
idecodeFromSavedState
możesz przekonwertować klasę z annotacjami@Serializable
na klasęSavedState
. ZwróconySavedState
to zwykłyBundle
na Androidzie i może być używany przez dowolny interfejs API, który akceptujeBundle
. (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) }
Dodaliśmy też
saved
, czyli metodę delegowaną z nieobliczalną wartością zwracaną, która ułatwia przechowywanie klas@Serializable
w obiekcieSavedStateRegistryOwner
(np.ComponentActivity
,Fragment
itp.) i automatycznie przywracać te klasy po zakończeniu i ponownym uruchomieniu procesu. Delegatesaved
jest leniwy i nie wywoła funkcji lambdainit
ani nie zapisze niczego w tablicySavedStateRegistry
, dopóki nie uzyska do niej dostępu. (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") } }
W Cyklu życia
2.9.0-alpha07
dodano podobną usługę zastępczą dla właściwościsaved
.SavedStateHandle
Zmiany w interfejsie API
- Dodaj
toMap
doSavedState
, aby umożliwić konwersję dowolnegoSavedState
na zwykłyMap
(płytka kopia). (I487b9, b/334076622) SavedState
KMP obsługuje teraz tablice. (Ic0552, b/334076622)
Wersja 1.3.0-alpha04
30 października 2024 r.
androidx.savedstate:savedstate-*:1.3.0-alpha04
został zwolniony. Wersja 1.3.0-alpha04 zawiera te komity.
Zmiany w interfejsie API
- KMP SavedState obsługuje teraz Char. (I9ac2f, b/334076622)
- Dodaj
putNull
iisNull
do KMP SavedState. (Iea71d, b/334076622) - Dodaj dodatkowe parametry fabryczne
savedState
obsługujące początkowyMap<String, Any>
(I9b37d, b/334076622) - KMP SavedState obsługuje teraz porównanie
contentDeepEquals
. (Ia515c, b/334076622) - KMP SavedState obsługuje teraz Long. (I4c180, b/334076622)
Wersja 1.3.0-alpha03
16 października 2024 r.
androidx.savedstate:savedstate-*:1.3.0-alpha03
jest publikowana bez istotnych zmian. Wersja 1.3.0-alpha03 zawiera te komity.
Wersja 1.3.0-alpha02
2 października 2024 r.
androidx.savedstate:savedstate-*:1.3.0-alpha02
został zwolniony. Wersja 1.3.0-alpha02 zawiera te komity.
Kotlin Multiplatform
- Moduł
SavedState
jest teraz zgodny z KMP. Obsługiwane platformy to teraz Android, iOS, Linux, Mac i środowiska pulpitu JVM. (I26305, b/334076622)
Nowe funkcje
- Wprowadzenie typu
SavedState
jako abstrakcji, aby zapewnić spójny sposób zapisywania i przywracania stanu aplikacji w KMP. Zawiera onSavedStateReader
iSavedStateWriter
do modyfikowania stanu, który ma zostać zapisany. Na AndroidzieSavedState
to alias typu dlaBundle
, który zapewnia zgodność binarną i ułatwia migrację dotychczasowych interfejsów API do wspólnego zestawu źródeł. Na innych platformachSavedState
to instancjaMap<String, Any>
. (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")
}
Zmiany w interfejsie API
SavedStateRegistry
iSavedStateRegistryController
są teraz zgodne z KPM. (Id7bb8, b/334076622)- Funkcje
SavedState
,SavedStateWriter
iSavedStateReader
są teraz zgodne z KMP. (I26305, b/334076622)
Wersja 1.3.0-alpha01
7 sierpnia 2024 r.
androidx.savedstate:savedstate:1.3.0-alpha01
i androidx.savedstate:savedstate-ktx:1.3.0-alpha01
są dostępne. Wersja 1.3.0-alpha01 zawiera te komity.
Zmiany w interfejsie API
- Rozszerzenia
savedstate-ktx
w języku Kotlin zostały przeniesione do podstawowego modułu zapisanych stanów. (I1cc18, b/274803094)
Uwaga
- Zaktualizuj
compileSdk
do wersji 35 (5dc41be)
Wersja 1.2.1
Wersja 1.2.1
22 marca 2023 r.
androidx.savedstate:savedstate:1.2.1
i androidx.savedstate:savedstate-ktx:1.2.1
są dostępne. Wersja 1.2.1 zawiera te zatwierdzenia.
Aktualizacje zależności
SavedState
zależy teraz od cyklu życia2.6.1
. (c1f621)
Wersja 1.2.0
Wersja 1.2.0
29 czerwca 2022 r.
androidx.savedstate:savedstate:1.2.0
i androidx.savedstate:savedstate-ktx:1.2.0
są dostępne. Wersja 1.2.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.1.0
SavedStateRegistryController
umożliwia teraz wcześniejsze dołączanieSavedStateRegistry
za pomocąperformAttach()
.- Możesz teraz pobrać wcześniej zarejestrowany
SavedStateProvider
zSavedStateRegistry
za pomocągetSavedStateProvider()
. - Biblioteka
SavedState
została przepisana w języku Kotlin.- W przypadku
SavedStateRegistryOwner
jest to zmiana niezgodna ze źródłem w klasach napisanych w Kotlinie – teraz musisz zastąpić właściwośćsavedStateRegistry
, a nie implementować poprzedniej funkcjigetSavedStateRegistry()
. - W przypadku
ViewTreeSavedStateRegistryOwner
jest to zmiana niezgodna ze źródłem w przypadku klas napisanych w Kotlinie – teraz musisz bezpośrednio zaimportować i użyć metod rozszerzenia Kotlina wView
klasyandroidx.savedstate.setViewTreeSavedStateRegistryOwner
iandroidx.savedstate.findViewTreeSavedStateRegistryOwner
, aby ustawić i znaleźć wcześniej ustawionego właściciela. Zastępuje on interfejs APIsavedstate-ktx
usługifindViewTreeSavedStateRegistryOwner
.
- W przypadku
Zmiany w zachowaniu
SavedStateRegistry
nie zapisuje już pustego pakietu, jeśli nie ma stanu do zapisania.
Wersja 1.2.0-rc01
11 maja 2022 roku
androidx.savedstate:savedstate:1.2.0-rc01
i androidx.savedstate:savedstate-ktx:1.2.0-rc01
są dostępne. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.
Zmiany w dokumentacji
- Dokumenty
SavedStateRegistryOwner
Kdocs zostały zaktualizowane, aby wyjaśnić obowiązki i umowę właściciela dotyczącą tego, jak powinien on implementować interfejs lub kiedy powinien wywoływać metody wSavedStateRegistryController
. (Iefc95, b/228887344)
Wersja 1.2.0-beta01
20 kwietnia 2022 r.
androidx.savedstate:savedstate:1.2.0-beta01
i androidx.savedstate:savedstate-ktx:1.2.0-beta01
są dostępne. Wersja 1.2.0-beta01 zawiera te commity.
Zmiany w interfejsie API
- Klasy
SavedStateRegistry
iViewTreeSavedStateRegistryOwner
zostały przepisane w Kotlinie. W przypadkuViewTreeSavedStateRegistryOwner
jest to zmiana niezgodna ze źródłem w przypadku klas napisanych w Kotlinie – teraz musisz bezpośrednio zaimportować i użyć metod rozszerzenia Kotlina wView
klasyandroidx.savedstate.setViewTreeSavedStateRegistryOwner
iandroidx.savedstate.findViewTreeSavedStateRegistryOwner
, aby ustawić i znaleźć wcześniej ustawionego właściciela. Zastępuje on interfejs APIsavedstate-ktx
usługifindViewTreeSavedStateRegistryOwner
. Jest on zgodny z binarnymi implementacjami w języku Java i nadal zgodny ze źródłami. (b/220191285)
Wersja 1.2.0-alpha02
6 kwietnia 2022 roku
androidx.savedstate:savedstate:1.2.0-alpha02
i androidx.savedstate:savedstate-ktx:1.2.0-alpha02
są dostępne. Wersja 1.2.0-alpha02 zawiera te commity.
Nowe funkcje
- Możesz teraz pobrać wcześniej zarejestrowany
SavedStateProvider
zSavedStateRegistry
za pomocągetSavedStateProvider()
. (I7ea47, b/215406268)
Zmiany w interfejsie API
- Klasy
SavedStateRegistryOwner
,SavedStateRegistryController
iRecreator
zostały przepisane w Kotlinie. W przypadkuSavedStateRegistryOwner
jest to zmiana niezgodna ze źródłem w klasach napisanych w Kotlinie – teraz musisz zastąpić właściwośćsavedStateRegistry
, a nie stosować poprzedniej funkcjigetSavedStateRegistry()
. Jest to wersja zgodna z binarną i źródłową implementacją w języku programowania Java. (b/220191285)
Wersja 1.2.0-alpha01
26 stycznia 2022 r.
androidx.savedstate:savedstate:1.2.0-alpha01
i androidx.savedstate:savedstate-ktx:1.2.0-alpha01
są dostępne. Wersja 1.2.0-alpha01 zawiera te commity.
Nowe funkcje
SavedStateRegistryController
umożliwia teraz wczesne załączanieSavedStateRegistry
za pomocąperformAttach()
. (Ice4bf)
Zmiany w zachowaniu
SavedStateRegistry
nie zapisuje już pustego pakietu, jeśli nie ma stanu do zapisania. (aosp/1896865, b/203457956)
Wersja 1.1.0
Wersja 1.1.0
10 lutego 2021 r.
androidx.savedstate:savedstate:1.1.0
i androidx.savedstate:savedstate-ktx:1.1.0
są dostępne. Wersja 1.1.0 zawiera te zatwierdzenia.
Najważniejsze zmiany od wersji 1.0.0
- Interfejs API
ViewTreeSavedStateRegistryOwner
: nowy interfejs APIViewTreeSavedStateRegistryOwner.get(View)
umożliwia pobieranie elementówSavedStateRegistry
z uwzględnieniem instancjiView
. Aby prawidłowo wypełnić te pola, musisz uaktualnić te elementy: Activity1.2.0
, Fragment1.3.0
i AppCompat1.3.0-alpha01
lub nowsze. - Element
savedstate-ktx
: dodaliśmy nowy elementsavedstate-ktx
z rozszerzeniem KotlinafindViewTreeSavedStateRegistryOwner()
do pracy zViewTreeSavedStateRegistryOwner
.
Wersja 1.1.0-rc01
16 grudnia 2020 roku
androidx.savedstate:savedstate:1.1.0-rc01
i androidx.savedstate:savedstate-ktx:1.1.0-rc01
są publikowane bez zmian od 1.1.0-beta01
. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.
Wersja 1.1.0-beta01
1 października 2020 roku
androidx.savedstate:savedstate:1.1.0-beta01
i androidx.savedstate:savedstate-ktx:1.1.0-beta01
są publikowane bez zmian od 1.1.0-alpha01
. Wersja 1.1.0-beta01 zawiera te commity.
Wersja 1.1.0-alpha01
20 maja 2020 r.
androidx.savedstate:savedstate:1.1.0-alpha01
i androidx.savedstate:savedstate-ktx:1.1.0-alpha01
są dostępne. Wersja 1.1.0-alpha01 zawiera te commity.
Nowe funkcje
- Nowy interfejs API
ViewTreeSavedStateRegistryOwner.get(View)
umożliwia pobranieSavedStateRegistry
na podstawie wystąpieniaView
. Aby prawidłowo wypełnić te pola, musisz przejść na Aktywność1.2.0-alpha05
, Fragment1.3.0-alpha05
i Kompatybilność z aplikacjami1.3.0-alpha01
. (aosp/1298679) - Dodano nowy artefakt
savedstate-ktx
z rozszerzeniem KotlinafindViewTreeSavedStateRegistryOwner()
do pracy zViewTreeSavedStateRegistryOwner
. (aosp/1299434)
Wersja 1.0.0
Wersja 1.0.0
5 września 2019 r.
androidx.savedstate:savedstate:1.0.0
został zwolniony. Zmiany zawarte w tej wersji znajdziesz tutaj.
Najważniejsze funkcje SavedState 1.0.0
androidx.savedstate
została oznaczona jako wersja stabilna. To zestaw interfejsów API, które umożliwiają deweloperom dołączanie komponentów do procesu przywracania / zapisu stanu instancji. Głównym punktem wejścia interfejsu API jest metoda SavedStateRegistry
, która umożliwia odzyskiwanie wcześniej zapisanych stanów za pomocą metody consumeRestoredStateForKey
i rejestrowanie wywołania zwrotnego registerSavedStateProvider
, aby udostępnić zapisany stan, gdy system go zażąda.
Wersja 1.0.0-rc01
2 lipca 2019 r.
androidx.savedstate:savedstate:1.0.0-rc01
został zwolniony. Zmiany zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Naprawiono nieprawidłową regułę proguard (b/132655499)
Wersja 1.0.0-beta01
7 maja 2019 r.
androidx.savedstate:savedstate:1.0.0-beta01
został zwolniony. Zmiany zawarte w tej wersji znajdziesz tutaj.
Wersja 1.0.0-alpha02
13 marca 2019 r.
androidx.savedstate:savedstate:1.0.0-alpha02
został zwolniony. androidx.savedstate:savedstate
łączy artefakty androidx.savedstate:savedstate-bundle
i androidx.savedstate:savedstate-common
w jeden artefakt, ponieważ podjęliśmy decyzję o uproszczeniu infrastruktury zapisanego stanu i usunięciu elementów ogólnych z SavedStateRegistry
. Dlatego nie ma potrzeby tworzenia osobnych modułów.
Pełną listę zatwierdzeń zawartych w tej wersji znajdziesz tutaj.
Nowe funkcje
- Dodano użytkownika
SavedStateRegistry.runOnNextRecreaction(Class<? extends AutoRecreated> clazz )
Podana klasa zostanie uruchomiona, a metodaAutoRecreated.onRecreated
zostanie wykonana po ponownym uruchomieniu komponentu właściciela.
Zmiany w interfejsie API
- Generyki usunięte z:
SavedStateRegistry<T>
- AbstractSavedStateRegistry & BundlableSavedStateRegistry zostały usunięte. Zamiast nich użyj prostego
SavedStateRegistry
. - Zmieniono nazwę z
BundleSavedStateRegistryOwner
naSavedStateRegistryOwner
Wersja 1.0.0-alpha01
17 grudnia 2018 r.
To pierwsza wersja SavedState
.
Nowe funkcje
androidx.savedstate
to nowy zestaw interfejsów API w wersji alfa, które umożliwiają deweloperom dołączanie komponentów do procesu przywracania lub zapisywania stanu instancji. Głównym punktem wejścia interfejsu API jest SavedStateRegistry<T>
, który umożliwia odzyskiwanie wcześniej zapisanego stanu za pomocą consumeRestoredStateForKey
i rejestrowanie wywołania zwrotnego registerSavedStateProvider
w celu udostępniania zapisanego stanu, gdy system go zażąda.