O segundo Visualização do Desenvolvedor do Android 11 já está disponível, teste e compartilhe seu feedback.

Lifecycle

Os componentes com reconhecimento do Lifecycle realizam ações em resposta a uma mudança no status do ciclo de vida de outro componente, como atividades e fragmentos. Esses componentes ajudam você a produzir códigos mais organizados e, normalmente, mais leves e mais fáceis de manter. Consulte os documentos de referência para ver mais informações.

Atualização mais recente Versão estável atual Próximo candidato a lançamento Versão Beta Versão Alfa
22 de janeiro de 2020 2.2.0 - - -

Como 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

    dependencies {
        def lifecycle_version = "2.2.0"
        def arch_version = "2.1.0"

        // ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$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"

        // Saved state module for ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"

        // 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 - 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"
    }
    

Java

    dependencies {
        def lifecycle_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 - ReactiveStreams support for LiveData
        implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version"

        // optional - Test helpers for LiveData
        testImplementation "androidx.arch.core:core-testing:$lifecycle_version"
    }
    

Para ver mais informações sobre dependências, consulte Adicionar dependências de compilação.

Versão 2.2.0

Versão 2.2.0

22 de janeiro de 2020

Lançamento de androidx.lifecycle:lifecycle-*:2.2.0. A versão 2.2.0 contém essas confirmações (link em inglês).

Mudanças importantes desde a versão 2.1.0

  • Integração com corrotina do Lifecycle: o novo artefato lifecycle-runtime-ktx acrescenta integração entre as corrotinas do Lifecycle e do Kotlin. O lifecycle-livedata-ktx também foi expandido para aproveitar as corrotinas. Consulte Usar corrotinas do Kotlin com componentes de arquitetura para saber mais.
  • Suspensão de uso de ViewModelProviders.of(): ViewModelProviders.of() se tornou obsoleto. Você pode passar um Fragment ou FragmentActivity para o novo ViewModelProvider(ViewModelStoreOwner) para conseguir a mesma funcionalidade ao usar o Fragment 1.2.0.
  • Suspensão de uso do artefato lifecycle-extensions: com a suspensão do uso do ViewModelProviders.of() descrita acima, esta versão marca a suspensão do uso da última API em lifecycle-extensions, e esse artefato agora será considerado completamente obsoleto. É altamente recomendável depender dos artefatos específicos necessários do Lifecycle (como lifecycle-service, se você estiver usando LifecycleService, e lifecycle-process, se você estiver usando ProcessLifecycleOwner) em vez de lifecycle-extensions, já que não haverá uma futura versão 2.3.0 de lifecycle-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 Java 8, você poderá usar DefautLifecycleObserver. Se ele tiver sido programado com a linguagem Java 7, você poderá usar LifecycleEventObserver.

Versão 2.2.0-rc03

4 de dezembro de 2019

Lançamento de androidx.lifecycle:lifecycle-*:2.2.0-rc03. A versão 2.2.0-rc03 contém essas confirmações (link em inglês).

Correções de bugs

  • Correção de uma falha que ocorria quando uma ViewModel simulada era armazenada em ViewModelStore e consultada com a fábrica padrão.
  • Correção de um uso de Dispatchers.Main.immediate em launchWhenCreated e métodos semelhantes para serem chamados de maneira síncrona durante o evento de ciclo de vida correspondente (aosp/1156203, link em inglês).

Contribuições externas

  • Agradecemos a Anders Järleberg por contribuir com a correção (aosp/1156203, link em inglês).
  • Agradecemos a Vsevolod Tolstopyatov, da Jetbrains, por revisar uma implementação de execução inline.

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

Lançamento do androidx.lifecycle:lifecycle-*:2.2.0-rc02. A versão 2.2.0-rc02 contém essas confirmações.

Correções de bugs

  • Corrigido um bug na configuração do Proguard da biblioteca que afetava os dispositivos com a API 28+ se a API de destino fosse anterior a 29. (b/142778206)

Versão 2.2.0-rc01

23 de outubro de 2019

Lançamento do androidx.lifecycle:lifecycle-*:2.2.0-rc01. A versão 2.2.0-rc01 contém essas confirmações (link em inglês).

Correções de bugs

  • Corrigido um problema em que launchWhenCreated e métodos relacionados executavam um frame mais tarde do que o método de ciclo de vida associado, devido ao uso de Dispatchers.Main em vez de Dispatchers.Main.immediate. (aosp/1145596, link em inglês)

Contribuições externas

  • Agradecemos a Nicklas Ansman por contribuir com a correção. (aosp/1145596, link em inglês)

Versão 2.2.0-beta01

9 de outubro de 2019

Lançamento do androidx.lifecycle:lifecycle-*:2.2.0-beta01. A versão 2.2.0-beta01 contém essas confirmações (link em inglês).

Correções de bugs

  • Corrigida uma regressão introduzida no Lifecycle 2.2.0-alpha05 na ordenação de ProcessLifecycleOwner e na movimentação de LifecycleOwner da atividade para iniciação e retomada em dispositivos Android 10. (aosp/1128132, link em inglês)
  • Corrigida uma regressão introduzida no Lifecycle 2.2.0-alpha05 que causava uma NullPointerException ao usar a versão 2.0.0 ou 2.1.0 de lifecycle-process. (b/141536990, link em inglês)

Version 2.2.0-alpha05

18 de setembro de 2019

Lançamento do androidx.lifecycle:lifecycle-*:2.2.0-alpha05. A versão 2.2.0-alpha05 contém essas confirmações (link em inglês).

Correções de bugs

  • Corrigida uma disputa na corrotina do builder Livedata. b/80346526 (link em inglês).

Versão 2.2.0-alpha04

5 de setembro de 2019

Lançamento do androidx.lifecycle:lifecycle-*:2.2.0-alpha04. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Novos recursos

  • lifecycleScope, whenCreated, whenStarted, whenResumed, viewModelScope e a implementação subjacente de liveData agora usam Dispatchers.Main.immediate em vez de Dispatchers.Main. (b/139740492, link em inglês)

Contribuições externas

  • Agradecemos a Nicklas Ansman por contribuir com migração para Dispatchers.Main.immediate. (aosp/1106073, link em inglês)

Versão 2.2.0-alpha03

7 de agosto de 2019

Lançamento do androidx.lifecycle:lifecycle-*:2.2.0-alpha03. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Novos recursos

Mudanças na API

  • O uso de ViewModelProviders.of() foi suspenso. Você pode transmitir um Fragment ou FragmentActivity ao novo construtor ViewModelProvider(ViewModelStoreOwner) para conseguir a mesma funcionalidade. (aosp/1009889, link em inglês)

Versão 2.2.0-alpha02

2 de julho de 2019

Lançamento do androidx.lifecycle:*:2.2.0-alpha02. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Mudanças na API

  • LiveDataScope.initialValue substituído por LiveDataScope.latestValue, que rastreará o valor atual emitido do bloco liveData.
  • Adicionada uma nova sobrecarga ao builder liveData, que recebe o parâmetro timeout como tipo Duration.

Versão 2.2.0-alpha01

7 de maio de 2019

Lançamento do androidx.lifecycle:*:2.2.0-alpha01. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Novos recursos

  • Essa versão adiciona novos recursos para compatibilidade com corrotinas da Kotlin para Lifecycle e LiveData. Documentação detalhada sobre eles pode ser encontrada aqui (link em inglês).

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 em 1.0.0

  • Adição da nova classe SavedStateHandle. Ela permite que as classes ViewModel acessem e contribuam com o estado salvo. Esse objeto pode ser recebido no construtor da classe ViewModel, e as fábricas fornecidas por padrão pelo Fragments e AppCompatActivity injetarão SavedStateHandle automaticamente.
  • Adição de AbstractSavedStateViewModelFactory. Ela permite que você crie fábricas personalizadas para seu ViewModel e forneça acesso ao SavedStateHandle.

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 essas confirmações (link em inglês).

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 do androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02. A versão 1.0.0-rc02 contém essas confirmações (link em inglês).

Alterações 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 do androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01 sem alterações do 1.0.0-beta01. A versão 1.0.0-rc01 contém essas confirmações (link em inglês).

ViewModel-Savedstate Versão 1.0.0-beta01

9 de outubro de 2019

Lançamento do androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01. A versão 1.0.0-beta01 contém essas confirmações (link em inglês).

Correções de bugs

  • Correção de problema ao acessar um ViewModel de SavedState pela primeira vez em Activity.onActivityResult() que resultava em uma IllegalStateException. (b/139093676, link em inglês)
  • Corrigida uma IllegalStateException ao usar AbstractSavedStateViewModelFactory. (b/141225984, link em inglês)

ViewModel-SavedState Versão 1.0.0-alpha05

18 de setembro de 2019

Lançamento do androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05. A versão 1.0.0-alpha05 contém essas confirmações (link em inglês).

Mudanças na API

  • SavedStateViewModelFactory não estende mais AbstractSavedStateViewModelFactory, e SavedStateHandle é criado apenas para ViewModels que o solicitaram (aosp/1113593, link em inglês)

ViewModel-SavedState Versão 1.0.0-alpha03

7 de agosto de 2019

Lançamento do androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Alterações importantes

ViewModel-SavedState Versão 1.0.0-alpha02

2 de julho de 2019

Lançamento do androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Novos recursos

  • Adição da sobrecarga SavedStateHandle.getLiveData(), que aceita um valor padrão.

Mudanças na API

  • SavedStateVMFactory foi renomeado como SavedStateViewModelFactory.
  • AbstractSavedStateVMFactory foi renomeado como AbstractSavedStateViewModelFactory.

ViewModel-Savedstate Versão 1.0.0-alpha01

13 de março de 2019

Lançamento do androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01. O registro de confirmação completo dessa versão inicial pode ser encontrado aqui (link em inglês).

Novos recursos

  • Agora ViewModels pode 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 objeto SavedStateHandle como parâmetro.

Versão 2.1.0

Mudanças importantes desde a versão 2.0.0

  • Adicionado LifecycleEventObserver para os casos em que um fluxo de eventos do ciclo de vida é necessário. Trata-se de uma API pública, em vez de uma classe GenericLifecycleObserver oculta.
  • Adicionadas extensões ktx para os métodos LiveData.observe e Transformations.*.
  • Adicionado Transformations.distinctUntilChanged, que cria um novo objeto LiveData que não emite um valor até que o valor LiveData de origem tenha sido alterado.
  • Adicionada compatibilidade com a corrotina em ViewModels, incluindo a propriedade de extensão ViewModel.viewModelScope.

Versão 2.1.0

5 de setembro de 2019

Lançamento do androidx.lifecycle:lifecycle-*:2.1.0. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Versão 2.1.0-rc01

2 de julho de 2019

Lançamento do androidx.lifecycle:*:2.1.0-rc01 sem alterações do androidx.lifecycle:*:2.1.0-beta01. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Versão 2.1.0-beta01

7 de maio de 2019

Lançamento do androidx.lifecycle:*:2.1.0-beta01. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Novos recursos

  • Lifecycles foram atualizados para a versão Beta. As APIs introduzidas em Alfas anteriores, como funções de extensão de liveData para transformações e observações, inicialização do ViewModel com 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 do androidx.lifecycle:*:2.1.0-alpha04. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Mudanças na API

  • Mudança importante: a API subjacente relacionada a by viewModels()e a by activityViewModels() mudou para ser diretamente compatível com um ViewModelStore e não apenas com um ViewModelStoreOwner. (aosp/932932, link em inglês)

Versão 2.1.0-alpha03

13 de março de 2019

Lançamento do androidx.lifecycle:*:2.1.0-alpha03. A lista completa de confirmações incluídas nessa versão pode ser encontrada aqui (link em inglês).

Mudanças na API

  • ViewModelProvider.KeyedFactory foi removido. A segunda interface, além de ViewModelProvider.Factory, não combinou bem com novos recursos, como delegação de propriedades em Kotlin by viewmodels {}. (aosp/914133, link em inglês)

Versão 2.1.0-alpha02

30 de janeiro de 2019

Lançamento do androidx.lifecycle 2.1.0-alpha02.

Mudanças na API

  • Agora LifecycleRegistry contém um método setCurrentState() que substitui o método obsoleto setState(). (aosp/880715, link em inglês)

Correções de bugs

  • Corrigido um problema que fazia com que instâncias ViewModel fictícias falhassem quando o ViewModelStore era liberado. b/122273087 (link em inglês).

Versão 2.1.0-alpha01

17 de dezembro de 2018

Lançamento do androidx.lifecycle 2.1.0-alpha01.

Novos recursos

  • Adicionado LifecycleEventObserver para os casos em que um fluxo de eventos do ciclo de vida é necessário. Trata-se de uma API pública, em vez de uma classe GenericLifecycleObserver oculta.
  • Adicionadas extensões ktx para os métodos LiveData.observe e Transformations.*.
  • Adicionado o método Transformations.distinctUntilChanged. Ele cria um novo objeto LiveData que não emite valores até que o valor LiveData de origem mude.
  • Adicionada compatibilidade de corrotinas em ViewModels: a propriedade da extensão ViewModel.viewModelScope.
  • Adição de ViewModelProvider.KeyedFactory, uma fábrica para ViewModels que recebe key e Class no método create.

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

  • Corrigida 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

  • Correção da regra Proguard do LifecycleObserver para manter apenas implementações, e não subinterfaces. b/71389427
  • Corrigidas regras Proguard do ViewModel para permitir ofuscação e encolhimento.

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 tempo 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 o 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.0
  • android.arch.lifecycle:viewmodel:1.1.0

Mudanças na API

  • Os LifecycleActivity e LifecycleFragment obsoletos foram removidos. Use FragmentActivity, AppCompatActivity ou ofereça compatibilidade com Fragment.
  • Adicionadas anotações @NonNull a ViewModelProviders e ViewModelStores
  • O uso do construtor ViewModelProviders foi suspenso. Use os métodos estáticos dele diretamente.
  • O uso de ViewModelProviders.DefaultFactory foi suspenso. Use ViewModelProvider.AndroidViewModelFactory
  • Adicionado método ViewModelProvider.AndroidViewModelFactory.getInstance(Application) estático para recuperar uma Factory adequada para criar instâncias ViewModel e AndroidViewModel.