Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

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. Para ver mais informações, consulte os documentos de referência.

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 para os artefatos necessários no arquivo build.gradle do seu app ou módulo:

dependencies {
        def lifecycle_version = "2.0.0"

        // ViewModel and LiveData
        implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
        // alternatively - just ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // For Kotlin use lifecycle-viewmodel-ktx
        // alternatively - just LiveData
        implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
        // alternatively - Lifecycles only (no ViewModel or LiveData). Some UI
        //     AndroidX libraries use this lightweight import for Lifecycle
        implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"

        annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
        // 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" // For Kotlin use lifecycle-reactivestreams-ktx

        // 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-alpha03

7 de agosto de 2019

Lançamento do androidx.lifecycle:lifecycle-*:2.2.0-alpha03. As confirmações inclusas nessa versão podem ser encontradas neste link.

Novos recursos

Mudanças na API

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

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 inclusas nessa versão podem ser encontradas neste link.

Alterações importantes

Versão 2.2.0-alpha02

2 de julho de 2019

Lançamento do androidx.lifecycle:*:2.2.0-alpha02. As confirmações inclusas nessa versão podem ser encontradas neste link.

Mudanças na API

  • Substituição de LiveDataScope.initialValue por LiveDataScope.latestValue, que rastreará o valor atual emitido do bloco liveData.
  • Adição de uma nova sobrecarga ao builder liveData, que recebe o parâmetro timeout como tipo Duration.

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 inclusas nessa versão podem ser encontradas neste link.

Novos recursos

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

Mudanças na API

  • Renomeação de SavedStateVMFactory para SavedStateViewModelFactory.
  • Renomeação de AbstractSavedStateVMFactory para AbstractSavedStateViewModelFactory.

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 inclusas nessa versão podem ser encontradas neste link.

Versão 2.2.0-alpha01

7 de maio de 2019

Lançamento do androidx.lifecycle:*:2.2.0-alpha01. As confirmações inclusas nessa versão podem ser encontradas neste link.

Novos recursos

  • Essa versão adiciona novos recursos para compatibilidade com corrotinas do Kotlin para Lifecycle e LiveData. A documentação detalhada sobre eles pode ser encontrada neste link.

Versão 2.1.0-beta01

7 de maio de 2019

Lançamento do androidx.lifecycle:*:2.1.0-beta01. As confirmações inclusas nessa versão podem ser encontradas neste link.

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 inclusas nessa versão podem ser encontradas neste link.

Mudanças na API

  • Alteração importante: a API subjacente relacionada a by viewModels() e a by activityViewModels() foi alterada para ser compatível com um ViewModelStore diretamente, não apenas com um ViewModelStoreOwner. (aosp/932932)

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 neste link.

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 deve ter um construtor que receba o objeto SavedStateHandle como parâmetro.

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 inclusas nessa versão pode ser encontrada neste link.

Mudanças na API

  • Remoção de ViewModelProvider.KeyedFactory. A segunda interface, além de ViewModelProvider.Factory, não foi uma boa combinação com novos recursos, por exemplo, a delegação de propriedades no by viewmodels {} do Kotlin. (aosp/914133)

Versão 2.1.0-alpha02

30 de janeiro de 2019

Lançamento do androidx.lifecycle 2.1.0-alpha02.

Mudanças na API

  • LifecycleRegistry agora contém um método setCurrentState() que substitui o método setState() já obsoleto. (aosp/880715)

Correções de bugs

  • Correção de um problema em que instâncias ViewModel fictícias falhavam quando o ViewModelStore contido era limpo. b/122273087

Versão 2.1.0-alpha01

17 de dezembro de 2018

Lançamento do androidx.lifecycle 2.1.0-alpha01.

Novos recursos

  • Adição de LifecycleEventObserver para os casos em que é necessário ter um fluxo de eventos do ciclo de vida. Trata-se de uma API pública, em vez de uma classe GenericLifecycleObserver oculta.
  • Adição de extensões ktx para os métodos LiveData.observe e Transformations.*.
  • Adição do método Transformations.distinctUntilChanged. Ele cria um novo objeto LiveData que não emite valores até que o valor LiveData de origem seja alterado.
  • Compatibilidade com corrotina no ViewModels: adição da propriedade de 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

21 de setembro de 2018

O Lifecycle 2.0.0 foi lançado com uma correção de bug do 2.0.0-rc01 no 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

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

Dependências 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

Apenas uma pequena alteração: android.arch.core.util.Function foi movida de arch:runtime para arch:common. Isso permite que ele seja usado sem a dependência do tempo de execução, por exemplo, no paging:common abaixo.

lifecycle:common é uma dependência de lifecycle:runtime, portanto, essa alteração não afeta o lifecycle:runtime diretamente, apenas módulos que dependem diretamente do lifecycle:common, como no 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 o Fragment de suporte.
  • Adição de anotações @NonNull a ViewModelProviders e ViewModelStores.
  • O construtor ViewModelProviders está obsoleto. Use os métodos estáticos dele diretamente.
  • O ViewModelProviders.DefaultFactory está obsoleto. Use ViewModelProvider..AndroidViewModelFactory
  • Adição do método ViewModelProvider.AndroidViewModelFactory.getInstance(Application) estático para recuperar uma Factory estática adequada para a criação de instâncias ViewModel e AndroidViewModel.