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 Candidata a lançamento Versão Beta Versão Alfa
lifecycle-* 2.4.1 - 2.5.0-beta01 -
lifecycle-viewmodel-compose 2.4.1 - 2.5.0-beta01 -
Esta biblioteca foi atualizada em 20 de abril de 2022

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

Criar novo problema

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

Versão 2.5

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

  • Delegados de propriedade SavedStateHandle.saveable foram adicionados para usar nomes de propriedades como chaves para manter o estado no SavedStateHandle (I8bb86, b/225014345).

Correções de bugs

  • Foi corrigido um problema em que aninhar um NavHost em outro NavHost em uma guia de navegação inferior não principal causava uma IllegalStateException ao 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 MutableState foi adicionada ao SavedStateHandle.saveable para paridade com rememberSaveable (I38cfe, b/224565154).

Mudanças na API

  • CreationExtras agora é abstrato em vez de selado (Ib8a7a).

Correções de bugs

  • Um erro IllegalStateException: Already attached to lifecycleOwner causado por SavedStateHandleController foi 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-compose agora fornece o SavedStateHandleSaver, uma API experimental que garante que os valores em um SavedStateHandle sejam integrados corretamente com o mesmo estado de instância salvo que o rememberSaveable usa (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 SavedStateViewFactory agora oferece suporte ao uso de CreationExtras mesmo quando foi inicializada com um SavedStateRegistryOwner. 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 SavedStateHandle agora oferece uma API getStateFlow() que retorna um StateFlow de Kotlin para monitorar mudanças de valor como uma alternativa ao uso de LiveData (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

  • Adicionamos uma API addCloseable() e uma nova sobrecarga de construtor que permite adicionar um ou mais objetos Closeable ao ViewModel que são fechados quando o ViewModel é apagado sem exigir trabalhos manuais em onCleared() (I55ea0).
  • lifecycle-viewmodel agora fornece uma InitializerViewModelFactory que permite adicionar a lambda para processar classes ViewModel particulares, usando CreationExtras como a fonte de dados principal (If58fc, b/216687549).
  • lifecycle-viewmodel-compose agora oferece uma API viewModel() que usa uma fábrica de lambdas para criar uma instância do ViewModel sem exigir a criação de uma ViewModelProvider.Factory personalizada (I97fbb, b/216688927).

Mudanças na API

  • Agora você pode criar um ViewModel com CreationExtras usando lifecycle-viewmodel-compose (I08887, b/216688927).

Mudanças de comportamento

  • A tentativa de mover o Lifecycle.State do INITIALIZED para o DESTROYED agora sempre gerará uma IllegalStateException, independentemente de Lifecycle ter um observador anexado (I7c390, b/177924329)
  • LifecycleRegistry agora vai limpar os observadores quando alcançarem o estado DESTROYED (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 SavedStateHandle e SavedStateViewModelFactory foram convertidas para Kotlin. Isso melhorou a nulidade do genérico nas duas (Ib6ce2, b/216168263, I9647a, b/177667711).
  • O parâmetro switchMap da função LiveData agora pode ter uma saída anulável (I40396, b/132923666).
  • As extensões LiveData -ktx agora são anotadas com @CheckResult para garantir que o resultado seja usado ao chamar essas funções (Ia0f05, b/207325134).

Mudanças de comportamento

  • A SavedStateHandle agora 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 de lifecycle-process para depender de Startup 1.1.1, garantindo que as correções que impedem a classe ProcessLifecycleInitializer de gerar uma StartupException fiquem disponíveis por padrão (Ib01df, b/216490724).
  • Agora, há uma mensagem de erro aprimorada quando as classes AndroidViewModel personalizadas têm parâmetros na ordem incorreta e tentam criar um ViewModel (I340f7, b/177667711).
  • Agora, você pode criar um modelo de visualização com CreationExtras usando o AndroidViewModelFactory sem 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: esta String fornece acesso à chave personalizada que você transmitiu para ViewModelProvider.get().
  • ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY fornece acesso à classe Application.
  • SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY fornece acesso ao SavedStateRegistryOwner usado para construir esse ViewModel.
  • SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY fornece acesso ao ViewModelStoreOwner usado para construir esse ViewModel.
  • SavedStateHandleSupport.DEFAULT_ARGS_KEY fornece acesso ao Bundle de argumentos que precisam ser usados para construir um SavedStateHandle.

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

  • Um problema em que o valor padrão fornecido para um SavedStateHandle reaparecia após a interrupção e a recriação do processo, mesmo que fosse especificamente removido do SavedStateHandle, foi corrigo. Como consequência, SavedStateHandle nã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 uma SavedStateHandle reaparecia após a interrupção e recriação do processo, mesmo que especificamente removido da SavedStateHandle. Como consequência, SavedStateHandle não mescla mais os valores padrão e restaurados, usando apenas os valores restaurados como a fonte da verdade (I53a4b).
  • lifecycle-process agora depende de Androidx Startup 1.1.1, que corrigiu a regressão quando o uso da classe ProcessLifecycleInitializer causava uma StartupException (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 @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

  • O @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 versões mais recentes para que o preenchimento 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 a interface ViewModelStoreOwner contida com 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 a interface LifecycleOwner contida com 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

  • O uso de 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.

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

  • 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.
  • 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 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 oferecer suporte direto a ViewModelStore, e não apenas a 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

  • Foi corrigido um problema que fazia com que instâncias fictícias de ViewModel falhassem quando a classe ViewModelStore era 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 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 descontinuado. 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.