Savedstate
Atualização mais recente | Versão estável | Versão candidata a lançamento | Versão Beta | Versão Alfa |
---|---|---|---|---|
11 de dezembro de 2024 | 1.2.1 | - | - | 1.3.0-alpha06 |
Declarar dependências
Para adicionar uma dependência ao SavedState, adicione o repositório Maven do Google ao seu projeto. Leia Repositório Maven do Google para ver mais informações.
Adicione as dependências dos artefatos necessários ao arquivo build.gradle
do
seu app ou módulo:
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") }
Para mais informações sobre dependências, consulte Adicionar dependências de build.
Feedback
Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.
Consulte a documentação do Issue Tracker para saber mais.
Versão 1.3
Versão 1.3.0-alpha06
11 de dezembro de 2024
Lançamento de androidx.savedstate:savedstate-*:1.3.0-alpha06
. A versão 1.3.0-alpha06 contém estas confirmações.
Novos recursos
- O KMP
SavedState
agora oferece suporte a:IBinder
,Size
,SizeF
,Array<Parcelable>
,SparseArray<Parcelable>
e Serializable (Android). (I1ba94, b/334076622). - Adicione instâncias de
KSerializer
que podem ser usadas para codificar/decodificar tipos Java e Android compatíveis com o Bundle marcando o campo relevante na sua classe com@Serializable(with = ParcelableSerializer::class)
. (I8c10f, I28caf, b/376026712). - As instâncias de
SavedStateRegistryOwner
extraídas porfindViewTreeSavedStateRegistryOwner
agora podem ser resolvidas por pais não contíguos de uma visualização, comoViewOverlay
. Consulte as notas da versão do núcleo ou a documentação emViewTree.setViewTreeDisjointParent
para mais informações sobre pais de visualização distintos. (Iccb33).
Mudanças na API
- Os nomes e a organização de pacotes ficaram mais consistentes com
SavedStateRegistryOwnerDelegate
(I8c135, b/376026744).
Versão 1.3.0-alpha05
13 de novembro de 2024
Lançamento de androidx.savedstate:savedstate-*:1.3.0-alpha05
. A versão 1.3.0-alpha05 contém estas confirmações.
Suporte à serialização do KotlinX (link em inglês)
O
SavedState
agora inclui suporte à serialização do KotlinX. É possível converter uma classe anotada com@Serializable
em umSavedState
usando os métodosencodeToSavedState
edecodeFromSavedState
. OSavedState
retornado é umBundle
normal no Android e pode ser usado por qualquer API que aceite umBundle
. (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) }
Também incluímos
saved
, um delegante de propriedade lenta, para facilitar o armazenamento de classes@Serializable
em umSavedStateRegistryOwner
(por exemplo,ComponentActivity
,Fragment
etc.) e restaurar automaticamente essas classes durante a morte e a recriação do processo. O delegadosaved
é preguiçoso e não vai chamar a lambdainit
nem salvar nada noSavedStateRegistry
até que seja acessado. (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") } }
Há um delegante de propriedade
saved
semelhante paraSavedStateHandle
adicionado em2.9.0-alpha07
do ciclo de vida.
Mudanças na API
toMap
foi adicionado aSavedState
, permitindo que qualquerSavedState
seja convertido em umMap
normal (cópia rasa). (I487b9, b/334076622).- O KMP
SavedState
agora oferece suporte a matrizes. (Ic0552, b/334076622).
Versão 1.3.0-alpha04
30 de outubro de 2024
Lançamento de androidx.savedstate:savedstate-*:1.3.0-alpha04
. A versão 1.3.0-alpha04 contém estas confirmações.
Mudanças na API
- O KMP de SavedState agora oferece suporte a Char. (I9ac2f, b/334076622).
- Adição de
putNull
eisNull
ao KMP de SavedState. (Iea71d, b/334076622). - Foram adicionados outros parâmetros de fábrica
savedState
que oferecem suporte a umMap<String, Any>
inicial (I9b37d, b/334076622). - O KMP de SavedState agora oferece suporte à comparação
contentDeepEquals
. (Ia515c, b/334076622). - O KMP de estado salvo agora oferece suporte a Long. (I4c180, b/334076622).
Versão 1.3.0-alpha03
16 de outubro de 2024
Lançamento de androidx.savedstate:savedstate-*:1.3.0-alpha03
sem mudanças importantes. A versão 1.3.0-alpha03 contém estas confirmações.
Versão 1.3.0-alpha02
2 de outubro de 2024
Lançamento de androidx.savedstate:savedstate-*:1.3.0-alpha02
. A versão 1.3.0-alpha02 contém estas confirmações.
Kotlin Multiplatform
- O módulo
SavedState
agora é compatível com o KMP. As plataformas com suporte agora incluem ambientes de computador Android, iOS, Linux, Mac e JVM. (I26305, b/334076622).
Novos recursos
- Introdução do tipo opaco
SavedState
como uma abstração para fornecer uma maneira consistente de salvar e restaurar o estado do aplicativo no KMP. Ele inclui umaSavedStateReader
e umaSavedStateWriter
para modificar o estado a ser salvo. No Android,SavedState
é um tipo de alias paraBundle
, garantindo a compatibilidade binária e facilitando a migração de APIs para um conjunto de origem comum. Em outras plataformas,SavedState
é uma instânciaMap<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")
}
Mudanças na API
SavedStateRegistry
eSavedStateRegistryController
agora são compatíveis com KMP. (Id7bb8, b/334076622).SavedState
,SavedStateWriter
eSavedStateReader
agora são compatíveis com o KMP. (I26305, b/334076622).
Versão 1.3.0-alpha01
7 de agosto de 2024
Lançamento de androidx.savedstate:savedstate:1.3.0-alpha01
e androidx.savedstate:savedstate-ktx:1.3.0-alpha01
. A versão 1.3.0-alpha01 contém estas confirmações.
Mudanças na API
- As extensões
savedstate-ktx
do Kotlin foram movidas para o módulo base do savedstate. (I1cc18, b/274803094).
Observação
- Atualização de
compileSdk
para 35 (5dc41be).
Versão 1.2.1
Versão 1.2.1
22 de março de 2023
Lançamento de androidx.savedstate:savedstate:1.2.1
e androidx.savedstate:savedstate-ktx:1.2.1
. A versão 1.2.1 contém estas confirmações.
Atualizações de dependência
SavedState
agora depende do Lifecycle2.6.1
. (c1f621).
Versão 1.2.0
Versão 1.2.0
29 de junho de 2022
Lançamento de androidx.savedstate:savedstate:1.2.0
e androidx.savedstate:savedstate-ktx:1.2.0
. A versão 1.2.0 contém estas confirmações.
Mudanças importantes desde a versão 1.1.0
- A classe
SavedStateRegistryController
agora permite a anexação antecipada doSavedStateRegistry
pelo métodoperformAttach()
. - Agora você pode extrair um
SavedStateProvider
registrado anteriormente de umSavedStateRegistry
usandogetSavedStateProvider()
. - A biblioteca
SavedState
foi reescrita em Kotlin.- Para
SavedStateRegistryOwner
, essa é uma mudança incompatível com a fonte das classes escritas em Kotlin. Agora é necessário mudar a propriedadesavedStateRegistry
em vez de implementar a funçãogetSavedStateRegistry()
anterior. - Para
ViewTreeSavedStateRegistryOwner
, essa é uma mudança incompatível com a fonte das classes escritas em Kotlin. Agora é necessário importar e usar diretamente os métodos de extensão Kotlin naView
deandroidx.savedstate.setViewTreeSavedStateRegistryOwner
eandroidx.savedstate.findViewTreeSavedStateRegistryOwner
para definir e encontrar um proprietário configurado anteriormente. Isso substitui a APIsavedstate-ktx
defindViewTreeSavedStateRegistryOwner
.
- Para
Mudanças de comportamento
- A classe
SavedStateRegistry
não salva mais um pacote vazio se não houver um estado a ser salvo.
Versão 1.2.0-rc01
11 de maio de 2022
Lançamento de androidx.savedstate:savedstate:1.2.0-rc01
e androidx.savedstate:savedstate-ktx:1.2.0-rc01
. A versão 1.2.0-rc01 contém estas confirmações.
Mudanças na documentação
- Os Kdocs de
SavedStateRegistryOwner
foram atualizados para esclarecer as responsabilidades e o contrato que o proprietário tem sobre como implementar a interface ou quando chamar os métodos na classeSavedStateRegistryController
(Iefc95, b/228887344).
Versão 1.2.0-beta01
20 de abril de 2022
Lançamento de androidx.savedstate:savedstate:1.2.0-beta01
e androidx.savedstate:savedstate-ktx:1.2.0-beta01
. A versão 1.2.0-beta01 contém estas confirmações.
Mudanças na API
- As classes
SavedStateRegistry
eViewTreeSavedStateRegistryOwner
foram reescritas em Kotlin. ParaViewTreeSavedStateRegistryOwner
, essa é uma mudança incompatível com a fonte das classes escritas em Kotlin. Agora é necessário importar e usar diretamente os métodos de extensão Kotlin naView
deandroidx.savedstate.setViewTreeSavedStateRegistryOwner
eandroidx.savedstate.findViewTreeSavedStateRegistryOwner
para definir e encontrar um proprietário configurado anteriormente. Isso substitui a APIsavedstate-ktx
defindViewTreeSavedStateRegistryOwner
. Ela é compatível com binários e mantém a compatibilidade com fontes nas implementações escritas na linguagem de programação Java (b/220191285).
Versão 1.2.0-alpha02
6 de abril de 2022
Lançamento de androidx.savedstate:savedstate:1.2.0-alpha02
e androidx.savedstate:savedstate-ktx:1.2.0-alpha02
. A versão 1.2.0-alpha02 contém estas confirmações.
Novos recursos
- Agora você pode extrair um
SavedStateProvider
registrado anteriormente de umSavedStateRegistry
usandogetSavedStateProvider()
(I7ea47, b/215406268).
Mudanças na API
- As classes
SavedStateRegistryOwner
,SavedStateRegistryController
eRecreator
foram reescritas em Kotlin. ParaSavedStateRegistryOwner
, essa é uma mudança incompatível com a fonte das classes escritas em Kotlin. Agora é necessário mudar a propriedadesavedStateRegistry
em vez de implementar a funçãogetSavedStateRegistry()
anterior. Ela é compatível com binários e fontes e serve para implementações escritas na linguagem de programação Java (b/220191285).
Versão 1.2.0-alpha01
26 de janeiro de 2022
Lançamento de androidx.savedstate:savedstate:1.2.0-alpha01
e androidx.savedstate:savedstate-ktx:1.2.0-alpha01
. A versão 1.2.0-alpha01 contém estas confirmações.
Novos recursos
- A classe
SavedStateRegistryController
agora permite a anexação antecipada daSavedStateRegistry
viaperformAttach()
(Ice4bf).
Mudanças de comportamento
- A classe
SavedStateRegistry
não salva mais um pacote vazio se não houver um estado a ser salvo (aosp/1896865, b/203457956).
Versão 1.1.0
Versão 1.1.0
10 de fevereiro de 2021
Lançamento de androidx.savedstate:savedstate:1.1.0
e androidx.savedstate:savedstate-ktx:1.1.0
. A versão 1.1.0 contém estas confirmações.
Principais mudanças desde a versão 1.0.0
- API
ViewTreeSavedStateRegistryOwner
: uma nova APIViewTreeSavedStateRegistryOwner.get(View)
permite que você recupere oSavedStateRegistry
contido de uma instânciaView
. Você precisa fazer upgrade para a Activity1.2.0
, Fragment1.3.0
e AppCompat1.3.0-alpha01
ou mais recente para preencher corretamente. - Artefato
savedstate-ktx
: o novo artefatosavedstate-ktx
foi adicionado com uma extensão KotlinfindViewTreeSavedStateRegistryOwner()
para trabalhar comViewTreeSavedStateRegistryOwner
.
Versão 1.1.0-rc01
16 de dezembro de 2020
Lançamento de androidx.savedstate:savedstate:1.1.0-rc01
e androidx.savedstate:savedstate-ktx:1.1.0-rc01
, sem mudanças desde a 1.1.0-beta01
. A versão 1.1.0-rc01 contém estas confirmações.
Versão 1.1.0-beta01
1º de outubro de 2020
Lançamento de androidx.savedstate:savedstate:1.1.0-beta01
e androidx.savedstate:savedstate-ktx:1.1.0-beta01
, sem mudanças desde a 1.1.0-alpha01
. A versão 1.1.0-beta01 contém estas confirmações.
Versão 1.1.0-alpha01
20 de maio de 2020
Lançamento de androidx.savedstate:savedstate:1.1.0-alpha01
e androidx.savedstate:savedstate-ktx:1.1.0-alpha01
. A versão 1.1.0-alpha01 contém estas confirmações.
Novos recursos
- Uma nova API
ViewTreeSavedStateRegistryOwner.get(View)
permite que você extraia oSavedStateRegistry
contido de uma instânciaView
. É necessário fazer upgrade para Atividade1.2.0-alpha05
, Fragmento1.3.0-alpha05
e AppCompat1.3.0-alpha01
para preencher corretamente. (aosp/1298679). - O novo artefato
savedstate-ktx
foi adicionado com uma extensão KotlinfindViewTreeSavedStateRegistryOwner()
para trabalhar comViewTreeSavedStateRegistryOwner
(aosp/1299434, link em inglês).
Versão 1.0.0
Versão 1.0.0
5 de setembro de 2019
Lançamento de androidx.savedstate:savedstate:1.0.0
. As confirmações incluídas nesta versão podem ser conferidas neste link.
Principais recursos do SavedState 1.0.0
androidx.savedstate
se tornou uma versão estável. Este é um conjunto de APIs que permite aos desenvolvedores conectar componentes de plug-in no processo restore / saveInstanceState. O ponto de entrada principal da API é SavedStateRegistry
, que traz uma maneira de recuperar estados salvos anteriormente usando consumeRestoredStateForKey
e registrar um callback para registerSavedStateProvider
para disponibilizar um estado salvo quando o sistema o solicitar.
Versão 1.0.0-rc01
2 de julho de 2019
Lançamento de androidx.savedstate:savedstate:1.0.0-rc01
. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).
Correções de bugs
- Correção de uma regra incorreta do Proguard (b/132655499)
Versão 1.0.0-beta01
7 de maio de 2019
Lançamento de androidx.savedstate:savedstate:1.0.0-beta01
. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).
Versão 1.0.0-alpha02
13 de março de 2019
Lançamento de androidx.savedstate:savedstate:1.0.0-alpha02
. androidx.savedstate:savedstate
combina androidx.savedstate:savedstate-bundle
e androidx.savedstate:savedstate-common
em um único artefato, porque foi decidido simplificar a infraestrutura do savedstate e remover os genéricos do SavedStateRegistry
. Portanto, não é necessário ter módulos diferentes.
A lista completa das confirmações incluídas nesta versão pode ser conferida neste link.
Novos recursos
- Adição de
SavedStateRegistry.runOnNextRecreaction(Class<? extends AutoRecreated> clazz )
. A classe determinada será instanciada e o métodoAutoRecreated.onRecreated
será executado quando o componente proprietário for reiniciado.
Mudanças na API
- Genéricos removidos de
SavedStateRegistry<T>
. - AbstractSavedStateRegistry e BundlableSavedStateRegistry foram removidos. Use
SavedStateRegistry
. BundleSavedStateRegistryOwner
foi renomeado comoSavedStateRegistryOwner
.
Versão 1.0.0-alpha01
17 de dezembro de 2018
Essa é a primeira versão do SavedState
.
Novos recursos
androidx.savedstate
é um novo conjunto de APIs alfa que permite que os desenvolvedores façam o plug-in de componentes para o processo restore / saveInstanceState. O ponto de entrada principal da API é SavedStateRegistry<T>
, que traz uma maneira de recuperar o savedstate anterior via consumeRestoredStateForKey
e registrar um callback para registerSavedStateProvider
para disponibilizar um savedstate quando o sistema o solicitar.