Lifecycle

Os componentes compatíveis com o ciclo de vida 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 a produzir códigos mais organizados e, normalmente, mais leves e mais fáceis de manter.

Esta tabela lista todos os artefatos no grupo androidx.lifecycle.

Artefato Versão estável atual Próximo candidato a lançamento Versão Beta Versão Alfa
lifecycle-* 2.4.0 - - -
lifecycle-viewmodel-compose 2.4.0 - - 1.0.0-alpha07
Última atualização desta biblioteca: 27 de outubro de 2021

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.4.0"
        def arch_version = "2.1.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"

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

Kotlin

    dependencies {
        val lifecycle_version = "2.4.0"
        val arch_version = "2.1.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")

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

Java

Groovy

    dependencies {
        def lifecycle_version = "2.4.0"
        def arch_version = "2.1.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"
    }
    

Kotlin

    dependencies {
        val lifecycle_version = "2.4.0"
        val arch_version = "2.1.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")
    }
    

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

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 existente clicando no botão de estrela.

Criar novo problema

Consulte a documentação do Issue Tracker para saber mais.

Versão 2.4

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 @OnLifecycleEvent foi descontinuado. Use o LifecycleEventObserver ou o DefaultLifecycleObserver
  • A biblioteca androidx.lifecycle:lifecycle-viewmodel-compose foi adicionada. Ela fornece o viewModel() que pode ser composto e o LocalViewModelStoreOwner.
    • Alteração interruptiva de origem: o ViewModelProvider foi reescrito em Kotlin. O ViewModelProvider.Factory.create method não permite mais o uso de genéricos anuláveis.
  • 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á em pelo menos um determinado estado.
  • O DefaultLifecycleObserver foi movido de lifecycle.lifecycle-common-java8 para lifecycle.lifecycle-common. O lifecycle.lifecycle-common-java8 não oferece mais nenhuma funcionalidade extra em relação ao lifecycle.lifecycle-common, então a dependência dele pode ser substituída pelo lifecycle.lifecycle-common
  • A API que não é de corrotinas do lifecycle-viewmodel-ktx foi movida para o módulo lifecycle-viewmodel.
  • O lifecycle-process agora usa androidx.startup para inicializar o ProcessLifecycleOwner.

    Anteriormente, isso era feito pelo androidx.lifecycle.ProcessLifecycleOwnerInitializer.

    Se você usava tools:node="remove", o ContentProvider que era usado para inicializar o ciclo de vida do processo anteriormente, 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

  • @OnLifecycleEvent foi descontinuado. Use o LifecycleEventObserver ou o DefaultLifecycleObserver (I5a8fa).
  • O DefaultLifecycleObserver foi movido de androidx.lifecycle.lifecycle-common-java8 para androidx.lifecycle.lifecycle-common. O androidx.lifecycle.lifecycle-common-java8 não oferece mais nenhuma funcionalidade extra em relação ao androidx.lifecycle.lifecycle-common, então a dependência dele pode ser substituída pelo androidx.lifecycle.lifecycle-common (I021aa).
  • A API que não é de corrotinas do lifecycle-viewmodel-ktx foi movida para o módulo lifecycle-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.create agora permite anuláveis generalizados (I9b9f6).

Mudanças de comportamento

  • O Lifecycle.repeatOnLifecycle: block agora 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 RepeatOnLifecycleWrongUsage para lifecycle-runtime-ktx que detecta quando repeateOnLifecycle é usado incorretamente em onStart() ou onResume() foi adicionada (706078, b/187887400).

Mudanças na API

  • A API LifecycleOwner.addRepeatingJob foi removida e substituída por Lifecycle.repeatOnLifecycle, que respeita a simultaneidade estruturada e é mais fácil de entender (I4a3a8).
  • ProcessLifecycleInitializer se tornou público para que outros androidx.startup.Initializers possam usá-los como dependências (I94c31).

Correções de bugs

  • Correção de um problema com a verificação de lint NullSafeMutableLiveData quando o campo tem modificadores (147 (link em inglês), b/183696616).
  • Outro problema com a verificação de lint NullSafeMutableLiveData ao 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 (link em inglês), 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-process agora usa androidx.startup para inicializar o ProcessLifecycleOwner.

    Anteriormente, isso era feito pelo androidx.lifecycle.ProcessLifecycleOwnerInitializer.

    Se você usava tools:node="remove", o ContentProvider que era usado para inicializar o ciclo de vida do processo anteriormente, 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.flowWithLifecycle que emite valores do fluxo upstream quando o ciclo de vida fica pelo menos em um determinado estado usando a API Lifecycle.repeatOnLifecycle. Essa é uma alternativa à nova API LifecycleOwner.addRepeatinJob (I0f4cd).

Correções de bugs

  • No Lifecycle 2.3.1: a regra de lint NonNullableMutableLiveData agora 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 um ViewModelStoreOwner opcional, facilitando o trabalho com proprietários diferentes de LocalViewModelStoreOwner. Por exemplo, agora você pode usar viewModel(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-beta07 do 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-compose e androidx.navigation:navigation-compose sincronizem dependências em androidx.compose.compiler:compiler:1.0.0-beta04 e androidx.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.current agora retorna um ViewModelStoreOwner anulável para determinar melhor se um ViewModelStoreOwner está disponível na composição atual. As APIs que exigem um ViewModelStoreOwner, como viewModel() e NavHost, ainda geram uma exceção se um ViewModelStoreOwner nã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

  • LocalViewModelStoreOwner agora tem uma função provides que pode ser usada com o CompositionLocalProvider, substituindo a API asProvidableCompositionLocal() (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 que pode ser composta viewModel() e o LocalViewModelStoreOwner foram movidos de androidx.compose.ui.viewinterop para este artefato no pacote androidx.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 NonNullableMutableLiveData agora 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

  • Compatibilidade com SavedStateHandle para classes não comparáveis: SavedStateHandle agora é compatível com a serialização lenta, permitindo chamar setSavedStateProvider() para determinada chave, fornecendo um SavedStateProvider que receberá um callback para saveState() quando for solicitado que o SavedStateHandle salve o estado dele. Consulte Salvar classes não comparáveis.
  • Aplicação do comportamento do ciclo de vida:
    • O LifecycleRegistry agora aplica o DESTROYED como um estado terminal.
    • LifecycleRegistry agora 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 objetos LifecycleRegistry que pertencem aos seus componentes, você pode desativar explicitamente as verificações usando LifecycleRegistry.createUnsafe(...). Mas é necessário garantir que haja uma sincronização adequada quando LifecycleRegistry é acessado de diferentes linhas de execuçã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) a Lifecycle.Event para gerar o Event com um State e uma direção de transição. O método getTargetState() que fornece o State para o qual o Lifecycle mudará diretamente após o Event foi adicionado.
  • withStateAtLeast: foram adicionadas APIs Lifecycle.withStateAtLeast que 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étodos when* 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 APIs ViewTreeLifecycleOwner.get(View) e ViewTreeViewModelStoreOwner.get(View) permitem que você extraia, respectivamente, o LifecycleOwner e o ViewModelStoreOwner contidos de uma instância View. É necessário fazer upgrade para Activity 1.2.0, Fragment 1.3.0 e AppCompat 1.3.0-alpha01 ou mais recente para que o preenchimento automático seja feito de forma correta. As extensões Kotlin findViewTreeLifecycleOwner e findViewTreeViewModelStoreOwner estão disponíveis em lifecycle-runtime-ktx e lifecycle-viewmodel-ktx, respectivamente.
  • Descontinuação da extensão Kotlin LiveData.observe(): a extensão Kotlin LiveData.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() de SavedStateHandle agora é consistente antes e depois de o estado ser salvo. Agora, ele inclui chaves usadas anteriormente com setSavedStateProvider() além das chaves usadas com set() e getLiveData() (aosp/1517919, b/174713653).

Contribuição externa

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

Mudanças na documentação

  • O builder liveData e os documentos asLiveData() 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) a Lifecycle.Event para gerar o Event com um State e uma direção de transição. O método getTargetState() que fornece o State para qual o Lifecycle mudará diretamente depois do Event foi adicionado (I00887).
  • Adição de APIs Lifecycle.withStateAtLeast que 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étodos when* 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 DESTROYED como um estado terminal (I00887).
  • LifecycleRegistry agora 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 objetos LifecycleRegistry que pertencem aos seus componentes, você pode desativar explicitamente as verificações com o uso de LifecycleRegistry.createUnsafe(...). Mas é necessário garantir que haja uma sincronização adequada quando o LifecycleRegistry é acessado de diferentes linhas de execução (Ie7280, b/137392809).

Correções de bugs

  • Correção de uma falha em NullSafeMutableLiveData (b/159987480).
  • Uma ObsoleteLintCustomCheck para verificações de lint empacotadas com lifecycle-livedata-core-ktx e especificamente com NullSafeMutableLiveData foi 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

  • LiveData agora lida melhor com casos reentrantes, evitando chamadas duplicadas para onActive() ou onInactive() (b/157840298).
  • Um problema em que as verificações de lint não eram executadas ao usar o Android Studio 4.1 Canary 6 ou uma versão mais recente foi corrigido (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 NonNullableMutableLiveData agora abrange um número significativamente maior de casos em que o valor null era definido em um MutableLiveData com 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

  • SavedStateHandle agora é compatível com a serialização lenta, permitindo que você chame setSavedStateProvider() para determinada chave, fornecendo um SavedStateProvider que receberá um callback para saveState() quando for solicitado que SavedStateHandle salve o estado dele (b/155106862).
  • Uma nova API ViewTreeViewModelStoreOwner.get(View) permite que você extraia o ViewModelStoreOwner contido de uma instância View. É necessário fazer upgrade para Activity 1.2.0-alpha05, Fragment 1.3.0-alpha05 e AppCompat 1.3.0-alpha01 para preencher corretamente. Uma extensão Kotlin findViewModelStoreOwner() foi adicionada a lifecycle-viewmodel-ktx (aosp/1295522).

Correções de bugs

  • Um problema que fazia com que as verificações de Lint MutableLiveData lançadas no Lifecycle 2.3.0-alpha01 fossem publicadas usando o artefato lifecycle-livedata-core-ktx foi 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

  • SavedStateViewModelFactory agora permite que você transmita um Application nulo ao construtor para históricos de consulta melhores em que um deles não está disponível rapidamente e o suporte para AndroidViewModel nã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 o LifecycleOwner contido de uma instância View. É necessário fazer upgrade para Activity 1.2.0-alpha01 e Fragment 1.3.0-alpha01 para preencher corretamente. Uma extensão findViewTreeLifecycleOwner do Kotlin está disponível em lifecycle-runtime-ktx (aosp/1182361, aosp/1182956).
  • Adição de uma nova verificação do Lint que avisa quando você define um valor null em um MutableLiveData definido no Kotlin como não nulo. Isso está disponível ao usar os artefatos livedata-core-ktx ou livedata-ktx (aosp/1154723, aosp/1159092).
  • Um novo artefato lifecycle-runtime-testing está disponível e fornece um TestLifecycleOwner que implementa LifecycleOwner e fornece um Lifecycle seguro e mutável da linha de execução (aosp/1242438).

Correções de bugs

  • O artefato lifecycle-runtime agora 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-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 transmitir um Fragment ou FragmentActivity para o novo construtor ViewModelProvider(ViewModelStoreOwner) para ter a mesma funcionalidade ao usar o Fragment 1.2.0.
  • Descontinuação do artefato lifecycle-extensions: com a descontinuação do ViewModelProviders.of() descrita acima, esta versão marca a descontinuação da última API em lifecycle-extensions e esse artefato agora será considerado completamente descontinuado. É 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 de programação Java 8, você poderá usar DefautLifecycleObserver. Se ele tiver sido programado com a linguagem de programação Java 7, você poderá usar LifecycleEventObserver.

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

  • Uma falha que ocorria quando um ViewModel simulado era armazenado em ViewModelStore e consultado com a fábrica padrão foi corrigida.
  • 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).

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

  • 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).

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

  • 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 foi corrigida (aosp/1128132).
  • 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 do lifecycle-process foi corrigida (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, viewModelScope e a implementação de liveData agora usam Dispatchers.Main.immediate em vez de Dispatchers.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

Mudanças na API

  • ViewModelProviders.of() foi descontinuado. Você pode transmitir um Fragment ou FragmentActivity ao novo construtor ViewModelProvider(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 (em inglês).

Mudanças na API

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

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 compatibilidade com 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 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 por fragmentos 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 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 alterações desde 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

  • O problema ao acessar um ViewModel de SavedState pela primeira vez em Activity.onActivityResult() que resultava em uma IllegalStateException foi corrigido (b/139093676).
  • Uma IllegalStateException ao usar AbstractSavedStateViewModelFactory foi 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

  • SavedStateViewModelFactory não estende mais AbstractSavedStateViewModelFactory, e SavedStateHandle é 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

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

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

  • O LifecycleEventObserver foi 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 classe GenericLifecycleObserver oculta.
  • Extensões ktx foram adicionadas para os métodos LiveData.observe e Transformations.*.
  • Transformations.distinctUntilChanged, que cria um novo objeto LiveData que não emite um valor até que o valor LiveData de origem tenha sido alterado foi adicionado.
  • A compatibilidade com a corrotina em ViewModels, incluindo a propriedade de extensão ViewModel.viewModelScope, foi adicionada.

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 alterações 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 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 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 a by activityViewModels() mudou para ser diretamente compatível com uma 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 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.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 de androidx.lifecycle 2.1.0-alpha02.

Mudanças na API

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

Correções de bugs

  • Um problema que fazia com que instâncias ViewModel fictícias falhassem quando o ViewModelStore era liberado foi corrigido 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 LifecycleEventObserver foi 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 classe GenericLifecycleObserver oculta.
  • Extensões ktx foram adicionadas para os métodos LiveData.observe e Transformations.*.
  • O método Transformations.distinctUntilChanged foi adicionado. Ele cria um novo objeto LiveData que não emite valores até que o valor LiveData de origem mude.
  • Compatibilidade de corrotinas em ViewModels: a propriedade da extensão ViewModel.viewModelScope foi adicionada.
  • ViewModelProvider.KeyedFactory, uma fábrica para ViewModels que recebe key e Class no método create foi adicionada.

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 a 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 construtor ViewModelProviders foi descontinuado. Use os métodos estáticos dele diretamente.
  • O uso de ViewModelProviders.DefaultFactory foi suspenso. Use ViewModelProvider.AndroidViewModelFactory
  • Adição do método ViewModelProvider.AndroidViewModelFactory.getInstance(Application) estático para recuperar uma Factory estática adequada para criar instâncias ViewModel e AndroidViewModel.