Ciclo de vida
Esta tabela lista todos os artefatos no grupo androidx.lifecycle.
| Artefato | Versão estável | Versão candidata a lançamento | Versão Beta | Versão Alfa |
|---|---|---|---|---|
| lifecycle-* | 2.9.4 | - | 2.10.0-beta01 | - |
| lifecycle-viewmodel-navigation3 | - | - | 2.10.0-beta01 | - |
Declarar dependências
Para adicionar uma dependência ao Lifecycle, é preciso adicionar 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 no arquivo build.gradle para
seu app ou módulo:
Kotlin
Groovy
dependencies { def lifecycle_version = "2.9.4" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" // ViewModel utilities for Compose implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" // Lifecycle utilities for Compose implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // ViewModel integration with Navigation3 implementation "androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0-beta01" // Annotation processor kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.9.4" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version") // ViewModel utilities for Compose implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version") // Lifecycle utilities for Compose implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // ViewModel integration with Navigation3 implementation("androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0-beta01") // Annotation processor kapt("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Java
Groovy
dependencies { def lifecycle_version = "2.9.4" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // Annotation processor annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.9.4" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // Annotation processor annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Para ver 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 2.10
Versão 2.10.0-beta01
22 de outubro de 2025
Lançamento de androidx.lifecycle:lifecycle-*:2.10.0-beta01. A versão 2.10.0-beta01 contém estes commits.
Mudanças na API
ViewModelStoreNavEntryDecoratorDefaultfoi renomeado comoViewModelStoreNavEntryDecoratorDefaults, com um "s". (I6d27b, b/444447434)
Correções de bugs
- O
rememberLifecycleOwnernão falha mais se o proprietário receber um eventoLifecycle.Event.ON_DESTROYantes de passar paraLifeycle.State.CREATED. (I6f98e, b/444594991)
Versão 2.10.0-alpha05
8 de outubro de 2025
Lançamento de androidx.lifecycle:lifecycle-*:2.10.0-alpha05. A versão 2.10.0-alpha05 contém estes commits.
Mudanças na API
- O
removeViewModelStoreOnPopCallback()agora faz parte de um objetoViewModelStoreNavEntryDecoratorDefault, que é onde outras plataformas e implementações podem chamar o padrão. (Ia1f23, b/444447434) - Refatoração de
ViewModelStoreNavEntryDecoratorde uma função para uma classe para refletir melhor a funcionalidade como uma fábrica deNavEntryDecorator. Além disso, o parâmetroshouldRemoveViewModelStoredo decorador foi renomeado pararemoveViewModelStoreOnPoppara esclarecer que esse callback é invocado apenas quando uma entrada é removida dabackStack. (Iefdc5, b/444447434).
Versão 2.10.0-alpha04
24 de setembro de 2025
Lançamento de androidx.lifecycle:lifecycle-*:2.10.0-alpha04. A versão 2.10.0-alpha04 contém estes commits.
Mudanças na API
- Refatore o elemento combinável
LifecycleOwnerpararememberLifecycleOwner. Agora, a função retorna oLifecycleOwnerdiretamente. Para fornecer esse proprietário a uma subcomposição, useCompositionLocalProvider. (Ic57f0, b/444446629) - Adicione stubs do KMP ao lifecycle-viewmodel-navigation3 para permitir que a JetBrains forneça forks que preenchem esses destinos e, assim, ofereçam suporte à CMP. (I44a4c).
Versão 2.10.0-alpha03
27 de agosto de 2025
Lançamento de androidx.lifecycle:lifecycle-*:2.10.0-alpha03. A versão 2.10.0-alpha03 contém estes commits.
Mudanças na API
- Atualize o Compose para a versão 1.9.0. (I2b9de)
Versão 2.10.0-alpha02
13 de agosto de 2025
Lançamento de androidx.lifecycle:lifecycle-*:2.10.0-alpha02. A versão 2.10.0-alpha02 contém estes commits.
Novos recursos
O elemento combinável
LifecycleOwneragora pode criar um ciclo de vida raiz independente. Ao definirparent = null(explicitamente), o novo ciclo de vida opera de forma independente de qualquer host (como umActivity,FragmentouNavBackStackEntry). Ele começa assim que o elemento combinável entra na composição e é destruído automaticamente quando sai. (I8dfbe, b/433659048).@Composable fun IndependentComponent() { // Create a standalone lifecycle, not tied to the parent Activity/Fragment. LifecycleOwner(parent = null) { val rootLifecycle = LocalLifecycleOwner.current.lifecycle } }
Mudanças na API
- No elemento combinável
LifecycleOwner, o parâmetroparentLifecycleOwnerfoi renomeado comoparent. (I080bc).
Correções de bugs
- O elemento combinável
LifecycleOwneragora move corretamente o ciclo de vida paraDESTROYEDapós a remoção. Isso evita possíveis vazamentos para códigos externos que mantêm uma referência ao ciclo de vida. (I9e5b7, b/433659048) - Mudança da minSdk padrão da API 21 para a API 23 (Ibdfca, b/380448311, b/435705964, b/435705223).
Contribuição externa
- Remoção de campos de suporte internos desnecessários de
LifecycleOwner. Agradecemos a contribuição de Jake Wharton. (Ideddb).
Versão 2.10.0-alpha01
30 de julho de 2025
Lançamento de androidx.lifecycle:lifecycle-*:2.10.0-alpha01. A versão 2.10.0-alpha01 contém estes commits.
Novos recursos
Adicione um elemento combinável
LifecycleOwnerpara permitir a criação de ciclos de vida com escopo diretamente na interface. Isso é útil para componentes que precisam gerenciar os próprios ciclos de vida de forma independente. Para ver um exemplo de como o Navigation3 integra esse novo elemento combinável, consulte aosp/3708610. (76cbf7).@Composable fun MyComposable() { LifecycleOwner( maxLifecycle = RESUMED, parentLifecycleOwner = LocalLifecycleOwner.current, ) { val childLifecycleOwner = LocalLifecycleOwner.current } }
Mudanças na API
- Adicione uma função de fábrica do builder para
CreationExtras, fornecendo uma API Kotlin mais conveniente e idiomática. (Iab2bd). - Adição de suporte nativo para tipos anuláveis em
SavedStateHandle.saved, simplificando o salvamento e a restauração de propriedades anuláveis. (I54d69, b/421325690) - Marque os construtores
SavedStateHandlecomo@VisibleForTesting. (Iff0e0, b/408002794)
Versão 2.9
Versão 2.9.4
17 de setembro de 2025
Lançamento de androidx.lifecycle:lifecycle-*:2.9.4. A versão 2.9.4 contém estes commits.
Correções de bugs
- Correção de um erro com o plug-in do compilador do Compose que não estava sendo aplicado e causava falhas nos artefatos do KMP do ciclo de vida. (Ie95bc, b/443096483, b/443965665).
Versão 2.9.3
27 de agosto de 2025
Lançamento de androidx.lifecycle:lifecycle-*:2.9.3. A versão 2.9.3 contém estes commits.
Novos recursos
- Adicione novas plataformas do Kotlin Multiplatform (KMP) aos artefatos
*-composedo ciclo de vida. Agora o ciclo de vida oferece suporte às seguintes plataformas: JVM (Android e computador), nativa (Linux, iOS, watchOS, macOS, MinGW) e Web (JavaScript, WasmJS). (I0a0e4).
Correções de bugs
- Atualização do
androidx.annotationpara 1.9.1 (Ic9e4f, b/397701294)
Versão 2.9.2
16 de julho de 2025
Lançamento de androidx.lifecycle:lifecycle-*:2.9.2. A versão 2.9.2 contém estes commits.
Correções de bugs
- Adição de novas plataformas do Kotlin Multiplatform (KMP) aos artefatos do ciclo de vida. Agora o ciclo de vida oferece suporte às seguintes plataformas: JVM (Android e computador), nativa (Linux, iOS, watchOS, macOS, MinGW) e Web (JavaScript, WasmJS). Nenhum novo destino do KMP foi adicionado aos artefatos
*-compose, já que isso depende do lançamento estável do Compose 1.9. (I01cb8).
Atualizações de dependência
- O ciclo de vida agora depende da Annotation
1.9.1para ativar o suporte aos novos destinos do KMP (Ic9e4f, b/397701294).
Versão 2.9.1
4 de junho de 2025
Lançamento de androidx.lifecycle:lifecycle-*:2.9.1. A versão 2.9.1 contém estes commits.
Correções de bugs
- Correção de
SavedStateHandle.remove(key)que não limpa os estados deSavedStateHandle.getMutableStateFlow(key). (d5f939, b/418746333)
Versão 2.9.0
7 de maio de 2025
Lançamento de androidx.lifecycle:lifecycle-*:2.9.0. A versão 2.9.0 contém estes commits.
Mudanças importantes desde a versão 2.8.0
- Um novo artefato
androidx.lifecycle:lifecycle-viewmodel-testingKMP está disponível e oferece uma classeViewModelScenariopara testarViewModelsisoladamente, com suporte paraonClearedeSavedStateHandle, além de morte e recriação do processo de teste viarecreate(). - Adicione
getMutableStateFlowaSavedStateHandlepara retornar umMutableStateFlow. Essa nova função é exclusiva para chaves e não pode ser usada comgetLiveData. Uma exceção será gerada se você tentar usar os dois para acessar o mesmo estado. - O
CreationExtrasagora inclui sobrecargas de operadores semelhantes a mapas para permitir a manipulação idiomática de conteúdo em Kotlin. Ele permite o uso dein,+=e+comCreationExtras.
Suporte à serialização do KotlinX (link em inglês)
Com o suporte da serialização KotlinX adicionado em SavedState
1.3.0, apresentamossaved, um delegado de propriedade lazy, para facilitar o armazenamento de classes@Serializableem umSavedStateHandlee a restauração automática dessas classes em caso de encerramento e recriação do processo. O delegadosavedé lazy e não vai chamar a lambdainitnem salvar nada noSavedStateHandleaté que ele seja acessado.@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
Kotlin Multiplatform
- O módulo
lifecycle-testingagora é compatível com KMP, incluindo APIs comoTestLifecycleOwner. - O módulo
lifecycle-viewmodel-savedstateagora é compatível com KMP, incluindo APIs comoSavedStateHandle. - O
androidx.compose.ui.platform.LocalLifecycleOwneragora está disponível no conjunto de fontes comum. - Agora, o
NewInstanceFactoryestá disponível para destinos de computadores e Android da JVM.
Mudanças de comportamento
- O estado
Lifecycle.DESTROYEDé terminal, e qualquer tentativa de mover umLifecycledele para outro estado vai resultar em umIllegalStateException. SavedStateHandlenão inclui mais nenhumSavedStateProvider.saveState()em que oBundleretornado está vazio.
Versão 2.9.0-rc01
23 de abril de 2025
Lançamento de androidx.lifecycle:lifecycle-*:2.9.0-rc01. A versão 2.9.0-rc01 contém estes commits.
Aviso de compatibilidade da API Lint
- A JetBrains mudou
KaCallableMemberCallde uma classe para uma interface, o que prejudica a compatibilidade binária. Isso pode causar falhas se a versão do AGP do projeto for diferente da versão usada para compilar verificações de lint. Essa atualização foi feita em aosp/3577172, mas não estava nas notas da versão. Estamos esclarecendo isso aqui. Correção recomendada:atualize para a versão estável mais recente do AGP. Se não for possível atualizar totalmente, useandroid.experimental.lint.versionpara alinhar as verificações do Lint com sua versão do AGP. Consulte Mudanças no comportamento do Compose Runtime para mais detalhes.
Versão 2.9.0-beta01
9 de abril de 2025
Lançamento de androidx.lifecycle:lifecycle-*:2.9.0-beta01. A versão 2.9.0-beta01 contém estes commits.
Mudanças na API
- O
Lifecycle ViewModel Composeagora usa a mesma configuração multiplataforma do Kotlin que o Compose Runtime 1.7.1 e versões mais recentes. Os artefatos-desktopforam removidos, e os artefatos-jvmStubse-linuxx64Stubsforam adicionados. Nenhum deles é destinada a uso. Elos são marcadores de posição auxiliares do Jetbrains Compose. (I5cb14, b/406592090)
Atualizações de dependência
- Essa biblioteca agora é destinada ao nível de linguagem Kotlin 2.0 e exige o KGP 2.0.0 ou mais recente. (Idb6b5).
- O
Lifecycle ViewModel Composeagora depende do Compose 1.7.8. (I5cb14, b/406592090)
Versão 2.9.0-alpha13
26 de março de 2025
Lançamento de androidx.lifecycle:lifecycle-*:2.9.0-alpha13 sem mudanças públicas significativas. A versão 2.9.0-alpha13 contém estes commits.
Versão 2.9.0-alpha12
12 de março de 2025
Lançamento de androidx.lifecycle:lifecycle-*:2.9.0-alpha12. A versão 2.9.0-alpha12 contém estes commits.
Mudanças na API
- Adicione a anotação
@MainThreadaViewModelProvider.getem todas as plataformas KMP compatíveis. (I7e8dd, b/397736115). SavedState*Delegatesfoi renomeado comoSavedState*Delegate. (I8589b, b/399629301)
Versão 2.9.0-alpha11
26 de fevereiro de 2025
Lançamento de androidx.lifecycle:lifecycle-*:2.9.0-alpha11. A versão 2.9.0-alpha11 contém estes commits.
Mudanças na API
- Adição do parâmetro
SavedStateConfigaos delegadossaved()(I39b3a)
Versão 2.9.0-alpha10
12 de fevereiro de 2025
Lançamento de androidx.lifecycle:lifecycle-*:2.9.0-alpha10. A versão 2.9.0-alpha10 contém estes commits.
Mudanças na API
- Mova
MutableStateSerializerdelifecycle-viewmodel-composeparasavedstate-compose. (I4f690, b/378895074)
Contribuição externa
- Adiciona um novo problema do Lint para chamar
Lifecycle::currentStatena composição. Em vez disso, sugere o uso decurrentStateAsalue().valuepara garantir que as mudanças no estado do ciclo de vida causem a recomposição corretamente. Agradecimentos a Steven Schoen (Iad484).
Versão 2.9.0-alpha09
29 de janeiro de 2025
Lançamento de androidx.lifecycle:lifecycle-*:2.9.0-alpha09. A versão 2.9.0-alpha09 contém estes commits.
Novos recursos
- Adicione
MutableStateSerializerpara serializarandroidx.compose.runtime.MutableState. (Idfc48, b/378895074).
Mudanças na API
- Substitua as funções delegadas
SavedStateHandle.saved()sobrecarregadas por parâmetros padrão (Icd1c1). AbstractSavedStateViewModelFactoryestá descontinuado porque cria umSavedStateHandlepara cadaViewModel, causando sobrecarga desnecessária. UseViewModelProvider.FactorycomCreationExtras.createSavedStateHandleem vez disso para uma criação mais eficiente deViewModel. (Ia920b, b/388590327)
Versão 2.9.0-alpha08
11 de dezembro de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.9.0-alpha08. A versão 2.9.0-alpha08 contém estes commits.
Novos recursos
- Adicione
ViewModelScenario.recreatepara simular uma morte de processo do sistema, recriando oViewModelem teste e todos os componentes associados. (Id6a69, b/381063087). - As instâncias
LifecycleOwnereViewModelStoreOwnerrecuperadas pelas respectivas APIsfindViewTreeagora podem ser resolvidas por pais disjuntos de uma visualização, como umViewOverlay. Consulte as notas da versão do núcleo ou a documentação emViewTree.setViewTreeDisjointParentpara mais informações sobre pais de visualizações desconexas. (I800f4).
Mudanças na API
- Deixar a nomenclatura e a organização de pacotes mais consistentes com
SavedStateRegistryOwnerDelegate(I8c135, b/376026744)
Correções de bugs
- Agora, essa biblioteca usa anotações de nulidade do JSpecify, que são de uso de tipo. Os desenvolvedores Kotlin precisam usar o seguinte argumento do compilador para garantir o uso correto:
-Xjspecify-annotations=strict(esse é o padrão a partir da versão 2.1.0 do compilador Kotlin). (Ie4340, b/326456246). - Sequência de limpeza do documento
ViewModel.onCleared. (I586c7, b/363984116).
Versão 2.9.0-alpha07
13 de novembro de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.9.0-alpha07. A versão 2.9.0-alpha07 contém estes commits.
Compatibilidade com Kotlin Multiplatform
- O ciclo de vida
ViewModel SavedStateagora é compatível com o KMP. Isso permite usarSavedStateHandleem códigos comuns. (Ib6394, b/334076622).
Suporte à serialização do KotlinX (link em inglês)
Com o suporte da serialização KotlinX adicionado em SavedState
1.3.0-alpha05, apresentamossaved, um delegado de propriedade lazy, para facilitar o armazenamento de classes@Serializableem umSavedStateHandlee a restauração automática dessas classes em caso de encerramento e recriação do processo. O delegadosavedé lazy e não vai chamar a lambdainitnem salvar nada noSavedStateHandleaté que ele seja acessado. (I47a88, b/376026744)@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
Mudanças na API
- Adicione
getMutableStateFlowaSavedStateHandlepara retornar umMutableStateFlow. Essa nova função é exclusiva para chaves e não pode ser usada comgetLiveData. Uma exceção será gerada se você tentar usar os dois para acessar o mesmo estado. (I04a4f, b/375408415)
Versão 2.9.0-alpha06
30 de outubro de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.9.0-alpha06. A versão 2.9.0-alpha06 contém estes commits.
Mudanças de comportamento
- O estado
Lifecycle.DESTROYEDé terminal, e qualquer tentativa de mover umLifecycledele para outro estado vai resultar em umIllegalStateException. (I116c4, b/370577987) SavedStateHandlenão inclui mais nenhumSavedStateProvider.saveState()em que oBundleretornado está vazio. (I910b5, b/370577987).
Correções de bugs
Lifecycle.eventFlowagora é concluído corretamente quandoLifecycleéDESTROYED(I293b2, b/374043130).
Versão 2.9.0-alpha05
16 de outubro de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.9.0-alpha05 sem mudanças importantes. A versão 2.9.0-alpha05 contém estes commits.
Versão 2.9.0-alpha04
2 de outubro de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.9.0-alpha04. A versão 2.9.0-alpha04 contém estes commits.
Kotlin Multiplatform
- O módulo
lifecycle-viewmodel-savedstateagora está configurado para ser compatível com o KMP em preparação para APIs comoSavedStateHandle, que serão disponibilizadas no conjunto de fontes comum em uma versão futura. (I503ed, I48764, b/334076622)
Versão 2.9.0-alpha03
18 de setembro de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.9.0-alpha03. A versão 2.9.0-alpha03 contém estes commits.
Correções de bugs
- No Lifecycle
2.8.6: o erro de lintNullSafeMutableLiveDatatem suporte aprimorado para conversões inteligentes, evitando falsos positivos. (85fed6, b/181042665)
Atualizações de dependência
- Do Lifecycle
2.8.6: o Lifecycle Runtime Compose agora depende do Compose Runtime1.7.1 - O ambiente de execução do ciclo de vida agora depende do ProfileInstaller
1.4.0
Versão 2.9.0-alpha02
4 de setembro de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.9.0-alpha02. A versão 2.9.0-alpha02 contém estes commits.
Correções de bugs
- No Lifecycle
2.8.5: atualização das regras do ProGuardandroidx.lifecycle.ReportFragmentpara permitir a ofuscação . (ff898e1)
Contribuição externa
- Mova
androidx.compose.ui.platform.LocalLifecycleOwnerpara o conjunto de origem comum (KMP). Agradecemos a Ivan Matkov, da JetBrains, pela contribuição. (8cd5d03) - Do Lifecycle
2.8.5: o delegado de extensão "SavedStateHandle.saveable" agora aceita valores anuláveis. Agradecemos a contribuição de Roman Kalukiewicz. (0d78ea6)
Versão 2.9.0-alpha01
7 de agosto de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.9.0-alpha01. A versão 2.9.0-alpha01 contém estes commits.
Kotlin Multiplatform
- O
lifecycle-testingagora é compatível com o KMP. (Iea41e). - Adição de suporte ao destino multiplataforma Kotlin
linuxArm64(I139d3, b/338268719).
Novos recursos
- Um novo artefato
androidx.lifecycle:lifecycle-viewmodel-testingdo KMP está disponível e oferece uma classeViewModelScenariopara testar ViewModels isoladamente, com suporte paraonCleared(todas as plataformas) eSavedStateHandle(somente Android). (337f68d, c9b3409, 9799a95c, b/264602919) - Agora, criar um
ViewModelcomViewModelProvideré thread-safe. As anotações@MainThreadforam removidas. (Ifd978, b/237006831).
Mudanças na API
- Adicione a função de fábrica
CreationExtras.Key()para simplificar a criação de objetosCreationExtras.Keyanônimos. (I970ee). - O
CreationExtrasagora inclui sobrecargas de operadores semelhantes a mapas para permitir a manipulação idiomática de conteúdo em Kotlin. Ele permite o uso dein,+=e+comCreationExtras. (Ib4353). CreationExtrasagora implementa os métodosequals,hashCodeetoString. (Ib4353).- Agora, o
NewInstanceFactoryestá disponível para destinos de computadores e Android da JVM. (d3d0892) - Propriedade de extensão inline para expor o aplicativo subjacente com segurança na versão 2.0 da linguagem Kotlin (I39df2).
Correções de bugs
- Removemos o esboço manual do acesso a novas APIs da plataforma, já que isso acontece automaticamente pela modelagem de API ao usar o R8 com o AGP 7.3 ou mais recente (por exemplo, a versão 3.3 do R8) e para todos os builds ao usar o AGP 8.1 ou mais recente (por exemplo, a versão 8.1 do D8). Recomendamos que os clientes que não usam o AGP atualizem para a versão 8.1 ou mais recente do D8. Veja mais detalhes neste artigo. (If6b4c, b/345472586)
Versão 2.8
Versão 2.8.7
30 de outubro de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.8.7. A versão 2.8.7 contém estes commits.
Mudanças na API
- O
androidx.compose.ui.platform.LocalLifecycleOwneragora está disponível no conjunto de origem comum (KMP). (6a3f5b3) lifecycle-runtime-compose: os artefatosdesktopforam removidos, e os artefatos-jvmStubse-linuxx64Stubsforam adicionados. Nenhum deles é destinada a uso. Elos são marcadores de posição auxiliares do Jetbrains Compose. (6a3f5b3)
Versão 2.8.6
18 de setembro de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.8.6. A versão 2.8.6 contém estes commits.
Correções de bugs
- O erro de lint
NullSafeMutableLiveDatamelhorou a compatibilidade com conversões inteligentes, evitando falsos positivos. (85fed6, b/181042665)
Atualizações de dependência
- O Lifecycle Runtime Compose agora depende do Compose Runtime
1.7.1
Versão 2.8.5
4 de setembro de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.8.5. A versão 2.8.5 contém estes commits.
Correções de bugs
- Atualize as regras do ProGuard
androidx.lifecycle.ReportFragmentpara permitir a ofuscação . (ff898e1)
Contribuição externa
- O delegado de extensão
SavedStateHandle.saveableagora aceita valores anuláveis. Agradecemos a contribuição de Roman Kalukiewicz. (0d78ea6)
Versão 2.8.4
24 de julho de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.8.4. A versão 2.8.4 contém estes commits.
Correções de bugs
- O
LiveData.asFlow()agora processa corretamente casos em que o Flow retornado é concluído imediatamente após receber um valor já definido noLiveData(por exemplo, ao usartake(1)). (I9c566) - A conclusão de
Lifecycle*Effectagora é idempotente. Ou seja, se oonStopOrDisposefoi chamado porque o ciclo de vida foi interrompido, ele não será chamado uma segunda vez após a remoção, a menos que o ciclo de vida volte paraSTARTED. (I5f607, b/352364595)
Versão 2.8.3
1º de julho de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.8.3. A versão 2.8.3 contém estes commits.
Correções de bugs
- Correção de um problema com a compatibilidade com versões anteriores do Lifecycle 2.8 com o Compose 1.6.0 e versões anteriores ao usar a redução de código. (aosp/3133056, b/346808608)
Versão 2.8.2
12 de junho de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.8.2. A versão 2.8.2 contém estes commits.
Correções de bugs
- Correção de erros
CompositionLocal LocalLifecycleOwner not presentao usar o ciclo de vida 2.8.X com o Compose 1.6.X ou versões anteriores. Agora é possível usar o ciclo de vida 2.8.2 com qualquer versão do Compose sem precisar de soluções alternativas. (aosp/3105647, b/336842920) - A classe
ViewModelProvidernão vai mais falhar ao combinar versões anteriores de dependências do ciclo de vidacompileOnlycom versões 2.8 ou mais recentes, corrigindo problemas com bibliotecas como o LeakCanary. (I80383, b/341792251).
Versão 2.8.1
29 de maio de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.8.1. A versão 2.8.1 contém estes commits.
Correções de bugs
- O
lifecycle-viewmodel-composeagora tem apenas uma dependência comum docompose-runtime, removendo a dependência comum docompose-ui. O artefato do Android mantém ocompose-uipara compatibilidade. (aosp/3079334, b/339562627) - A integração
saveabledoViewModelusando delegados de propriedade agora usa o nome da classe como parte da chave gerada automaticamente, evitando conflitos se várias classes usarem o mesmoSavedStateHandle. (aosp/3063463)
Versão 2.8.0
14 de maio de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.8.0. A versão 2.8.0 contém estes commits.
Mudanças importantes desde a versão 2.7.0
- O
LocalLifecycleOwnerfoi movido da interface do Compose para olifecycle-runtime-composepara que as APIs auxiliares baseadas no Compose possam ser usadas fora da interface do Compose. - O artefato
lifecycle-runtime-composeagora contém as APIsdropUnlessResumededropUnlessStarted, que permitem descartar cliques ou outros eventos que ocorrem mesmo depois que oLifecycleOwnerfica abaixo doLifecycle.Stateespecificado. Por exemplo, isso pode ser usado com o Navigation Compose para evitar o processamento de eventos de clique depois que uma transição para outra tela já começou:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) } ViewModel.viewModelScopeagora é um parâmetro de construtor substituível, permitindo injetar seu próprio dispatcher eSupervisorJob()ou substituir o padrão usando obackgroundScopedisponível emrunTest. (I2817c, b/264598574).class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }O
ViewModelfoi reescrito em Kotlin e agora usaAutoClosableem vez deCloseable. Agora é possível adicionar objetosAutoCloseablecom umkeyque permite recuperá-los viagetCloseable().Chamar
LifecycleStartEffecteLifecycleResumeEffectsem uma chave agora é um erro, seguindo a mesma convenção da APIDisposableEffect, que essas APIs espelham.O uso de
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)foi suspenso em favor deLiveData.toPublisher(lifecycleOwner).As extensões
lifecycle-livedata-core-ktxdo Kotlin foram movidas para o módulolifecycle-livedata-core.O
NullSafeMutableLiveDatafoi refatorado para evitar muitos falsos positivos.
Compatibilidade do ciclo de vida com o Kotlin Multiplatform
As APIs principais do ciclo de vida em Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event e LifecycleRegistry agora são enviadas em artefatos compatíveis com o Kotlin Multiplatform.
Artefatos afetados:
- O
lifecycle-commonmove a maioria das APIs paracommone oferece suporte a jvm e iOS, além do Android. - O
lifecycle-runtimemove a maioria das APIs paracommone oferece suporte a jvm e iOS, além do Android. lifecycle-runtime-ktxagora está vazio, e todas as APIs foram movidas paralifecycle-runtime.- O
lifecycle-runtime-composemove todas as APIs paracommone envia um artefato do Android, correspondendo ao suporte multiplataforma doandroidx.compose.
Compatibilidade do ViewModel com Kotlin Multiplatform
O artefato lifecycle-viewmodel e as APIs como ViewModel, ViewModelStore, ViewModelStoreOwner e ViewModelProvider agora são enviados em artefatos compatíveis com o Kotlin Multiplatform.
Para acomodar essa mudança, métodos como os em ViewModelProvider, que usavam um java.lang.Class<T>, agora têm um método equivalente que usa um kotlin.reflect.KClass<T>.
A compatibilidade binária no Android foi mantida, mas há algumas mudanças importantes ao comparar a superfície da API do Android com a superfície da API comum:
- Agora, a construção de uma instância
ViewModelProvideré feita pelos métodosViewModelProvider.create()em vez de chamar diretamente o construtor. - O
ViewModelProvider.NewInstanceFactorye oViewModelProvider.AndroidViewModelFactoryestão disponíveis apenas no Android.- Recomendamos que as fábricas personalizadas estendam de
ViewModelProvider.Factorye usem o métodocreate, que usa umCreationExtras, ou a DSL do KotlinviewModelFactory.
- Recomendamos que as fábricas personalizadas estendam de
- Usar
ViewModelProvidersem uma fábrica personalizada em plataformas que não são JVM resulta em umUnsupportedOperationException. Em plataformas JVM, a compatibilidade é preservada usando o construtor ViewModel sem argumentos se uma fábrica personalizada não for fornecida. - O
viewModelScopevai voltar para umEmptyCoroutineContextem plataformas onde oDispatchers.Mainnão está disponível (por exemplo, Linux).
Artefatos afetados:
- O
lifecycle-viewmodelmove a maioria das APIs paracommone oferece suporte a jvm e iOS, além do Android. lifecycle-viewmodel-ktxagora está vazio, e todas as APIs foram movidas paralifecycle-viewmodel.- O
lifecycle-viewmodel-composemove todas as APIs paracommone envia um artefato do Android, correspondendo ao suporte multiplataforma doandroidx.compose.
Mudanças de comportamento
InitializerViewModelFactory(incluindo a função de builderviewModelFactory) agora vai gerar umIllegalArgumentExceptionse uminitializercom o mesmoclazz: KClass<VM : ViewModel>já tiver sido adicionado. (Ic3a36).
Problemas conhecidos
lifecycle-*:2.8.0exige uma versão mínima do Compose de 1.7.0-alpha05 (b/336842920).
Versão 2.8.0-rc01
1º de maio de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.8.0-rc01. A versão 2.8.0-rc01 contém estes commits.
Correções de bugs
- Correção de um problema em que o perfil de referência para classes
lifecycle-commonnão era empacotado corretamente. Agora eles estão empacotados no AARlifecycle-runtime. (aosp/3038274, b/322382422) - Correção de uma mudança não intencional na ordem de como as instâncias
AutoCloseableanexadas a um ViewModel são limpas. A ordem anterior deaddCloseable(String, AutoCloseable),addClosable(AutoCloseable)eonCleared()foi restaurada. (aosp/3041632) - Melhorar o comportamento de criação padrão para
viewModelScopeem ambientes de desktop nativos e JVM. (aosp/3039221)
Contribuição externa
- Agradecemos a Victor Kropp por melhorar a verificação da linha de execução principal no JVM Desktop. (aosp/3037116).
Versão 2.8.0-beta01
17 de abril de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.8.0-beta01. A versão 2.8.0-beta01 contém estes commits.
Novos recursos
- O artefato
lifecycle-runtime-composeagora é compatível com o Kotlin Multiplatform, movendo o código paracommone enviando um artefato Android, correspondendo ao suporte multiplataforma paraandroidx.compose. (If7a71, I4f4a0, b/331769623)
Versão 2.8.0-alpha04
3 de abril de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.8.0-alpha04. A versão 2.8.0-alpha04 contém estes commits.
Novos recursos
- O artefato
lifecycle-viewmodel-composeagora é compatível com o Kotlin Multiplatform, movendo o código paracommone enviando um artefato Android, correspondendo ao suporte multiplataforma doandroidx.compose. Para acomodar essa mudança, o método combinávelviewModelagora aceita umKClassalém de umjava.lang.Class. (b/330323282)
Correções de bugs
- O
NullSafeMutableLiveDatafoi refatorado para evitar muitos falsos positivos. (I2d8c1, Iafb18, I03463, I7ecef).
Atualização de dependências
- O artefato
lifecycle-viewmodel-composeagora depende do Compose 1.6.0. - O ciclo de vida agora depende do Profile Installer 1.3.1.
Versão 2.8.0-alpha03
20 de março de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.8.0-alpha03. A versão 2.8.0-alpha03 contém estes commits.
Novos recursos
ViewModel.viewModelScopeagora é um parâmetro de construtor substituível, permitindo injetar seu próprio dispatcher eSupervisorJob()ou substituir o padrão usando obackgroundScopedisponível emrunTest. (I2817c, b/264598574).class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }
Compatibilidade com Kotlin Multiplatform
O artefato lifecycle-viewmodel e as APIs como ViewModel, ViewModelStore, ViewModelStoreOwner e ViewModelProvider agora são enviados em artefatos compatíveis com o Kotlin Multiplatform. (b/214568825).
Para acomodar essa mudança, métodos como os em ViewModelProvider, que usavam um java.lang.Class<T>, agora têm um método equivalente que usa um kotlin.reflect.KClass<T>.
A compatibilidade binária no Android foi mantida, mas há algumas mudanças importantes ao comparar a superfície da API do Android com a superfície da API comum:
- Agora, a construção de uma instância
ViewModelProvideré feita pelos métodosViewModelProvider.create()em vez de chamar diretamente o construtor. - O
ViewModelProvider.NewInstanceFactorye oViewModelProvider.AndroidViewModelFactoryestão disponíveis apenas no Android.- Recomendamos que as fábricas personalizadas estendam de
ViewModelProvider.Factorye usem o métodocreate, que usa umCreationExtras, ou a DSL do KotlinviewModelFactory.
- Recomendamos que as fábricas personalizadas estendam de
- Usar
ViewModelProvidersem uma fábrica personalizada em plataformas que não são JVM resulta em umUnsupportedOperationException. Em plataformas JVM, a compatibilidade é preservada usando o construtor ViewModel sem argumentos se uma fábrica personalizada não for fornecida. - O
viewModelScopevai voltar para umEmptyCoroutineContextem plataformas onde oDispatchers.Mainnão está disponível (por exemplo, Linux).
Mudanças de comportamento
InitializerViewModelFactory(incluindo a função de builderviewModelFactory) agora vai gerar umIllegalArgumentExceptionse uminitializercom o mesmoclazz: KClass<VM : ViewModel>já tiver sido adicionado. (Ic3a36).
Correções de bugs
- Agora, o
ViewModel.getCloseableprocessa chaves duplicadas: se okeyjá tiver um recursoAutoCloseableassociado a ele, o recurso antigo será substituído e fechado imediatamente. (Ibeb67) - Agora, acessar o
viewModelScopede umViewModelé thread safe. (If4766, b/322407038).
Contribuição externa
LocalLifecycleOwnerfoi movido da interface do Compose para lifecycle-runtime-compose para que as APIs auxiliares baseadas no Compose possam ser usadas fora da interface do Compose. Agradecemos a contribuição de Jake Wharton. (I6c41b, b/328263448)
Versão 2.8.0-alpha02
21 de fevereiro de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.8.0-alpha02. A versão 2.8.0-alpha02 contém estas confirmações.
Novos recursos
- As APIs
dropUnlessResumededropUnlessStartedforam adicionadas para permitir que você descarte cliques ou outros eventos que ocorram mesmo depois que oLifecycleOwnerficar abaixo doLifecycle.Stateespecificado. Por exemplo, isso pode ser usado com o Navigation Compose para evitar o processamento de eventos de clique depois que uma transição para outra tela já começou:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }(Icba83, b/317230685).
Conversões para Kotlin
ViewModelagora é escrito em Kotlin (I16f26, b/214568825).- As extensões
lifecycle-viewmodel-ktxdo Kotlin foram movidas para o módulo de ciclo de vida básico. (Id787b, b/274800183). - As extensões
lifecycle-runtime-ktxdo Kotlin foram movidas para o módulo de ciclo de vida básico. (Ic3686, b/274800183). - As extensões
lifecycle-livedata-core-ktxdo Kotlin foram movidas para o módulo de ciclo de vida básico. (I54a3d, b/274800183).
Compatibilidade com Kotlin Multiplatform
- As APIs principais do ciclo de vida em
Lifecycle,LifecycleOwner,LifecycleObserver,Lifecycle.State,Lifecycle.EventeLifecycleRegistryagora são enviadas em artefatos compatíveis com o Kotlin Multiplatform. (b/317249252).
Mudanças na API
- Chamar
LifecycleStartEffecteLifecycleResumeEffectsem uma chave agora é um erro, seguindo a mesma convenção da APIDisposableEffect, que essas APIs espelham. (Ib0e0c, b/323518079). ViewModelagora usaAutoCloseableem vez deCloseable. Essa é uma mudança compatível com versões anteriores. (I27f8e, b/214568825).- O uso de
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)foi suspenso em favor deLiveData.toPublisher(lifecycleOwner). (Iabe29, b/262623005).
Contribuição externa
- Agradecemos a Ivan Matkov, da Jetbrains, por ajudar a migrar o ciclo de vida para o Kotlin Multiplatform. (aosp/2926690, I0c5ac, If445d).
Versão 2.8.0-alpha01
24 de janeiro de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.8.0-alpha01. A versão 2.8.0-alpha01 contém estas confirmações.
Novos recursos
ViewModelagora permite adicionar objetosCloseablecom umkeyque permite recuperá-los viagetCloseable(). (I3cf63).
Versão 2.7
Versão 2.7.0
10 de janeiro de 2024
Lançamento de androidx.lifecycle:lifecycle-*:2.7.0. A versão 2.7.0 contém estas confirmações.
Mudanças importantes desde a versão 2.6.0
TestLifecycleOwneragora inclui uma função de suspensãosetCurrentState()que garante que a mudança de estado e todos os callbacksLifecycleObserversejam concluídos antes do retorno. Ao contrário da definição direta da propriedadecurrentState, isso não usarunBlocking, o que torna seguro o uso em uma corrotina, como uma fornecida porrunTest.- As extensões
LiveDatademapeswitchMapagora refletem o comportamento dedistinctUntilChanged: se oLiveDatativer umvaluedefinido, a funçãomap/switchMapserá chamada imediatamente para preencher ovaluedoLiveDataretornado. Isso garante que o valor inicial seja definido como parte da primeira composição (quando usado comobserveAsState()), mas não muda o comportamento de observação. Os valores atualizados da origemLiveDataainda serão aplicados apenas quando você começar a observar oLiveData. - Esta versão corrige um problema em que o
SavedStateHandlenão restaurava corretamente as classesParcelablepersonalizadas após a interrupção e recriação do processo. Devido à perda de informações de tipo pelo framework do Android, matrizes de Parcelables personalizados exigem mais trabalho (criar manualmente uma matriz tipada do tipo certo), e a documentação sobreget,getLiveDataegetStateFlowagora menciona especificamente essa limitação. - As regras de manutenção do ProGuard associadas a
LifecycleObserverforam removidas. Isso significa que o código protegido por ProGuard que quiser usar APIs por reflexão (como usar a anotação@OnLifecycleEvent, que já foi descontinuada há muito tempo) precisará fornecer as próprias regras de manutenção para o caso de uso específico.
Observabilidade de eventos do ciclo de vida
- Como alternativa ao uso de um
LifecycleEventObserver, agora é possível observar umFlowdeLifecycle.Eventusando o método de extensãoLifecycle.asFlow(). - Os usuários do Jetpack Compose agora podem usar
LifecycleEventEffectpara executar efeitos colaterais do Compose com base emLifecycle.Event.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
viewModel.refreshData()
}
// …
}
- Os usuários do Jetpack Compose podem usar
LifecycleStartEffecteLifecycleResumeEffectpara processar pares de eventos: iniciado para parado e retomado para pausado, respectivamente. Essa API espelha a encontrada emDisposableEffecte é adequada para casos em que a mudança feita quando o estado está aumentando precisa ser revertida quando ele está diminuindo.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleStartEffect(viewModel) {
val timeTracking = viewModel.startTrackingTimeOnScreen()
onStopOrDispose {
timeTracking.stopTrackingTimeOnScreen()
}
}
// …
}
Consulte Executar código em eventos de ciclo de vida para mais informações.
Observabilidade do estado do ciclo de vida
- O
Lifecycle.Stateatual pode ser observado pela propriedadeLifecycle.currentStateFlow, que retorna umStateFlowem que ovalueé oLifecycle.Stateatual. - Os usuários do Jetpack Compose podem usar a extensão
Lifecycle.currentStateAsState()para expor diretamenteLifecycle.StatecomoStatedo Compose. Isso é equivalente (e uma alternativa mais curta) alifecycle.currentStateFlow.collectAsState().
Consulte Coletar o estado do ciclo de vida com fluxos para mais informações.
Versão 2.7.0-rc02
13 de dezembro de 2023
Lançamento de androidx.lifecycle:lifecycle-*:2.7.0-rc02. A versão 2.7.0-rc02 contém estas confirmações.
Correções de bugs
- Correção de um problema em que o
SavedStateHandlenão restaurava corretamente as classesParcelablepersonalizadas após a interrupção e recriação do processo. Devido à perda de informações de tipo pelo framework do Android, matrizes de Parcelables personalizados exigem mais trabalho (criar manualmente uma matriz tipada do tipo certo), e a documentação sobreget,getLiveDataegetStateFlowagora menciona especificamente essa limitação. (I0b55a).
Versão 2.7.0-rc01
15 de novembro de 2023
Lançamento de androidx.lifecycle:lifecycle-*:2.7.0-rc01. A versão 2.7.0-rc01 contém estas confirmações.
Correções de bugs
- Agora,
LifecycleStartEffecteLifecycleResumeEffectdescartam e recriam corretamente o bloco de efeito se oLifecycleOwnerfor alterado. (Ia25c6).
Versão 2.7.0-beta01
1º de novembro de 2023
Lançamento de androidx.lifecycle:lifecycle-*:2.7.0-beta01 sem mudanças. A versão 2.7.0-beta01 contém estas confirmações.
- Um aumento na versão Beta, sem grandes mudanças na versão de lançamento.
Versão 2.7.0-alpha03
18 de outubro de 2023
Lançamento de androidx.lifecycle:lifecycle-*:2.7.0-alpha03. A versão 2.7.0-alpha03 contém essas confirmações.
Novos recursos
lifecycle-runtime-testingagora contém uma nova verificação de lint para evitar a definição doLifecycle.StatedoTestLifecycleOwnerusando o campocurrentStateem uma corrotina. A verificação do Lint agora sugere a suspensão desetCurrentState, que permite definir oLifecycle.Statesem bloqueio. (Icf728, b/297880630)
Correções de bugs
- Foi corrigido um problema com
LiveData.switchMapem que retornar a mesma instânciaLiveDatana chamada inicial e em uma chamada subsequente impedia que a instânciaLiveDatafosse adicionada como uma origem. (Ibedcba7)
Versão 2.7.0-alpha02
6 de setembro de 2023
Lançamento de androidx.lifecycle:lifecycle-*:2.7.0-alpha02. A versão 2.7.0-alpha02 contém estas confirmações.
Novos recursos
- O
TestLifecycleOwneragora inclui a função de suspensãosetCurrentState()para dar aos usuários a opção de usar oTestLifecycleOwnerem uma corrotina, como uma fornecida pelorunTest. (I329de, b/259344129)
Mudanças na API
- Todos os arquivos dos módulos
lifecycle-livedata-ktxforam movidos para o módulo principallifecycle-livedata. (I10c6f, b/274800183)
Mudanças de comportamento
- As extensões
LiveData.map()eLiveData.switchMap()agora definem ovaluedoLiveDataretornado quando oLiveDataanterior tem um valor definido, garantindo que o uso do LiveData resultante no Jetpack Compose tenha o estado certo na composição inicial. (I91d2b, b/269479952). - O
addCloseable()deViewModelagora fecha imediatamente oCloseablese oViewModeljá tiver recebido uma chamada paraonCleared(). (I4712e, b/280294730).
Correções de bugs
- Do Lifecycle
2.6.2: correção de um problema em queSavedStateHandlenão era restaurado corretamente após a interrupção do processo se o estado fosse restaurado,save()fosse chamado sem salvar o estado noSavedStateRegistryprincipal e, em seguida, o estado fosse restaurado novamente. Isso corrige a interação entrerememberSaveableeNavHostdo Navigation Compose. (aosp/2729289)
Versão 2.7.0-alpha01
26 de julho de 2023
Lançamento de androidx.lifecycle:lifecycle-*:2.7.0-alpha01. A versão 2.7.0-alpha01 contém estas confirmações
Mudanças na API
Lifecycle.Stateagora pode ser observado pelo Compose viaLifecycle.currentStateFlow, que retorna umStateFlowem que ovalueé oLifecycle.Stateatual. (Ib212d, b/209684871).- Os
Lifecycle.Events agora podem ser observados como umFlowcomLifecycle.asFlow().(If2c0f, b/176311030). - A API
LifecycleResumeEffectfoi adicionada para executarSideEffects do Compose com base em callbacks de eventosLifecycle.Event.ON_RESUMEeLifecycle.Event.ON_PAUSE. (I60386, b/235529345). - A API
LifecycleStartEffectfoi adicionada para executarSideEffects do Compose com base em callbacks de eventosLifecycle.Event.ON_STARTeLifecycle.Event.ON_STOP. (I5a8d1, b/235529345). - A API
LifecycleEventEffectfoi adicionada para executarSideEffects do Compose com base emLifecycle.Event. (Ic9794, b/235529345). - A extensão
Lifecycle.collectAsState()foi adicionada para expor diretamenteLifecycle.StatecomoStatedo Compose. Isso é equivalente (e uma alternativa mais curta) alifecycle.currentStateFlow.collectAsState(). (I11015, b/235529345).
Correções de bugs
- Agora, a extensão
LiveData.distinctUntilChanged()define ovaluedoLiveDataretornado quando oLiveDataanterior tem um valor definido. Isso não muda o comportamento de observação. Os valores atualizados doLiveDatade origem ainda serão aplicados apenas quando você começar a observar oLiveDataretornado dedistinctUntilChanged()(Ib482f). - As regras de manutenção do ProGuard associadas a
LifecycleObserverforam removidas. Isso significa que o código protegido com ProGuard que quiser usar APIs por reflexão precisará fornecer as próprias regras de manutenção para o caso de uso específico. (Ia12fd)
Versão 2.6
Versão 2.6.2
6 de setembro de 2023
Lançamento de androidx.lifecycle:lifecycle-*:2.6.2. A versão 2.6.2 contém estas confirmações.
Correções de bugs
- Foi corrigido um problema em que o
SavedStateHandlenão era restaurado corretamente após a interrupção do processo se o estado fosse restaurado, osave()fosse chamado sem salvar o estado noSavedStateRegistryprincipal e o estado fosse restaurado novamente. Isso corrige a interação entrerememberSaveableeNavHostdo Navigation Compose. (aosp/2729289)
Versão 2.6.1
22 de março de 2023
Lançamento de androidx.lifecycle:lifecycle-*:2.6.1. A versão 2.6.1 contém estas confirmações.
Atualizações de dependência
- O
lifecycle-viewmodel-savedstateagora depende do SavedState1.2.1. (cd7251) - O ciclo de vida agora depende do ProfileInstaller
1.3.0. (f9d30b)
Versão 2.6.0
8 de março de 2023
Lançamento de androidx.lifecycle:lifecycle-*:2.6.0. A versão 2.6.0 contém estas confirmações.
Mudanças importantes desde a versão 2.5.0
LiveDataagora inclui uma nova propriedadeisInitializedque indica se um valor explícito já foi definido noLiveData. Isso permite distinguir entreliveData.valueque retornanullporque nenhum valor foi definido ou um valornullexplícitoMediatorLiveDataagora inclui um construtor para definir um valor inicial- Adicionada uma nova extensão no
StateFloweFlowdecollectAsStateWithLifecycle(), que realiza as coletas dos fluxos e representa o valor mais recente dele como estado do Compose, considerando o ciclo de vida. - Os métodos
Lifecycle.launchWhenXeLifecycle.whenXforam descontinuados, já que o uso de um agente de pausa pode gerar recursos desnecessários. É recomendável usarLifecycle.repeatOnLifecyclePara mais informações sobre a suspensão única do trabalho, consulte esta explicação sobre por que isso é inerentemente inseguro. - Conversão para Kotlin: um grande número de classes do ciclo de vida foi convertido para Kotlin. Todas as classes convertidas ainda mantêm a compatibilidade binária com versões anteriores. As seguintes classes têm mudanças incompatíveis com a origem para classes escritas em Kotlin:
ViewTreeLifecycleOwner,LiveDataReactiveStreams,HasDefaultViewModelProviderFactory,ViewTreeViewModelStoreOwner,Transformations,ViewModelStoreOwner,LifecycleOwner
A tabela abaixo mostra as conversões de origem para a nova versão do ciclo de vida.
| Lifecycle 2.5 | Lifecycle 2.5 (KTX) | Lifecycle 2.6 |
|---|---|---|
Transformations.switchMap(liveData) {...} |
liveData.switchMap {...} |
liveData.switchMap {...} |
Transformations.map(liveData) {...} |
liveData.map {...} |
liveData.map {...} |
Transformations.distinctUntilChanged(liveData) {...} |
liveData.distinctUntilChanged{...} |
liveData.distinctUntilChanged{...} |
LiveDataReactiveStreams.fromPublisher(publisher) |
publisher.toLiveData() |
publisher.toLiveData() |
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) |
liveData.toPublisher(lifecycleOwner) |
liveData.toPublisher(lifecycleOwner) |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override val defaultViewModelProviderFactory = factory |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override val defaultViewModelProviderCreationExtras = extras |
ViewTreeLifecycleOwner.set(view, owner) |
ViewTreeLifecycleOwner.set(view, owner) |
view.setViewTreeLifecycleOwner(owner) |
ViewTreeLifecycleOwner.get(view) |
view.findViewTreeLifecycleOwner() |
view.findViewTreeLifecycleOwner() |
override fun getViewModelStore(): ViewModelStore = store |
override fun getViewModelStore(): ViewModelStore = store |
override val viewModelStore: ViewModelStore = store |
override fun getLifecycle(): Lifecycle = registry |
override fun getLifecycle(): Lifecycle = registry |
override val lifecycle: Lifecycle get() = registry |
- A nulidade do método
onChangedde umObservercriado em Kotlin agora corresponde à nulidade do tipo genérico. Se você quiser queObserver.onChanged()aceite um tipo anulável, instancieObservercom um tipo anulável. - Essas classes também foram convertidas para Kotlin, mas permanecem compatíveis com a origem:
DefaultLifecycleObserver,LifecycleEventObserver,Lifecycle,LifecycleRegistry,LifecycleObserver,ViewModelStore,AndroidViewModel,AbstractSavedStateViewModelFactory,LifecycleService,ServiceLifecycleDispatchereProcessLifecycleOwner.
Versão 2.6.0-rc01
22 de fevereiro de 2023
Lançamento de androidx.lifecycle:lifecycle-*:2.6.0-rc01. A versão 2.6.0-rc01 contém estas confirmações.
Correções de bugs
- Agora, a extensão
LiveData.distinctUntilChanged()define ovaluedoLiveDataretornado quando oLiveDataanterior tem um valor definido. Isso não muda o comportamento de observação. Os valores atualizados doLiveDatade origem ainda serão aplicados apenas quando você começar a observar oLiveDataretornado dedistinctUntilChanged()(Ib482f).
Versão 2.6.0-beta01
8 de fevereiro de 2023
Lançamento de androidx.lifecycle:lifecycle-*:2.6.0-beta01. A versão 2.6.0-beta01 contém estas confirmações.
Conversões para Kotlin
- Agora, o
LifecycleOwneré escrito em Kotlin. Essa é uma mudança incompatível com a fonte das classes escritas em Kotlin. Elas precisam substituir a propriedadelifecycleem vez de implementar a funçãogetLifecycle()anterior (I75b4b, b/240298691). - Agora, o
ViewModelStoreOwneré escrito em Kotlin. Essa é uma mudança incompatível com a fonte das classes escritas em Kotlin. Elas precisam substituir a propriedadeviewModelStoreem vez de implementar a funçãogetViewModelStore()anterior (I86409, b/240298691). - A extensão Kotlin em
LifecycleOwnerque fornece o campolifecycleScopefoi movida para o artefatolifecycle-commondelifecycle-runtime-ktx(I41d78, b/240298691). - A extensão Kotlin em
Lifecycleque fornece o campocoroutineScopefoi movida para o artefatolifecycle-commondelifecycle-runtime-ktx(Iabb91, b/240298691).
Versão 2.6.0-alpha05
25 de janeiro de 2023
Lançamento de androidx.lifecycle:lifecycle-*:2.6.0-alpha05. A versão 2.6.0-alpha05 contém estas confirmações.
Conversões para Kotlin
- Agora, as
Transformationssão escritas em Kotlin. Essa é uma mudança incompatível com a origem das classes escritas em Kotlin que usavam sintaxe direta, comoTransformations.map. O código Kotlin precisa usar a sintaxe do método de extensão Kotlin, que antes estava disponível apenas ao usar olifecycle-livedata-ktx. Ao usar a linguagem de programação Java, as versões desses métodos que usam umandroidx.arch.core.util.Functionsão descontinuadas e substituídas pelas versões que usam umaFunction1do Kotlin. Essa mudança mantém a compatibilidade com binários (I8e14f). - Agora, o
ViewTreeViewModelStoreOwneré escrito em Kotlin. Essa é uma mudança incompatível com a origem das classes escritas em Kotlin. É necessário importar e usar diretamente os métodos de extensão Kotlin naViewdeandroidx.lifecycle.setViewTreeViewModelStoreOwnereandroidx.lifecycle.findViewTreeViewModelStoreOwnerpara definir e encontrar um proprietário configurado anteriormente. Ela é compatível com binários e mantém a compatibilidade com origens das implementações escritas na linguagem de programação Java (Ia06d8, Ib22d8, b/240298691). - Agora, a interface
HasDefaultViewModelProviderFactoryé escrita em Kotlin. Essa é uma mudança incompatível com a origem de classes escritas em Kotlin. Elas precisam substituir as propriedadesdefaultViewModelProviderFactoryedefaultViewModelCreationExtras, em vez de implementar as funções correspondentes anteriores (Iaed9c, b/240298691). - Agora, o
Observeré escrito em Kotlin. O métodoonChanged()usa ovaluede nome como parâmetro (Iffef2, I4995e, b/240298691). AndroidViewModel,AbstractSavedStateViewModelFactory,LifecycleService,ServiceLifecycleDispatchereProcessLifecycleOwneragora são escritos em Kotlin (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691).
Versão 2.6.0-alpha04
11 de janeiro de 2023
Lançamento de androidx.lifecycle:lifecycle-*:2.6.0-alpha04. A versão 2.6.0-alpha04 contém estas confirmações.
Novos recursos
LiveDataagora inclui uma nova propriedadeisInitializedque indica se um valor explícito já foi definido noLiveData. Isso permite distinguir entreliveData.valueque retornanullporque nenhum valor foi definido ou um valornullexplícito (Ibd018).
Mudanças na API
- As APIs
collectAsStateWithLifecycle()delifecycle-runtime-composenão estão mais no status experimental (I09d42, b/258835424). - Os métodos
Lifecycle.launchWhenXeLifecycle.whenXforam descontinuados, já que o uso de um agente de pausa pode gerar recursos desnecessários. É recomendável usarLifecycle.repeatOnLifecycle(Iafc54, b/248302832).
Conversões para Kotlin
- Agora,
ViewTreeLifecycleOwneré escrito em Kotlin. Essa é uma mudança incompatível com a origem das classes escritas em Kotlin. É necessário importar e usar diretamente os métodos de extensão Kotlin naViewdeandroidx.lifecycle.setViewTreeLifecycleOwnereandroidx.lifecycle.findViewTreeLifecycleOwnerpara definir e encontrar um proprietário configurado anteriormente. Isso substitui a extensão Kotlin anterior emlifecycle-runtime-ktx. Ela é compatível com binários e mantém a compatibilidade com origens das implementações escritas na linguagem de programação Java (I8a77a, I5234e, b/240298691). - Agora,
LiveDataReactiveStreamsé escrito em Kotlin. As extensões Kotlin que ficavam anteriormente emlifecycle-reactivestreams-ktxforam movidas para o módulolifecycle-reactivestreamse se tornaram a superfície principal para o código escrito em Kotlin. Essa é uma mudança incompatível com a origem do código escrito em Kotlin se você ainda não estivesse usando as APIs do método de extensão Kotlin (I2b1b9, I95d22, b/240298691). - Agora,
DefaultLifecycleObserver,LifecycleEventObserver,Lifecycle,LifecycleRegistry,LifecycleObservereViewModelStoreestão escritos em Kotlin (Iadffd, I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691).
Correções de bugs
SavedStateHandlenão falha mais com umClassCastExceptionao chamarget()com o tipo de classe incorreto (I6ae7c).
Versão 2.6.0-alpha03
24 de outubro de 2022
Lançamento de androidx.lifecycle:lifecycle-*:2.6.0-alpha03. A versão 2.6.0-alpha03 contém estas confirmações.
Correções de bugs
- Corrigido um problema com restrições entre diferentes módulos do Lifecycle que não funcionavam conforme o esperado (I18d0d, b/249686765).
- Os erros gerados por
LifecycleRegistry.moveToState()agora incluem uma mensagem de erro mais útil que informa aos desenvolvedores o componente que causa o erro (Idf4b2, b/244910446).
Versão 2.6.0-alpha02
7 de setembro de 2022
Lançamento de androidx.lifecycle:lifecycle-*:2.6.0-alpha02. A versão 2.6.0-alpha02 contém estas confirmações.
Mudanças na API
MediatorLiveDataagora inclui um construtor para definir um valor inicial (Ib6cc5, b/151244085).
Correções de bugs
- Os artefatos
Lifecycleagora incluem restrições (link em inglês) que garantem que todos os artefatos do ciclo de vida que são interdependentes usem a mesma versão, fazendo upgrade automático de outras dependências quando um for atualizado b/242871265. FlowLiveData.asFlow()agora cria umcallbackFlowem vez de usar a própria implementação doChannelpara garantir a segurança de linhas de execução e a preservação de contexto (I4a8b2, b/200596935).- A função
asLiveDatadoFlowLiveDataagora preserva o valor inicial de umStateFlowao criar o novo objetoLiveData(I3f530, b/157380488). - Do Lifecycle
2.5.1: as implementações personalizadas deAndroidViewModelFactoryagora chamam corretamente a funçãocreate(modelClass)ao usar o construtor com estado com oLifecycle2.4 ou versões mais recentes (I5b315, b/238011621).
Versão 2.6.0-alpha01
29 de junho de 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha01 é lançado. A versão 2.6.0-alpha01 contém estas confirmações.
Novos recursos
- Adicionada uma nova extensão no
StateFloweFlowdecollectAsStateWithLifecycle, que realiza as coletas dos fluxos e representa o valor mais recente dele como estado do Compose, considerando o ciclo de vida. O fluxo é coletado, e a nova emissão é definida como o valor do estado quando o ciclo de vida está pelo menos em um determinadoLifecycle.State. Quando o ciclo de vida fica abaixo desseLifecycle.State, a coleta do fluxo é interrompida, e o valor do estado não é atualizado (I1856e, b/230557927).
Versão 2.5
Versão 2.5.1
27 de julho de 2022
Lançamento de androidx.lifecycle:lifecycle-*:2.5.1. A versão 2.5.1 contém estas confirmações.
Correções de bugs
- As implementações personalizadas de
AndroidViewModelFactoryagora chamam corretamente a funçãocreate(modelClass)ao usar o construtorAndroidViewModelFactorycom estado com oLifecycle2.4 ou mais recente (I5b315, b/238011621).
Versão 2.5.0
29 de junho de 2022
Lançamento de androidx.lifecycle:lifecycle-*:2.5.0. A versão 2.5.0 contém estas confirmações.
Mudanças importantes desde a versão 2.4.0
O parâmetro
SavedStateHandleagora oferece uma APIgetStateFlow()que retorna umStateFlowdo Kotlin para monitorar mudanças de valor como umaalternativa ao uso deLiveData.ViewModel CreationExtras: ao gravar um
ViewModelProvider.Factorypersonalizado, não é mais necessário estenderAndroidViewModelFactoryouAbstractSavedStateViewModelFactorypara ter acesso a umApplicationouSavedStateHandle, respectivamente. Em vez disso, esses campos são fornecidos a todas as subclassesViewModelProvider.FactorycomoCreationExtrascom a nova sobrecarga decreate:create(Class<T>, CreationExtras). Esses extras são fornecidos automaticamente pela atividade ou pelo fragmento ao usar a Activity1.5.0e o Fragment1.5.0, respectivamente.class CustomFactory : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T { return when (modelClass) { HomeViewModel::class -> { // Get the Application object from extras val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY]) // Pass it directly to HomeViewModel HomeViewModel(application) } DetailViewModel::class -> { // Create a SavedStateHandle for this ViewModel from extras val savedStateHandle = extras.createSavedStateHandle() DetailViewModel(savedStateHandle) } else -> throw IllegalArgumentException("Unknown class $modelClass") } as T } }O
lifecycle-viewmodelagora fornece uma DSLviewModelFactorydo Kotlin que permite definir seuViewModelProvider.Factoryem termos de um ou mais inicializadores de lambda, um para cada classeViewModelcom suporte para a fábrica personalizada, usandoCreationExtrascomo a fonte de dados principal.val customFactory = viewModelFactory { // The return type of the lambda automatically sets what class this lambda handles initializer { // Get the Application object from extras provided to the lambda val application = checkNotNull(get(ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY)) HomeViewModel(application) } initializer { val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) } }O
lifecycle-viewmodel-composeagora oferece uma APIviewModel()que usa uma fábrica de lambdas para criar uma instância doViewModelsem exigir a criação de umaViewModelProvider.Factorypersonalizada.// Within a @Composable, you can now skip writing a custom Factory // and instead write a lambda to do the initialization of your ViewModel val detailViewModel = viewModel { // This lambda is only called the first time the ViewModel is created // and all CreationExtras are available inside the lambda val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) }Integração do SavedStateHandle para economia no Compose: o artefato
lifecycle-viewmodel-composeagora contém novas APIs experimentais emSavedStateHandle.saveableque permitem um comportamento similar aorememberSaveableapoiado peloSavedStateHandlede um ViewModel.class ListScreenViewModel(handle: SavedStateHandle): ViewModel() { // This value survives both configuration changes and process death and recreation val editMode by handle.saveable { mutableStateOf(false) } }Adicionamos uma API
addCloseable()e uma nova sobrecarga de construtor que permite adicionar um ou mais objetosCloseableaoViewModelque são fechados quando oViewModelé apagado sem exigir trabalhos manuais emonCleared().Por exemplo, para criar um escopo de corrotina que possa ser injetado em um ViewModel e controlado por testes, você pode criar um
CoroutineScopeque implementeCloseable:class CloseableCoroutineScope( context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate ) : Closeable, CoroutineScope { override val coroutineContext: CoroutineContext = context override fun close() { coroutineContext.cancel() } }Ele pode ser usado no construtor
ViewModele manter o mesmo ciclo de vida doviewModelScope:class TestScopeViewModel( val customScope: CloseableCoroutineScope = CloseableCoroutineScope() ) : ViewModel(customScope) { // You can now use customScope in the same way as viewModelScope }
Mudanças de comportamento
- A tentativa de mover o
Lifecycle.StatedeINITIALIZEDparaDESTROYEDagora sempre vai gerar umaIllegalStateException, independentemente doLifecycleter um observador anexado. - O
LifecycleRegistryagora vai limpar os observadores quando alcançarem o estadoDESTROYED.
Versão 2.5.0-rc02
15 de junho de 2022
Lançamento de androidx.lifecycle:lifecycle-*:2.5.0-rc02. A versão 2.5.0-rc02 contém estas confirmações.
Correções de bugs
- A classe
ViewModelProvidernão vai mais falhar ao combinar versões anteriores de dependências compileOnly Lifecycle com a versão 2.5 ou mais recentes (I81a66, b/230454566).
Versão 2.5.0-rc01
11 de maio de 2022
Lançamento de androidx.lifecycle:lifecycle-*:2.5.0-rc01. A versão 2.5.0-rc01 contém estas confirmações.
Correções de bugs
MediatorLiveData.addSource()agora gera umaNullPointerExceptionquando recebe uma origemnullem vez de propagar essa origemnullpara os observadores (Ibd0fb, b/123085232).
Versão 2.5.0-beta01
20 de abril de 2022
Lançamento de androidx.lifecycle:lifecycle-*:2.5.0-beta01. A versão 2.5.0-beta01 contém estas confirmações.
Mudanças na API
- Adicionados delegados de propriedade
SavedStateHandle.saveablepara usar nomes de propriedades como chaves a fim de manter o estado noSavedStateHandle(I8bb86, b/225014345).
Correções de bugs
- Foi corrigido um problema em que aninhar um
NavHostem outroNavHostem uma guia de navegação inferior não principal causava umaIllegalStateExceptionao usar várias backstacks (I11bd5, b/228865698).
Versão 2.5.0-alpha06
6 de abril de 2022
Lançamento de androidx.lifecycle:lifecycle-*:2.5.0-alpha06. A versão 2.5.0-alpha06 contém estas confirmações.
Novos recursos
- A sobrecarga experimental
MutableStatefoi adicionada aoSavedStateHandle.saveablepara paridade comrememberSaveable(I38cfe, b/224565154).
Mudanças na API
CreationExtrasagora é abstrato em vez de selado (Ib8a7a).
Correções de bugs
- Um erro
IllegalStateException: Already attached to lifecycleOwnercausado porSavedStateHandleControllerfoi corrigido (I7ea47, b/215406268).
Versão 2.5.0-alpha05
23 de março de 2022
Lançamento de androidx.lifecycle:lifecycle-*:2.5.0-alpha05. A versão 2.5.0-alpha05 contém estas confirmações.
Novos recursos
- O módulo
lifecycle-viewmodel-composeagora fornece aSavedStateHandleSaver, uma API experimental que garante que os valores em umSavedStateHandlesejam integrados corretamente com o mesmo estado de instância salvo que orememberSaveableusa (Ia88b7, b/195689777).
Mudanças na API
- Correção de um problema de compatibilidade com o Lifecycle 2.3 e versões mais recentes em Java (I52c8a, b/219545060).
Correções de bugs
- A
SavedStateViewFactoryagora oferece suporte ao uso deCreationExtrasmesmo quando inicializada com umSavedStateRegistryOwner. Se extras forem fornecidos, os argumentos inicializados serão ignorados (I6c43b, b/224844583).
Versão 2.5.0-alpha04
9 de março de 2022
Lançamento de androidx.lifecycle:lifecycle-*:2.5.0-alpha04. A versão 2.5.0-alpha04 contém estas confirmações.
Mudanças na API
- O parâmetro
SavedStateHandleagora oferece uma APIgetStateFlow()que retorna umStateFlowde Kotlin para monitorar mudanças de valor como uma alternativa ao uso deLiveData(Iad3ab, b/178037961).
Versão 2.5.0-alpha03
23 de fevereiro de 2022
Lançamento de androidx.lifecycle:lifecycle-*:2.5.0-alpha03. A versão 2.5.0-alpha03 contém estas confirmações.
Novos recursos
- Adicionadas uma API
addCloseable()e uma nova sobrecarga de construtor que permite adicionar um ou mais objetosCloseableaoViewModelque são fechados quando oViewModelé apagado, sem exigir trabalhos manuais emonCleared()(I55ea0). lifecycle-viewmodelagora fornece umaInitializerViewModelFactoryque permite adicionar a lambda para processar classesViewModelparticulares, usandoCreationExtrascomo a fonte de dados principal (If58fc, b/216687549).lifecycle-viewmodel-composeagora oferece uma APIviewModel()que usa uma fábrica de lambdas para criar uma instância doViewModelsem exigir a criação de umaViewModelProvider.Factorypersonalizada (I97fbb, b/216688927).
Mudanças na API
- Agora você pode criar um
ViewModelcomCreationExtrasusandolifecycle-viewmodel-compose(I08887, b/216688927).
Mudanças de comportamento
- A tentativa de mover o
Lifecycle.StatedoINITIALIZEDpara oDESTROYEDagora sempre gerará umaIllegalStateException, independentemente deLifecycleter um observador anexado (I7c390, b/177924329) LifecycleRegistryagora vai limpar os observadores quando alcançarem o estadoDESTROYED(I4f8dd, b/142925860).
Versão 2.5.0-alpha02
9 de fevereiro de 2022
Lançamento de androidx.lifecycle:lifecycle-*:2.5.0-alpha02. A versão 2.5.0-alpha02 contém estas confirmações.
Mudanças na API
- As classes
SavedStateHandleeSavedStateViewModelFactoryforam convertidas para Kotlin. Isso melhorou a nulidade do genérico nas duas (Ib6ce2, b/216168263, I9647a, b/177667711). - O parâmetro
switchMapda funçãoLiveDataagora pode ter uma saída anulável (I40396, b/132923666). - As extensões
LiveData-ktx agora são anotadas com@CheckResultpara garantir que o resultado seja usado ao chamar essas funções (Ia0f05, b/207325134).
Mudanças de comportamento
- A
SavedStateHandleagora armazena corretamente o defaultValue quando não há valor para a chave especificada (I1c6ce, b/178510877).
Correções de bugs
- No Lifecycle
2.4.1: atualização delifecycle-processpara depender de Startup 1.1.1, garantindo que as correções que impedem a classeProcessLifecycleInitializerde gerar umaStartupExceptionfiquem disponíveis por padrão (Ib01df, b/216490724). - Agora, há uma mensagem de erro aprimorada quando as classes
AndroidViewModelpersonalizadas têm parâmetros na ordem incorreta e tentam criar umViewModel(I340f7, b/177667711). - Agora, você pode criar um modelo de visualização com
CreationExtrasusando oAndroidViewModelFactorysem definir um aplicativo (I6ebef, b/217271656).
Versão 2.5.0-alpha01
26 de janeiro de 2022
Lançamento de androidx.lifecycle:lifecycle-*:2.5.0-alpha01. A versão 2.5.0-alpha01 contém estas confirmações.
ViewModel CreationExtras
Com esta versão, estamos estabelecendo as bases para reestruturar a forma como um ViewModel é construído. Em vez de um conjunto rígido de subclasses de ViewModelProvider.Factory que adicionam outras funcionalidades (permitindo um parâmetro de construtor Application via AndroidViewModelFactory e um parâmetro de construtor SavedStateHandle via SavedStateViewModelFactory e AbstractSavedStateViewModelFactory etc.), estamos migrando para um modelo de fábricas sem estado que dependem de um novo conceito, CreationExtras (Ia7343, b/188691010, b/188541057).
Com essa mudança, ViewModelProvider não faz mais chamadas diretas ao método create(Class<T>) anterior da ViewModelProvider.Factory. Em vez disso, ele chama uma nova sobrecarga de create: create(Class<T>, CreationExtras). Isso significa que todas as implementações diretas da instância ViewModelProvider.Factory agora têm acesso a cada um dos novos CreationExtras:
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY: estaStringfornece acesso à chave personalizada que você transmitiu paraViewModelProvider.get().ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEYfornece acesso à classeApplication.SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEYfornece acesso aoSavedStateRegistryOwnerusado para construir esse ViewModel.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEYfornece acesso aoViewModelStoreOwnerusado para construir esse ViewModel.SavedStateHandleSupport.DEFAULT_ARGS_KEYfornece acesso aoBundlede argumentos que precisam ser usados para construir umSavedStateHandle.
Esses extras são fornecidos por padrão ao usar a Activity 1.5.0-alpha01, o Fragment 1.5.0-alpha01 e a Navigation 2.5.0-alpha01. Se você usar uma versão anterior dessas bibliotecas, a classe CreationExtras fica vazia. Todas as subclasses já existentes de ViewModelProvider.Factory foram reescritas para oferecer suporte ao caminho de criação legado usado pelas versões anteriores dessas bibliotecas e pela CreationExtras, que vai ser usada no futuro.
A classe CreationExtras permite que você construa uma ViewModelProvider.Factory que transmite apenas as informações necessárias a cada ViewModel sem depender de uma hierarquia restrita de subclasses de fábrica:
class CustomFactory : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
return when (modelClass) {
HomeViewModel::class -> {
// Get the Application object from extras
val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY])
// Pass it directly to HomeViewModel
HomeViewModel(application)
}
DetailViewModel::class -> {
// Create a SavedStateHandle for this ViewModel from extras
val savedStateHandle = extras.createSavedStateHandle()
DetailViewModel(savedStateHandle)
}
else -> throw IllegalArgumentException("Unknown class $modelClass")
} as T
}
}
Usamos a função de extensão createSavedStateHandle() do Kotlin em CreationExtras de SavedStateHandleSupport para criar um SavedStateHandle somente para o ViewModel que precisa dele (Ia6654, b/188541057).
A classe CreationExtras personalizada pode ser fornecida substituindo o getDefaultViewModelCreationExtras() na sua ComponentActivity ou Fragment, tornando-as disponíveis para o ViewModelProvider.Factory personalizado como uma forma integrada de injeção. Esses extras são disponibilizados automaticamente para sua fábrica quando usados diretamente com ViewModelProvider ou ao usar as extensões de propriedade Kotlin by viewModels() e by activityViewModels() (I79f2b, b/207012584, b/207012585, b/207012490).
Correções de bugs
- Corrigido um problema em que o valor padrão fornecido
para um
SavedStateHandlereaparecia após a interrupção e a recriação do processo, mesmo que fosse especificamente removido doSavedStateHandle. Como consequência,SavedStateHandlenão mescla mais os valores padrão e restaurados, usando apenas os valores restaurados como a fonte da verdade (I53a4b).
Versão 2.4
Versão 2.4.1
9 de fevereiro de 2022
Lançamento de androidx.lifecycle:lifecycle-*:2.4.1. A versão 2.4.1 contém estas confirmações.
Correções de bugs
- Backport do Lifecycle
2.5.0-alpha01: correção de um problema em que o valor padrão fornecido a umaSavedStateHandlereaparecia após a interrupção e recriação do processo, mesmo que especificamente removido daSavedStateHandle. Como consequência,SavedStateHandlenão mescla mais os valores padrão e restaurados, usando apenas os valores restaurados como a fonte da verdade (I53a4b). lifecycle-processagora depende do Androidx Startup 1.1.1, que corrigiu a regressão quando o uso da classeProcessLifecycleInitializercausava umaStartupException(b/216490724).
Versão 2.4.0
27 de outubro de 2021
Lançamento de androidx.lifecycle:lifecycle-*:2.4.0. A versão 2.4.0 contém estas confirmações.
Mudanças importantes desde a versão 2.3.0
- O uso de
@OnLifecycleEventfoi descontinuado. Use oLifecycleEventObserverou oDefaultLifecycleObserver - A biblioteca
androidx.lifecycle:lifecycle-viewmodel-composefoi adicionada. Ela fornece oviewModel()que pode ser composto e oLocalViewModelStoreOwner.- Alteração interruptiva de origem: o
ViewModelProviderfoi reescrito em Kotlin. O métodoViewModelProvider.Factory.createnão permite mais o uso de genéricos anuláveis.
- Alteração interruptiva de origem: o
- Uma nova API de corrotinas foi adicionada a
androidx.lifecycle:lifecycle-runtime-ktx: Lifecycle.repeatOnLifecycle, API que executa um bloco de código em uma corrotina quando o ciclo de vida fica em pelo menos um determinado estado. O bloco será cancelado e reiniciado à medida que o ciclo de vida entrar e sair do estado de destino.Flow.flowWithLifecycle, API que emite valores do fluxo upstream quando o ciclo de vida está pelo menos em um determinado estado.- O
DefaultLifecycleObserverfoi movido delifecycle.lifecycle-common-java8paralifecycle.lifecycle-common. Olifecycle.lifecycle-common-java8não oferece mais nenhuma funcionalidade extra em relação alifecycle.lifecycle-common. Portanto, a dependência dele pode ser substituída porlifecycle.lifecycle-common - A API que não é de corrotinas do
lifecycle-viewmodel-ktxfoi movida para o módulolifecycle-viewmodel. O
lifecycle-processagora usaandroidx.startuppara inicializar oProcessLifecycleOwner.Anteriormente, isso era feito pelo
androidx.lifecycle.ProcessLifecycleOwnerInitializer.Se você usava
tools:node="remove", a classeContentProviderque era usada para inicializar o ciclo de vida do processo, será necessário fazer o seguinte:<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>(ou)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Versão 2.4.0-rc01
29 de setembro de 2021
Lançamento de androidx.lifecycle:lifecycle-*:2.4.0-rc01 sem alterações do Lifecycle 2.4.0-beta01. A versão 2.4.0-rc01 contém estas confirmações.
Versão 2.4.0-beta01
15 de setembro de 2021
Lançamento de androidx.lifecycle:lifecycle-*:2.4.0-beta01. A versão 2.4.0-beta01 contém estas confirmações.
Mudanças na API
- O uso de
@OnLifecycleEventfoi descontinuado. Use a interfaceLifecycleEventObserverou aDefaultLifecycleObserver(I5a8fa). - O DefaultLifecycleObserver foi movido de
androidx.lifecycle.lifecycle-common-java8paraandroidx.lifecycle.lifecycle-common. Oandroidx.lifecycle.lifecycle-common-java8não oferece mais nenhuma funcionalidade extra em relação aandroidx.lifecycle.lifecycle-common. Portanto, a dependência dele pode ser substituída porandroidx.lifecycle.lifecycle-common(I021aa). - A API que não é de corrotinas do
lifecycle-viewmodel-ktxfoi movida para o módulolifecycle-viewmodel(I6d5b2).
Contribuição externa
- Agradecemos a dmitrilc (link em inglês) por corrigir um erro de digitação na documentação do
ViewModel(#221).
Versão 2.4.0-alpha03
4 de agosto de 2021
Lançamento de androidx.lifecycle:lifecycle-*:2.4.0-alpha03. A versão 2.4.0-alpha03 contém estas confirmações.
Mudanças na API
- Alteração interruptiva de origem: o ViewModelProvider foi reescrito em Kotlin.
O método
ViewModelProvider.Factory.createnão permite mais o uso de genéricos anuláveis. (I9b9f6).
Mudanças de comportamento
- O
Lifecycle.repeatOnLifecycle:blockagora sempre é invocado em série ao repetir a execução (Ibab33).
Contribuição externa
- Agradecemos chao2zhang por corrigir os snippets de código na documentação do
repeatOnLifecycle(205).
Versão 2.4.0-alpha02
16 de junho de 2021
Lançamento de androidx.lifecycle:lifecycle-*:2.4.0-alpha02. A versão 2.4.0-alpha02 contém estas confirmações.
Novos recursos
- Uma nova verificação de lint
RepeatOnLifecycleWrongUsageparalifecycle-runtime-ktxque detecta quandorepeateOnLifecycleé usado incorretamente emonStart()ouonResume()foi adicionada (706078, b/187887400).
Mudanças na API
- A API
LifecycleOwner.addRepeatingJobfoi removida e substituída porLifecycle.repeatOnLifecycle, que respeita a simultaneidade estruturada e é mais fácil de entender (I4a3a8). - O
ProcessLifecycleInitializeragora é público para que possa ser usado como dependência por outrosandroidx.startup.Initializers (I94c31).
Correções de bugs
- Correção de um problema com a verificação de lint
NullSafeMutableLiveDataquando o campo tem modificadores (147 (link em inglês), b/183696616). - Outro problema com a verificação de lint
NullSafeMutableLiveDataao usar generalizações foi corrigido (161 (link em inglês), b/184830263).
Contribuição externa
- Agradecemos a maxsav (link em inglês) por melhorar a verificação de lint
NullSafeMutableLiveData(147 (link em inglês), b/183696616). - Agradecemos a kozaxinan (link em inglês) por melhorar a verificação de lint
NullSafeMutableLiveData(161, b/184830263).
Versão 2.4.0-alpha01
24 de março de 2021
Lançamento de androidx.lifecycle:lifecycle-*:2.4.0-alpha01. A versão 2.4.0-alpha01 contém estas confirmações.
Mudanças de comportamento
O
lifecycle-processagora usaandroidx.startuppara inicializar oProcessLifecycleOwner.Anteriormente, isso era feito pelo
androidx.lifecycle.ProcessLifecycleOwnerInitializer.Se você usava
tools:node="remove", a classeContentProviderque era usada para inicializar o ciclo de vida do processo, será necessário fazer o seguinte:<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>(ou)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Mudanças na API
- Uma nova API
Flow.flowWithLifecycleque emite valores do fluxo upstream quando o ciclo de vida fica pelo menos em um determinado estado usando a APILifecycle.repeatOnLifecycle. Essa é uma alternativa à nova APILifecycleOwner.addRepeatinJob(I0f4cd).
Correções de bugs
- No Lifecycle 2.3.1: a regra de lint
NonNullableMutableLiveDataagora pode diferenciar adequadamente entre variáveis de campo com diferentes valores de nulidade (b/169249668).
Lifecycle Viewmodel Compose versão 1.0.0
Versão 1.0.0-alpha07
16 de junho de 2021
Lançamento de androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07. A versão 1.0.0-alpha07 contém estas confirmações.
Alterações interruptivas da API
viewModel()agora usa umViewModelStoreOwneropcional, facilitando o trabalho com proprietários diferentes deLocalViewModelStoreOwner. Por exemplo, agora você pode usarviewModel(navBackStackEntry)para extrair um ViewModel associado a um gráfico de navegação específico (I2628d, b/188693123).
Versão 1.0.0-alpha06
2 de junho de 2021
Lançamento de androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06. A versão 1.0.0-alpha06 contém estas confirmações.
Atualizada para ser compatível com a versão 1.0.0-beta08 do Compose.
Versão 1.0.0-alpha05
18 de maio de 2021
Lançamento de androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05. A versão 1.0.0-alpha05 contém estas confirmações.
Novos recursos
- Atualizada para ser compatível com a versão
1.0.0-beta07do Compose.
Correções de bugs
- Os arquivos AndroidManifest de ui-test-manifest e ui-tooling-data agora são compatíveis com o Android 12 (I6f9de, b/184718994).
Versão 1.0.0-alpha04
7 de abril de 2021
Lançamento de androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04. A versão 1.0.0-alpha04 contém estas confirmações.
Mudanças na dependência
- Essa versão permite que
androidx.hilt:hilt-navigation-composeeandroidx.navigation:navigation-composesincronizem dependências emandroidx.compose.compiler:compiler:1.0.0-beta04eandroidx.compose.runtime:runtime:1.0.0-beta04. Para a versão 1.0.0, tem que haver uma correspondência entre o compilador e o ambiente de execução.
Versão 1.0.0-alpha03
10 de março de 2021
Lançamento de androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03. A versão 1.0.0-alpha03 contém estas confirmações.
Mudanças na API
LocalViewModelStoreOwner.currentagora retorna umViewModelStoreOwneranulável para determinar melhor se umViewModelStoreOwnerestá disponível na composição atual. As APIs que exigem umViewModelStoreOwner, comoviewModel()eNavHost, ainda geram uma exceção se umViewModelStoreOwnernão está definido (Idf39a).
Lifecycle-Viewmodel-Compose: versão 1.0.0-alpha02
24 de fevereiro de 2021
Lançamento de androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02. A versão 1.0.0-alpha02 contém estas confirmações.
Mudanças na API
LocalViewModelStoreOwneragora tem uma funçãoprovidesque pode ser usada comCompositionLocalProvider, substituindo a APIasProvidableCompositionLocal()(I45d24).
Lifecycle-Viewmodel-Compose: versão 1.0.0-alpha01
10 de fevereiro de 2021
Lançamento de androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01. A versão 1.0.0-alpha01 contém estas confirmações.
Novos recursos
- A função de composição
viewModel()e oLocalViewModelStoreOwnerforam movidos deandroidx.compose.ui.viewinteroppara este artefato no pacoteandroidx.lifecycle.viewmodel.compose(I7a374).
Versão 2.3.1
Lifecycle versão 2.3.1
24 de março de 2021
Lançamento de androidx.lifecycle:lifecycle-*:2.3.1. A versão 2.3.1 contém estas confirmações.
Correções de bugs
- A regra de lint
NonNullableMutableLiveDataagora pode diferenciar corretamente entre variáveis de campo com diferentes valores de nulidade (b/169249668).
Versão 2.3.0
Versão 2.3.0
10 de fevereiro de 2021
Lançamento de androidx.lifecycle:lifecycle-*:2.3.0. A versão 2.3.0 contém estas confirmações.
Principais mudanças desde a versão 2.2.0
- Suporte de
SavedStateHandleaclasses não comparáveis:SavedStateHandleagora oferece suporte a serialização lenta, permitindo chamarsetSavedStateProvider()para determinada chave, fornecendo umSavedStateProviderque receberá um callback parasaveState()quando for solicitado que oSavedStateHandlesalve o estado dele. Consulte Salvar classes não comparáveis. - Aplicação do comportamento do ciclo de vida:
- O LifecycleRegistry agora aplica o
DESTROYEDcomo um estado terminal. LifecycleRegistryagora verifica se os métodos são chamados na linha de execução principal. Isso sempre foi um requisito para ciclos de vida de atividades, fragmentos etc. A adição de observadores de linhas de execução não principais gerava dificuldade para capturar falhas durante a execução. Para objetosLifecycleRegistryque pertencem aos seus componentes, você pode desativar explicitamente as verificações usandoLifecycleRegistry.createUnsafe(...). Mas é necessário garantir que haja uma sincronização adequada quandoLifecycleRegistryé acessado de diferentes linhas de execução.
- O LifecycleRegistry agora aplica o
- Auxiliadores de evento e estado do ciclo de vida: foram adicionados métodos auxiliares estáticos de
downFrom(State),downTo(State),upFrom(State),upTo(State)aLifecycle.Eventpara gerar oEventcom umStatee uma direção de transição. O métodogetTargetState()que fornece oStatepara o qual o Lifecycle mudará diretamente após oEventfoi adicionado. withStateAtLeast: foram adicionadas APIsLifecycle.withStateAtLeastque aguardam um estado de ciclo de vida e executam um bloco de código não suspenso de forma síncrona no ponto de mudança de estado, depois são retomadas com o resultado. Essas APIs são diferentes dos métodoswhen*existentes, porque não permitem a execução do código de suspensão e não empregam um agente personalizado (aosp/1326081).- APIs de
ViewTree: as novas APIsViewTreeLifecycleOwner.get(View)eViewTreeViewModelStoreOwner.get(View)permitem que você extraia, respectivamente, oLifecycleOwnere oViewModelStoreOwnercontidos de uma instânciaView. É necessário fazer upgrade para Activity1.2.0, Fragment1.3.0e AppCompat 1.3.0-alpha01 ou versões mais recentes para que o preenchimento seja feito de forma correta. As extensões KotlinfindViewTreeLifecycleOwnerefindViewTreeViewModelStoreOwnerestão disponíveis emlifecycle-runtime-ktxelifecycle-viewmodel-ktx, respectivamente. - Descontinuação da extensão Kotlin
LiveData.observe(): a extensão KotlinLiveData.observe()necessária para usar a sintaxe lambda foi descontinuada, porque ela não é necessária ao usar o Kotlin 1.4.
Versão 2.3.0-rc01
16 de dezembro de 2020
Lançamento de androidx.lifecycle:lifecycle-*:2.3.0-rc01. A versão 2.3.0-rc01 contém estas confirmações.
Correções de bugs
- O método
keys()deSavedStateHandleagora é consistente antes e depois de o estado ser salvo. Agora, ele inclui chaves usadas anteriormente comsetSavedStateProvider(), além das chaves usadas comset()egetLiveData()(aosp/1517919, b/174713653).
Contribuição externa
- As APIs para suspender corrotinas que reconhecem o ciclo de vida agora processam melhor as chamadas para
yield(). Agradecemos a Nicklas Ansman Giertz (aosp/1430830, b/168777346).
Versão 2.3.0-beta01
1º de outubro de 2020
Lançamento de androidx.lifecycle:lifecycle-*:2.3.0-beta01. A versão 2.3.0-beta01 contém estas confirmações.
Mudanças na API
- A extensão Kotlin
LiveData.observe()necessária para usar a sintaxe lambda teve o uso suspenso, porque ela não é necessária ao usar o Kotlin 1.4 (I40d3f).
Correções de bugs
- Atualização do AndroidX para usar o Kotlin 1.4 (Id6471, b/165307851, b/165300826).
Mudanças na documentação
- O builder
liveDatae os documentosasLiveData()foram atualizados para incluir detalhes sobre como mudar os valores de tempo limite fornecidos (aosp/1122324).
Versão 2.3.0-alpha07
19 de agosto de 2020
Lançamento de androidx.lifecycle:lifecycle-*:2.3.0-alpha07. A versão 2.3.0-alpha07 contém estas confirmações.
Correções de bugs
- Correção de uma falha na verificação de lint
NullSafeMutableLiveData(aosp/1395367).
Versão 2.3.0-alpha06
22 de julho de 2020
Lançamento de androidx.lifecycle:lifecycle-*:2.3.0-alpha06. A versão 2.3.0-alpha06 contém estas confirmações.
Novos recursos
- Adição de métodos auxiliares estáticos de
downFrom(State),downTo(State),upFrom(State),upTo(State)aLifecycle.Eventpara gerar oEventcom umStatee uma direção de transição. O métodogetTargetState()que fornece oStatepara qual o Lifecycle mudará diretamente depois doEventfoi adicionado (I00887). - Adição de APIs
Lifecycle.withStateAtLeastque aguardam um estado de ciclo de vida e executam um bloco de código não suspenso de forma síncrona no ponto de mudança de estado, depois retomam com o resultado. Essas APIs são diferentes dos métodoswhen*existentes, porque não permitem a execução do código de suspensão e não empregam um agente personalizado (aosp/1326081).
Mudanças de comportamento
- O LifecycleRegistry agora aplica o
DESTROYEDcomo um estado terminal. (I00887). LifecycleRegistryagora verifica se os métodos são chamados na linha de execução principal. Isso sempre foi um requisito para ciclos de vida de atividades, fragmentos etc. A adição de observadores de linhas de execução não principais gerava dificuldade para capturar falhas durante a execução. Para objetosLifecycleRegistryque pertencem aos seus componentes, você pode desativar explicitamente as verificações com o uso deLifecycleRegistry.createUnsafe(...). Mas é necessário garantir que haja uma sincronização adequada quando esseLifecycleRegistryé acessado de diferentes linhas de execução (Ie7280, b/137392809).
Correções de bugs
- Correção de uma falha em
NullSafeMutableLiveData(b/159987480). - Uma
ObsoleteLintCustomCheckpara verificações de lint empacotadas comlifecycle-livedata-core-ktxe especificamente comNullSafeMutableLiveDatafoi corrigida (b/158699265).
Versão 2.3.0-alpha05
24 de junho de 2020
Lançamento de androidx.lifecycle:lifecycle-*:2.3.0-alpha05. A versão 2.3.0-alpha05 contém estas confirmações.
Correções de bugs
LiveDataagora lida melhor com casos reentrantes, evitando chamadas duplicadas paraonActive()ouonInactive()(b/157840298).- Corrigido um problema em que as verificações de lint não eram executadas ao usar o Android Studio 4.1 Canary 6 ou versão mais recente (aosp/1331903).
Versão 2.3.0-alpha04
10 de junho de 2020
Lançamento de androidx.lifecycle:lifecycle-*:2.3.0-alpha04. A versão 2.3.0-alpha04 contém estas confirmações.
Correções de bugs
- Correção de uma falha na verificação de lint
NonNullableMutableLiveData(b/157294666). - A verificação de lint
NonNullableMutableLiveDataagora abrange um número significativamente maior de casos em que o valornullera definido em umMutableLiveDatacom um parâmetro de tipo não nulo (b/156002218).
Versão 2.3.0-alpha03
20 de maio de 2020
Lançamento de androidx.lifecycle:lifecycle-*:2.3.0-alpha03. A versão 2.3.0-alpha03 contém estas confirmações.
Novos recursos
SavedStateHandleagora oferece suporte a serialização lenta, permitindo que você chamesetSavedStateProvider()para determinada chave, fornecendo umSavedStateProviderque receberá um callback parasaveState()quando for solicitado queSavedStateHandlesalve o estado dele (b/155106862).- Uma nova API
ViewTreeViewModelStoreOwner.get(View)permite que você extraia a interfaceViewModelStoreOwnercontida com uma instânciaView. É necessário fazer upgrade para Activity1.2.0-alpha05, Fragment1.3.0-alpha05e AppCompat1.3.0-alpha01para preencher corretamente. Uma extensão KotlinfindViewModelStoreOwner()foi adicionada alifecycle-viewmodel-ktx(aosp/1295522).
Correções de bugs
- Um problema que fazia com que as verificações de Lint
MutableLiveDatalançadas no Lifecycle2.3.0-alpha01fossem publicadas usando o artefatolifecycle-livedata-core-ktxfoi corrigido (b/155323109).
Versão 2.3.0-alpha02
29 de abril de 2020
Lançamento de androidx.lifecycle:lifecycle-*:2.3.0-alpha02. A versão 2.3.0-alpha02 contém estas confirmações.
Mudanças na API
SavedStateViewModelFactoryagora permite que você transmita umApplicationnulo ao construtor para históricos de consulta melhores em que um deles não está disponível rapidamente, e o suporte paraAndroidViewModelnão é necessário (aosp/1285740).
Correções de bugs
- Melhor desempenho de inicialização a frio, evitando falhas na verificação de classe na API 28 e em dispositivos anteriores (aosp/1282118).
Versão 2.3.0-alpha01
4 de março de 2020
Lançamento de androidx.lifecycle:lifecycle-*:2.3.0-alpha01. A versão 2.3.0-alpha01 contém estas confirmações.
Novos recursos
- Uma nova API
ViewTreeLifecycleOwner.get(View)permite que você extraia a interfaceLifecycleOwnercontida com uma instânciaView. É necessário fazer upgrade para Activity1.2.0-alpha01e Fragment1.3.0-alpha01para preencher corretamente. Uma extensãofindViewTreeLifecycleOwnerdo Kotlin está disponível emlifecycle-runtime-ktx(aosp/1182361, aosp/1182956). - Adição de uma nova verificação do Lint que avisa quando você define um valor
nullem umMutableLiveDatadefinido no Kotlin como não nulo. Isso está disponível ao usar os artefatoslivedata-core-ktxoulivedata-ktx(aosp/1154723, aosp/1159092). - Um novo artefato
lifecycle-runtime-testingestá disponível e fornece umTestLifecycleOwnerque implementaLifecycleOwnere fornece umLifecycleseguro e mutável da linha de execução (aosp/1242438).
Correções de bugs
- O artefato
lifecycle-runtimeagora tem um nome de pacote exclusivo (aosp/1187196).
Versão 2.2.0
ViewModel-Savedstate Versão 2.2.0
5 de fevereiro de 2020
Lançamento de androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0. A versão 2.2.0 contém estas confirmações.
O Lifecycle ViewModel SavedState agora compartilha a mesma versão de outros artefatos do Lifecycle. O comportamento de 2.2.0 é idêntico ao comportamento de 1.0.0.
Versão 2.2.0
22 de janeiro de 2020
androidx.lifecycle:lifecycle-*:2.2.0 é lançado. A versão 2.2.0 contém estas confirmações.
Mudanças importantes desde a versão 2.1.0
- Integração com corrotinas do Lifecycle: o novo artefato
lifecycle-runtime-ktxacrescenta integração entre as corrotinas do Lifecycle e do Kotlin. Olifecycle-livedata-ktxtambém foi expandido para aproveitar as corrotinas. Consulte Usar corrotinas do Kotlin com componentes de arquitetura para saber mais. - Descontinuação do
ViewModelProviders.of(): o uso doViewModelProviders.of()foi descontinuado. Você pode transmitir umFragmentouFragmentActivityao novo construtorViewModelProvider(ViewModelStoreOwner)para ter a mesma funcionalidade quando usar o Fragment1.2.0. - Descontinuação do artefato
lifecycle-extensions: com a descontinuação doViewModelProviders.of()descrita acima, esta versão marca a descontinuação da última API emlifecycle-extensions, e esse artefato agora será considerado completamente descontinuado. É altamente recomendável depender dos artefatos específicos necessários do Lifecycle (comolifecycle-service, se você estiver usandoLifecycleService, elifecycle-process, se você estiver usandoProcessLifecycleOwner) em vez delifecycle-extensions, já que não haverá uma futura versão2.3.0delifecycle-extensions. - Processador de anotações incremental do Gradle: o processador de anotações do Lifecycle é incremental por padrão.
Se o app tiver sido programado com a linguagem de programação Java 8, você pode usar
DefautLifecycleObserver. Se ele tiver sido programado com a linguagem de programação Java 7, você pode usarLifecycleEventObserver.
Versão 2.2.0-rc03
4 de dezembro de 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc03 é lançado. A versão 2.2.0-rc03 contém estas confirmações.
Correções de bugs
- Corrigida uma falha que ocorria quando um
ViewModelsimulado era armazenado emViewModelStoree consultado com a fábrica padrão. - Correção de um uso de
Dispatchers.Main.immediateemlaunchWhenCreatede métodos semelhantes para serem chamados de maneira síncrona durante o evento de ciclo de vida correspondente (aosp/1156203).
Contribuições externas
- Agradecemos a Anders Järleberg por contribuir com a correção (aosp/1156203).
- Agradecemos a Vsevolod Tolstopyatov, da Jetbrains, por revisar uma implementação de execução in-line.
Mudanças na dependência
- As extensões do Lifecycle agora dependem do Fragment
1.2.0-rc03.
Versão 2.2.0-rc02
7 de novembro de 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc02 é lançado. A versão 2.2.0-rc02 contém estas confirmações.
Correções de bugs
- Corrigido um bug na configuração do Proguard da biblioteca que afetava os dispositivos com a API 28 e mais recentes se a API de destino fosse anterior à 29 (b/142778206)
Versão 2.2.0-rc01
23 de outubro de 2019
Lançamento de androidx.lifecycle:lifecycle-*:2.2.0-rc01. A versão 2.2.0-rc01 contém estas confirmações.
Correções de bugs
- Foi corrigido um problema em que
launchWhenCreatede métodos relacionados executavam um frame depois do método de ciclo de vida associado devido ao uso deDispatchers.Mainem vez deDispatchers.Main.immediate(aosp/1145596).
Contribuições externas
- Agradecemos a Nicklas Ansman por contribuir com a correção (aosp/1145596).
Versão 2.2.0-beta01
9 de outubro de 2019
androidx.lifecycle:lifecycle-*:2.2.0-beta01 é lançado. A versão 2.2.0-beta01 contém estas confirmações.
Correções de bugs
- Foi corrigida uma regressão introduzida no Lifecycle 2.2.0-alpha05 na ordenação da classe
ProcessLifecycleOwnere na movimentação da interfaceLifecycleOwnerda atividade para iniciação e retomada em dispositivos Android 10 (aosp/1128132). - Corrigida uma regressão introduzida no Lifecycle
2.2.0-alpha05que causava umaNullPointerExceptionao usar a versão2.0.0ou2.1.0dolifecycle-process(b/141536990).
Versão 2.2.0-alpha05
18 de setembro de 2019
Lançamento de androidx.lifecycle:lifecycle-*:2.2.0-alpha05. A versão 2.2.0-alpha05 contém estas confirmações.
Correções de bugs
- Uma disputa no builder da corrotina livedata foi corrigida b/140249349.
Versão 2.2.0-alpha04
5 de setembro de 2019
Lançamento de androidx.lifecycle:lifecycle-*:2.2.0-alpha04. As confirmações incluídas nessa versão podem ser encontradas neste link.
Novos recursos
lifecycleScope,whenCreated,whenStarted,whenResumed,viewModelScopee a implementação deliveDataagora usamDispatchers.Main.immediateem vez deDispatchers.Main(b/139740492).
Contribuições externas
- Agradecemos a Nicklas Ansman por contribuir com a migração para
Dispatchers.Main.immediate(aosp/1106073).
Versão 2.2.0-alpha03
7 de agosto de 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha03 é lançado. As confirmações incluídas nessa versão podem ser encontradas neste link.
Novos recursos
- Agora, as implementações de
ViewModelStoreOwnertêm a opção de implementarHasDefaultViewModelProviderFactorypara oferecer umViewModelProvider.Factorypadrão. Isso foi feito para Activity1.1.0-alpha02, Fragment1.2.0-alpha02e Navigation2.2.0-alpha01(aosp/1092370, b/135716331).
Mudanças na API
- O uso de
ViewModelProviders.of()foi descontinuado. Você pode transmitir umFragmentouFragmentActivityao novo construtorViewModelProvider(ViewModelStoreOwner)para ter a mesma funcionalidade (aosp/1009889).
Versão 2.2.0-alpha02
2 de julho de 2019
Lançamento de androidx.lifecycle:*:2.2.0-alpha02. As confirmações incluídas nessa versão podem ser encontradas neste link.
Mudanças na API
LiveDataScope.initialValuefoi substituído porLiveDataScope.latestValue, que rastreará o valor atual emitido do blocoliveData.- Uma nova sobrecarga foi adicionada ao builder
liveData, que recebe o parâmetrotimeoutcomo o tipoDuration.
Versão 2.2.0-alpha01
7 de maio de 2019
Lançamento de androidx.lifecycle:*:2.2.0-alpha01. As confirmações incluídas nessa versão podem ser encontradas neste link.
Novos recursos
- Essa versão adiciona novos recursos para incluir suporte a corrotinas do Kotlin para Lifecycle e LiveData. A documentação detalhada sobre eles pode ser encontrada neste link.
ViewModel-SavedState Versão 1.0.0
Versão 1.0.0
22 de janeiro de 2020
Lançamento de androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0. A versão 1.0.0 contém essas confirmações (link em inglês).
Recursos importantes da versão 1.0.0
- Adição da nova classe SavedStateHandle. Ela permite que as classes
ViewModelacessem e contribuam com o estado salvo. Esse objeto pode ser recebido no construtor da classeViewModel, e as fábricas fornecidas por padrão por fragmentos e AppCompatActivity vão injetarSavedStateHandleautomaticamente. - Adição de AbstractSavedStateViewModelFactory. Ela permite que você crie fábricas personalizadas para
ViewModele forneça acesso aSavedStateHandle.
ViewModel-Savedstate Versão 1.0.0-rc03
4 de dezembro de 2019
Lançamento de androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03. A versão 1.0.0-rc03 contém estas confirmações.
Mudanças na dependência
- O Lifecycle ViewModel SavedState agora depende do Lifecycle
2.2.0-rc03.
Viewmodel-Savedstate Versão 1.0.0-rc02
7 de novembro de 2019
Lançamento de androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02. A versão 1.0.0-rc02 contém estas confirmações.
Mudanças na dependência
- Agora depende do lifecycle
2.2.0-rc02.
ViewModel-SavedState Versão 1.0.0-rc01
23 de outubro de 2019
Lançamento de androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01 sem mudanças desde a versão 1.0.0-beta01. A versão 1.0.0-rc01 contém estas confirmações.
ViewModel-Savedstate Versão 1.0.0-beta01
9 de outubro de 2019
Lançamento de androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01. A versão 1.0.0-beta01 contém estas confirmações.
Correções de bugs
- Corrigido um problema ao acessar um ViewModel de SavedState pela primeira vez em
Activity.onActivityResult()que resultava em umaIllegalStateException(b/139093676). - Uma
IllegalStateExceptionao usarAbstractSavedStateViewModelFactoryfoi corrigida (b/141225984).
ViewModel-SavedState Versão 1.0.0-alpha05
18 de setembro de 2019
Lançamento de androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05. A versão 1.0.0-alpha05 contém estas confirmações.
Mudanças na API
SavedStateViewModelFactorynão estende maisAbstractSavedStateViewModelFactory, eSavedStateHandleé criado apenas para ViewModels que o solicitaram (aosp/1113593).
ViewModel-SavedState Versão 1.0.0-alpha03
7 de agosto de 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03 é lançado. As confirmações incluídas nessa versão podem ser encontradas neste link.
Mudanças importantes
lifecycle-viewmodel-savedstatenão depende mais defragment, e os construtoresSavedStateViewModelFactory(Fragment)eSavedStateViewModelFactory(FragmentActivity)relacionados foram removidos. Em vez disso,SavedStateViewModelFactoryagora é a fábrica padrão para Activity1.1.0-alpha02, Fragment1.2.0-alpha02e Navigation2.2.0-alpha01. (b/135716331).
ViewModel-SavedState Versão 1.0.0-alpha02
2 de julho de 2019
Lançamento de androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02. As confirmações incluídas nessa versão podem ser encontradas neste link.
Novos recursos
- A sobrecarga
SavedStateHandle.getLiveData(), que aceita um valor padrão, foi adicionada.
Mudanças na API
SavedStateVMFactoryfoi renomeado comoSavedStateViewModelFactory.AbstractSavedStateVMFactoryfoi renomeado comoAbstractSavedStateViewModelFactory.
ViewModel-Savedstate Versão 1.0.0-alpha01
13 de março de 2019
Lançamento de androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01. O registro de confirmação completo dessa versão inicial pode ser encontrado neste link.
Novos recursos
- Agora
ViewModelspode contribuir para o savedstate. Para isso, use a recém-introduzida fábrica do ViewModel,SavedStateVMFactory. Além disso, o ViewModel precisa ter um construtor que receba o objetoSavedStateHandlecomo parâmetro.
Versão 2.1.0
Mudanças importantes desde a versão 2.0.0
- O
LifecycleEventObserverfoi adicionado para os casos em que um stream de eventos do ciclo de vida é necessário. Trata-se de uma API pública, em vez de uma classeGenericLifecycleObserveroculta. - Adicionadas extensões ktx para os métodos
LiveData.observeeTransformations.*. Transformations.distinctUntilChanged, que cria um novo objeto LiveData que não emite um valor até que o valorLiveDatade origem tenha sido alterado foi adicionado.- Foi adicionado suporte à corrotina em ViewModels com o acréscimo da propriedade de extensão
ViewModel.viewModelScope.
Versão 2.1.0
5 de setembro de 2019
Lançamento de androidx.lifecycle:lifecycle-*:2.1.0. As confirmações incluídas nessa versão podem ser encontradas neste link.
Versão 2.1.0-rc01
2 de julho de 2019
Lançamento de androidx.lifecycle:*:2.1.0-rc01 sem mudanças desde androidx.lifecycle:*:2.1.0-beta01. As confirmações incluídas nessa versão podem ser encontradas neste link.
Versão 2.1.0-beta01
7 de maio de 2019
Lançamento de androidx.lifecycle:*:2.1.0-beta01. As confirmações incluídas nessa versão podem ser encontradas neste link.
Novos recursos
- Lifecycles foram atualizados para a versão Beta. As APIs introduzidas em versões Alfas anteriores, como funções de extensão de
liveDatapara transformações e observações, inicialização doViewModelcom delegação de propriedades, entre outras, estão estabilizadas e não vão mudar.
Versão 2.1.0-alpha04
3 de abril de 2019
Lançamento de androidx.lifecycle:*:2.1.0-alpha04. As confirmações incluídas nessa versão podem ser encontradas neste link.
Mudanças na API
- Alteração interruptiva: a API relacionada a
by viewModels()e aby activityViewModels()mudou para oferecer suporte direto aViewModelStore, e não apenas a umViewModelStoreOwner(aosp/932932, link em inglês)
Versão 2.1.0-alpha03
13 de março de 2019
Lançamento de androidx.lifecycle:*:2.1.0-alpha03. A lista completa de confirmações incluídas nessa versão pode ser encontrada neste link.
Mudanças na API
ViewModelProvider.KeyedFactoryfoi removido. A segunda interface, além deViewModelProvider.Factory, não combinou bem com novos recursos, como delegação de propriedades em Kotlinby viewmodels {}(aosp/914133, link em inglês)
Versão 2.1.0-alpha02
30 de janeiro de 2019
Lançamento de androidx.lifecycle 2.1.0-alpha02.
Mudanças na API
- Agora
LifecycleRegistrycontém um métodosetCurrentState()que substitui o método descontinuadosetState()(aosp/880715, link em inglês)
Correções de bugs
- Foi corrigido um problema que fazia com que instâncias fictícias de
ViewModelfalhassem quando a classeViewModelStoreera liberada (b/122273087).
Versão 2.1.0-alpha01
17 de dezembro de 2018
Lançamento de androidx.lifecycle 2.1.0-alpha01.
Novos recursos
- O
LifecycleEventObserverfoi adicionado para os casos em que um stream de eventos do ciclo de vida é necessário. Trata-se de uma API pública, em vez de uma classeGenericLifecycleObserveroculta. - Adicionadas extensões ktx para os métodos
LiveData.observeeTransformations.*. - O método
Transformations.distinctUntilChangedfoi adicionado. Ele cria um novo objetoLiveDataque não emite valores até que o valor LiveData de origem mude. - Adicionado suporte de corrotinas em ViewModels: a propriedade da extensão
ViewModel.viewModelScopefoi adicionada. - Adicionada
ViewModelProvider.KeyedFactory, uma fábrica para ViewModels que recebekeyeClassno métodocreate.
Versão 2.0.0
Versão 2.0.0
21 de setembro de 2018
A versão 2.0.0 foi lançada com uma correção de bug de 2.0.0-rc01 em ViewModel.
Correções de bugs
- Correção de uma regra Proguard do ViewModel que removia incorretamente os construtores. b/112230489
Versão 2.0.0-beta01
2 de julho de 2018
Correções de bugs
- A regra Proguard do LifecycleObserver foi corrigida para manter apenas implementações, e não subinterfaces b/71389427.
- As regras Proguard do ViewModel foram corrigidas para permitir ofuscação e redução.
Versões anteriores ao AndroidX
Para as seguintes versões do Lifecycle anteriores ao AndroidX, inclua estas dependências:
dependencies {
def lifecycle_version = "1.1.1"
// ViewModel and LiveData
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
// alternatively - just ViewModel
implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
// alternatively - just LiveData
implementation "android.arch.lifecycle:livedata:$lifecycle_version"
// alternatively - Lifecycles only (no ViewModel or LiveData).
// Support library depends on this lightweight import
implementation "android.arch.lifecycle:runtime:$lifecycle_version"
annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
// alternately - if using Java8, use the following instead of compiler
implementation "android.arch.lifecycle:common-java8:$lifecycle_version"
// optional - ReactiveStreams support for LiveData
implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"
// optional - Test helpers for LiveData
testImplementation "android.arch.core:core-testing:$lifecycle_version"
}
Versão 1.1.1
21 de março de 2018
Só uma pequena mudança: android.arch.core.util.Function foi movida de arch:runtime para arch:common. Isso possibilita o uso sem a dependência de execução, por exemplo, em paging:common abaixo.
lifecycle:common é uma dependência de lifecycle:runtime. Por esse motivo, essa mudança não afeta lifecycle:runtime diretamente, mas apenas os módulos que dependem diretamente de lifecycle:common, como, por exemplo, Paging.
Versão 1.1.0
22 de janeiro de 2018
Mudanças no empacotamento
Novas dependências muito menores agora estão disponíveis:
android.arch.lifecycle:livedata:1.1.0android.arch.lifecycle:viewmodel:1.1.0
Mudanças na API
- Os
LifecycleActivityeLifecycleFragmentobsoletos foram descontinuados. UseFragmentActivity,AppCompatActivityou ofereça suporte aFragment. - Adicionadas anotações
@NonNullaViewModelProviderseViewModelStores - O construtor
ViewModelProvidersfoi descontinuado. Use os métodos estáticos dele diretamente. - O uso de
ViewModelProviders.DefaultFactoryfoi descontinuado. UseViewModelProvider.AndroidViewModelFactory. - Adicionado o método
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)estático para recuperar umaFactoryestática adequada para criar instânciasViewModeleAndroidViewModel.