Stato salvato
Ultimo aggiornamento | Release stabile | Candidato per la release | Versione beta | Versione alpha |
---|---|---|---|---|
11 dicembre 2024 | 1.2.1 | - | - | 1.3.0-alpha06 |
Dichiarazione delle dipendenze
Per aggiungere una dipendenza a SavedState, devi aggiungere il repository Maven di Google al tuo progetto. Per ulteriori informazioni, consulta il repository Maven di Google.
Aggiungi le dipendenze per gli elementi necessari nel file build.gradle
per la tua app o il tuo modulo:
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") }
Per ulteriori informazioni sulle dipendenze, consulta Aggiungere dipendenze di compilazione.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Prima di crearne uno nuovo, dai un'occhiata ai problemi esistenti in questa raccolta. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per ulteriori informazioni, consulta la documentazione del Monitoraggio problemi.
Versione 1.3
Versione 1.3.0-alpha06
11 dicembre 2024
androidx.savedstate:savedstate-*:1.3.0-alpha06
viene rilasciato. La versione 1.3.0-alpha06 contiene questi commit.
Nuove funzionalità
SavedState
KMP ora supporta:IBinder
,Size
,SizeF
,Array<Parcelable>
,SparseArray<Parcelable>
e Serializable (Android). (I1ba94, b/334076622)- Aggiungi istanze
KSerializer
che possono essere utilizzate per codificare/decodificare i tipi Java e Android supportati da Bundle contrassegnando il campo pertinente della classe con@Serializable(with = ParcelableSerializer::class)
. (I8c10f, I28caf, b/376026712) - Le istanze
SavedStateRegistryOwner
recuperate tramitefindViewTreeSavedStateRegistryOwner
ora possono essere risolte tramite elementi principali indipendenti di una visualizzazione, ad esempio unViewOverlay
. Per ulteriori informazioni sui gruppi di visualizzazioni principali non connessi, consulta le note di rilascio di Core o la documentazione inViewTree.setViewTreeDisjointParent
. (Iccb33)
Modifiche all'API
- Rendi i nomi e l'organizzazione dei pacchetti più coerenti con
SavedStateRegistryOwnerDelegate
(I8c135, b/376026744)
Versione 1.3.0-alpha05
13 novembre 2024
androidx.savedstate:savedstate-*:1.3.0-alpha05
viene rilasciato. La versione 1.3.0-alpha05 contiene questi commit.
Supporto della serializzazione KotlinX
SavedState
ora include il supporto di KotlinX Serialization. Puoi convertire una classe annotata con@Serializable
in unSavedState
utilizzando i metodiencodeToSavedState
edecodeFromSavedState
. IlSavedState
restituito è un normaleBundle
su Android e può essere utilizzato da qualsiasi API che accetti unBundle
. (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) }
Abbiamo incluso anche
saved
, un delegato della proprietà lazy, per semplificare l'archiviazione delle classi@Serializable
in unSavedStateRegistryOwner
(ad es.ComponentActivity
,Fragment
e così via) e che queste classi vengano ripristinate automaticamente al termine e alla successiva creazione del processo. Tieni presente che il delegatosaved
è lazy e non chiamerà la funzione lambdainit
né salverà nulla inSavedStateRegistry
finché non viene eseguito l'accesso. (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") } }
In Ciclo di vita
2.9.0-alpha07
è stato aggiunto un delegato della proprietàsaved
simile perSavedStateHandle
.
Modifiche all'API
- Aggiungi
toMap
aSavedState
, in modo che qualsiasiSavedState
possa essere convertito in un normaleMap
(copia superficiale). (I487b9, b/334076622) SavedState
KMP ora supporta gli array. (Ic0552, b/334076622)
Versione 1.3.0-alpha04
30 ottobre 2024
androidx.savedstate:savedstate-*:1.3.0-alpha04
viene rilasciato. La versione 1.3.0-alpha04 contiene questi commit.
Modifiche all'API
- SavedState KMP ora supporta Char. (I9ac2f, b/334076622)
- Aggiungi
putNull
eisNull
al KMP di SavedState. (Iea71d, b/334076622) - Aggiungi altri parametri di fabbrica
savedState
che supportano unMap<String, Any>
iniziale (I9b37d, b/334076622) - La classe KMP SavedState ora supporta il confronto
contentDeepEquals
. (Ia515c, b/334076622) - SavedState KMP ora supporta Long. (I4c180, b/334076622)
Versione 1.3.0-alpha03
16 ottobre 2024
androidx.savedstate:savedstate-*:1.3.0-alpha03
viene rilasciato senza modifiche significative. La versione 1.3.0-alpha03 contiene questi commit.
Versione 1.3.0-alpha02
2 ottobre 2024
androidx.savedstate:savedstate-*:1.3.0-alpha02
viene rilasciato. La versione 1.3.0-alpha02 contiene questi commit.
Kotlin Multiplatform
- Il modulo
SavedState
è ora compatibile con KMP. Le piattaforme supportate ora includono gli ambienti desktop Android, iOS, Linux, Mac e JVM. (I26305, b/334076622)
Nuove funzionalità
- Introduzione del tipo opaco
SavedState
come astrazione per fornire un modo coerente per salvare e ripristinare lo stato dell'applicazione in KMP. Include unSavedStateReader
e unSavedStateWriter
per modificare lo stato da salvare. Su Android,SavedState
è un alias di tipo perBundle
, che garantisce la compatibilità binaria e semplifica la migrazione delle API esistenti a un insieme di origini comune. Su altre piattaforme,SavedState
è un'istanza diMap<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")
}
Modifiche all'API
SavedStateRegistry
eSavedStateRegistryController
ora sono compatibili con KMP. (Id7bb8, b/334076622)SavedState
,SavedStateWriter
eSavedStateReader
ora sono compatibili con KMP. (I26305, b/334076622)
Versione 1.3.0-alpha01
7 agosto 2024
androidx.savedstate:savedstate:1.3.0-alpha01
e androidx.savedstate:savedstate-ktx:1.3.0-alpha01
vengono rilasciati. La versione 1.3.0-alpha01 contiene questi commit.
Modifiche all'API
- Le estensioni Kotlin
savedstate-ktx
sono state spostate nel modulo base savedstate. (I1cc18, b/274803094)
Nota
- Aggiorna
compileSdk
a 35 (5dc41be)
Versione 1.2.1
Versione 1.2.1
22 marzo 2023
androidx.savedstate:savedstate:1.2.1
e androidx.savedstate:savedstate-ktx:1.2.1
vengono rilasciati. La versione 1.2.1 contiene questi commit.
Aggiornamenti delle dipendenze
SavedState
ora dipende da Ciclo di vita2.6.1
. (c1f621)
Versione 1.2.0
Versione 1.2.0
29 giugno 2022
androidx.savedstate:savedstate:1.2.0
e androidx.savedstate:savedstate-ktx:1.2.0
vengono rilasciati. La versione 1.2.0 contiene questi commit.
Modifiche importanti dalla versione 1.1.0
SavedStateRegistryController
ora consente l'attacco anticipato delSavedStateRegistry
tramiteperformAttach()
.- Ora puoi recuperare un
SavedStateProvider
registrato in precedenza da unSavedStateRegistry
tramitegetSavedStateProvider()
. - La libreria
SavedState
è stata riscritta in Kotlin.- Per
SavedStateRegistryOwner
, si tratta di una modifica incompatibile con il codice sorgente per le classi scritte in Kotlin: ora devi sostituire la proprietàsavedStateRegistry
anziché implementare la funzionegetSavedStateRegistry()
precedente. - Per
ViewTreeSavedStateRegistryOwner
, si tratta di una modifica non compatibile con il codice sorgente per le classi scritte in Kotlin: ora devi importare e utilizzare direttamente i metodi di estensione Kotlin suView
diandroidx.savedstate.setViewTreeSavedStateRegistryOwner
eandroidx.savedstate.findViewTreeSavedStateRegistryOwner
per impostare e trovare un proprietario impostato in precedenza. Questa API sostituisce l'APIsavedstate-ktx
difindViewTreeSavedStateRegistryOwner
.
- Per
Modifiche al comportamento
SavedStateRegistry
non salva più un bundle vuoto se non è presente alcun stato da salvare.
Versione 1.2.0-rc01
11 maggio 2022
androidx.savedstate:savedstate:1.2.0-rc01
e androidx.savedstate:savedstate-ktx:1.2.0-rc01
vengono rilasciati. La versione 1.2.0-rc01 contiene questi commit.
Modifiche alla documentazione
- I Kdocs di
SavedStateRegistryOwner
sono stati aggiornati per chiarire le responsabilità e il contratto del proprietario su come deve implementare l'interfaccia o quando deve chiamare i metodi suSavedStateRegistryController
. (Iefc95, b/228887344)
Versione 1.2.0-beta01
20 aprile 2022
androidx.savedstate:savedstate:1.2.0-beta01
e androidx.savedstate:savedstate-ktx:1.2.0-beta01
vengono rilasciati. La versione 1.2.0-beta01 contiene questi commit.
Modifiche all'API
- Le classi
SavedStateRegistry
eViewTreeSavedStateRegistryOwner
sono state riscritte in Kotlin. PerViewTreeSavedStateRegistryOwner
, si tratta di una modifica non compatibile con il codice sorgente per le classi scritte in Kotlin: ora devi importare e utilizzare direttamente i metodi di estensione Kotlin suView
diandroidx.savedstate.setViewTreeSavedStateRegistryOwner
eandroidx.savedstate.findViewTreeSavedStateRegistryOwner
per impostare e trovare un proprietario impostato in precedenza. Questa API sostituisce l'APIsavedstate-ktx
difindViewTreeSavedStateRegistryOwner
. È compatibile con i binari e rimane compatibile con il codice sorgente per le implementazioni scritte nel linguaggio di programmazione Java. (b/220191285)
Versione 1.2.0-alpha02
6 aprile 2022
androidx.savedstate:savedstate:1.2.0-alpha02
e androidx.savedstate:savedstate-ktx:1.2.0-alpha02
vengono rilasciati. La versione 1.2.0-alpha02 contiene questi commit.
Nuove funzionalità
- Ora puoi recuperare un
SavedStateProvider
registrato in precedenza da unSavedStateRegistry
tramitegetSavedStateProvider()
. (I7ea47, b/215406268)
Modifiche all'API
- Le classi
SavedStateRegistryOwner
,SavedStateRegistryController
eRecreator
sono state riscritte in Kotlin. PerSavedStateRegistryOwner
, si tratta di una modifica incompatibile con il codice sorgente per le classi scritte in Kotlin: ora devi sostituire la proprietàsavedStateRegistry
anziché implementare la funzionegetSavedStateRegistry()
precedente. È compatibile con i binari e con il codice sorgente per le implementazioni scritte nel linguaggio di programmazione Java. (b/220191285)
Versione 1.2.0-alpha01
26 gennaio 2022
androidx.savedstate:savedstate:1.2.0-alpha01
e androidx.savedstate:savedstate-ktx:1.2.0-alpha01
vengono rilasciati. La versione 1.2.0-alpha01 contiene questi commit.
Nuove funzionalità
SavedStateRegistryController
ora consente di allegare anticipatamente ilSavedStateRegistry
tramiteperformAttach()
. (Ice4bf)
Modifiche al comportamento
SavedStateRegistry
non salva più un bundle vuoto se non è presente alcun stato da salvare. (aosp/1896865, b/203457956)
Versione 1.1.0
Versione 1.1.0
10 febbraio 2021
androidx.savedstate:savedstate:1.1.0
e androidx.savedstate:savedstate-ktx:1.1.0
vengono rilasciati. La versione 1.1.0 contiene questi commit.
Modifiche principali dalla versione 1.0.0
- API
ViewTreeSavedStateRegistryOwner
: una nuova APIViewTreeSavedStateRegistryOwner.get(View)
consente di recuperare ilSavedStateRegistry
contenente in base a un'istanzaView
. Per compilare correttamente questo campo, devi eseguire l'upgrade ad Activity1.2.0
, Fragment1.3.0
e AppCompat1.3.0-alpha01
o versioni successive. - Elemento
savedstate-ktx
: il nuovo elementosavedstate-ktx
è stato aggiunto con un'estensione KotlinfindViewTreeSavedStateRegistryOwner()
per lavorare conViewTreeSavedStateRegistryOwner
.
Versione 1.1.0-rc01
16 dicembre 2020
androidx.savedstate:savedstate:1.1.0-rc01
e androidx.savedstate:savedstate-ktx:1.1.0-rc01
vengono rilasciati senza modifiche dal giorno 1.1.0-beta01
. La versione 1.1.0-rc01 contiene questi commit.
Versione 1.1.0-beta01
1° ottobre 2020
androidx.savedstate:savedstate:1.1.0-beta01
e androidx.savedstate:savedstate-ktx:1.1.0-beta01
vengono rilasciati senza modifiche dal giorno 1.1.0-alpha01
. La versione 1.1.0-beta01 contiene questi commit.
Versione 1.1.0-alpha01
20 maggio 2020
androidx.savedstate:savedstate:1.1.0-alpha01
e androidx.savedstate:savedstate-ktx:1.1.0-alpha01
vengono rilasciati. La versione 1.1.0-alpha01 contiene questi commit.
Nuove funzionalità
- Una nuova API
ViewTreeSavedStateRegistryOwner.get(View)
consente di recuperare ilSavedStateRegistry
contenente in base a un'istanzaView
. Per compilare correttamente questo campo, devi eseguire l'upgrade ad Activity1.2.0-alpha05
, Fragment1.3.0-alpha05
e AppCompat1.3.0-alpha01
. (aosp/1298679) - Il nuovo elemento
savedstate-ktx
è stato aggiunto con un'estensione KotlinfindViewTreeSavedStateRegistryOwner()
per lavorare conViewTreeSavedStateRegistryOwner
. (aosp/1299434)
Versione 1.0.0
Versione 1.0.0
5 settembre 2019
androidx.savedstate:savedstate:1.0.0
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Funzionalità principali di SavedState 1.0.0
androidx.savedstate
è stata promossa a release stabile. Si tratta di un insieme di API che consentono agli sviluppatori di collegare componenti al processo di ripristino / salvataggio dell'istanza. Il punto di contatto principale dell'API è SavedStateRegistry
, che fornisce un modo per recuperare gli stati salvati in precedenza utilizzando consumeRestoredStateForKey
e registrare un callback in registerSavedStateProvider
per fornire uno stato salvato quando il sistema lo richiede.
Versione 1.0.0-rc01
2 luglio 2019
androidx.savedstate:savedstate:1.0.0-rc01
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Correzioni di bug
- Regola ProGuard errata corretta (b/132655499)
Versione 1.0.0-beta01
7 maggio 2019
androidx.savedstate:savedstate:1.0.0-beta01
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Versione 1.0.0-alpha02
13 marzo 2019
androidx.savedstate:savedstate:1.0.0-alpha02
viene rilasciato. androidx.savedstate:savedstate
combina gli elementi androidx.savedstate:savedstate-bundle
e androidx.savedstate:savedstate-common
in un unico elemento, perché è stato deciso di semplificare l'infrastruttura di savedstate e rimuovere i generici da SavedStateRegistry
. Di conseguenza, non sono necessari moduli separati.
L'elenco completo dei commit inclusi in questa versione è disponibile qui.
Nuove funzionalità
- Membri aggiunti:
SavedStateRegistry.runOnNextRecreaction(Class<? extends AutoRecreated> clazz )
La classe specificata verrà istanziata e il metodoAutoRecreated.onRecreated
verrà eseguito al riavvio del componente proprietario.
Modifiche all'API
- Generici rimossi da
SavedStateRegistry<T>
- AbstractSavedStateRegistry e BundlableSavedStateRegistry sono stati rimossi. Utilizza invece
SavedStateRegistry
semplice BundleSavedStateRegistryOwner
è stato rinominatoSavedStateRegistryOwner
Versione 1.0.0-alpha01
17 dicembre 2018
Questa è la prima release di SavedState
.
Nuove funzionalità
androidx.savedstate
è un nuovo insieme di API alpha che consente agli sviluppatori di collegare componenti al processo di ripristino / salvataggio dell'istanza. Il punto di contatto principale dell'API è SavedStateRegistry<T>
, che fornisce un modo per recuperare lo stato salvato in precedenza tramite consumeRestoredStateForKey
e registrare un callback in registerSavedStateProvider
per fornire uno stato salvato quando il sistema lo richiede.