Stato salvato

Scrivi componenti plug-in che salvano lo stato dell'interfaccia utente quando un processo termina e lo ripristinano al riavvio del processo.
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.

Creare un nuovo problema

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 tramite findViewTreeSavedStateRegistryOwner ora possono essere risolte tramite elementi principali indipendenti di una visualizzazione, ad esempio un ViewOverlay. Per ulteriori informazioni sui gruppi di visualizzazioni principali non connessi, consulta le note di rilascio di Core o la documentazione in ViewTree.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 un SavedState utilizzando i metodi encodeToSavedState e decodeFromSavedState. Il SavedState restituito è un normale Bundle su Android e può essere utilizzato da qualsiasi API che accetti un Bundle. (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 un SavedStateRegistryOwner (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 delegato saved è lazy e non chiamerà la funzione lambda init né salverà nulla in SavedStateRegistry 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 per SavedStateHandle.

Modifiche all'API

  • Aggiungi toMap a SavedState, in modo che qualsiasi SavedState possa essere convertito in un normale Map (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

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 un SavedStateReader e un SavedStateWriter per modificare lo stato da salvare. Su Android, SavedState è un alias di tipo per Bundle, che garantisce la compatibilità binaria e semplifica la migrazione delle API esistenti a un insieme di origini comune. Su altre piattaforme, SavedState è un'istanza di Map<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 e SavedStateRegistryController ora sono compatibili con KMP. (Id7bb8, b/334076622)
  • SavedState, SavedStateWriter e SavedStateReader 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

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 del SavedStateRegistry tramite performAttach().
  • Ora puoi recuperare un SavedStateProvider registrato in precedenza da un SavedStateRegistry tramite getSavedStateProvider().
  • 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 funzione getSavedStateRegistry() 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 su View di androidx.savedstate.setViewTreeSavedStateRegistryOwner e androidx.savedstate.findViewTreeSavedStateRegistryOwner per impostare e trovare un proprietario impostato in precedenza. Questa API sostituisce l'API savedstate-ktx di findViewTreeSavedStateRegistryOwner.

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 su SavedStateRegistryController. (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 e ViewTreeSavedStateRegistryOwner sono state riscritte in Kotlin. 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 su View di androidx.savedstate.setViewTreeSavedStateRegistryOwner e androidx.savedstate.findViewTreeSavedStateRegistryOwner per impostare e trovare un proprietario impostato in precedenza. Questa API sostituisce l'API savedstate-ktx di findViewTreeSavedStateRegistryOwner. È 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 un SavedStateRegistry tramite getSavedStateProvider(). (I7ea47, b/215406268)

Modifiche all'API

  • Le classi SavedStateRegistryOwner, SavedStateRegistryController e Recreator sono state riscritte 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 funzione getSavedStateRegistry() 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 il SavedStateRegistry tramite performAttach(). (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 API ViewTreeSavedStateRegistryOwner.get(View) consente di recuperare il SavedStateRegistry contenente in base a un'istanza View. Per compilare correttamente questo campo, devi eseguire l'upgrade ad Activity 1.2.0, Fragment 1.3.0 e AppCompat 1.3.0-alpha01 o versioni successive.
  • Elemento savedstate-ktx: il nuovo elemento savedstate-ktx è stato aggiunto con un'estensione Kotlin findViewTreeSavedStateRegistryOwner() per lavorare con ViewTreeSavedStateRegistryOwner.

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 il SavedStateRegistry contenente in base a un'istanza View. Per compilare correttamente questo campo, devi eseguire l'upgrade ad Activity 1.2.0-alpha05, Fragment 1.3.0-alpha05 e AppCompat 1.3.0-alpha01. (aosp/1298679)
  • Il nuovo elemento savedstate-ktx è stato aggiunto con un'estensione Kotlin findViewTreeSavedStateRegistryOwner() per lavorare con ViewTreeSavedStateRegistryOwner. (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

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 metodo AutoRecreated.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 rinominato SavedStateRegistryOwner

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.