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.5.1 - - 2.6.0-alpha03
lifecycle-viewmodel-compose 2.5.1 - - 2.6.0-alpha03
Última atualização desta biblioteca: 24 de outubro 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 build.

Feedback

Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.

Criar novo problema

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

Versão 2.6

Versão 2.6.0-alpha03

24 de outubro de 2022

Lançamento de androidx.lifecycle:lifecycle-*:2.6.0-alpha03. A versão 2.6.0-alpha03 contém estas confirmações.

Correções de bugs

  • Corrigido um problema com restrições entre diferentes módulos do Lifecycle que não funcionavam conforme o esperado (I18d0d, b/249686765).
  • Os erros gerados por LifecycleRegistry.moveToState() agora incluem uma mensagem de erro mais útil que informa aos desenvolvedores o componente que causa o erro (Idf4b2, b/244910446).

Versão 2.6.0-alpha02

7 de setembro de 2022

Lançamento de androidx.lifecycle:lifecycle-*:2.6.0-alpha02. A versão 2.6.0-alpha02 contém estas confirmações.

Mudanças na API

  • MediatorLiveData agora inclui um construtor para definir um valor inicial (Ib6cc5, b/151244085).

Correções de bugs

  • Os artefatos Lifecycle agora incluem restrições (link em inglês) que garantem que todos os artefatos do ciclo de vida que são interdependentes usem a mesma versão, fazendo upgrade automático de outras dependências quando um for atualizado b/242871265.
  • FlowLiveData.asFlow() agora cria um callbackFlow em vez de usar a própria implementação do Channel para garantir a segurança de linhas de execução e a preservação de contexto (I4a8b2, b/200596935).
  • A função asLiveData do FlowLiveData agora preserva o valor inicial de um StateFlow ao criar o novo objeto LiveData (I3f530, b/157380488).
  • Do Lifecycle 2.5.1: as implementações personalizadas de AndroidViewModelFactory agora chamam corretamente a função create(modelClass) ao usar o construtor com estado com o Lifecycle 2.4 ou versões mais recentes (I5b315, b/238011621).

Versão 2.6.0-alpha01

29 de junho de 2022

androidx.lifecycle:lifecycle-*:2.6.0-alpha01 é lançado. A versão 2.6.0-alpha01 contém estas confirmações.

Novos recursos

  • Adicionada uma nova extensão no StateFlow e Flow de collectAsStateWithLifecycle, que realiza as coletas dos fluxos e representa o valor mais recente dele como estado do Compose, considerando o ciclo de vida. O fluxo é coletado, e a nova emissão é definida como o valor do estado quando o ciclo de vida está pelo menos em um determinado Lifecycle.State. Quando o ciclo de vida fica abaixo desse Lifecycle.State, a coleta do fluxo é interrompida, e o valor do estado não é atualizado (I1856e, b/230557927).

Versão 2.5

Versão 2.5.1

27 de julho de 2022

Lançamento de androidx.lifecycle:lifecycle-*:2.5.1. A versão 2.5.1 contém estas confirmações.

Correções de bugs

  • As implementações personalizadas de AndroidViewModelFactory agora chamam corretamente a função create(modelClass) ao usar o construtor AndroidViewModelFactory com estado com o Lifecycle 2.4 ou mais recente (I5b315, b/238011621).

Versão 2.5.0

29 de junho de 2022

Lançamento de androidx.lifecycle:lifecycle-*:2.5.0. A versão 2.5.0 contém estas confirmações.

Mudanças importantes desde a versão 2.4.0

  • O parâmetro SavedStateHandle agora oferece uma API getStateFlow() que retorna um StateFlow do Kotlin para monitorar mudanças de valor como umaalternativa ao uso de LiveData.

  • ViewModel CreationExtras: ao gravar um ViewModelProvider.Factory personalizado, não é mais necessário estender AndroidViewModelFactory ou AbstractSavedStateViewModelFactory para ter acesso a um Application ou SavedStateHandle, respectivamente. Em vez disso, esses campos são fornecidos a todas as subclasses ViewModelProvider.Factory como CreationExtras com a nova sobrecarga de create: create(Class<T>, CreationExtras). Esses extras são fornecidos automaticamente pela atividade ou pelo fragmento ao usar a Activity 1.5.0 e o Fragment 1.5.0, respectivamente.

    class CustomFactory : ViewModelProvider.Factory {
        override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
            return when (modelClass) {
                HomeViewModel::class -> {
                    // Get the Application object from extras
                    val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY])
                    // Pass it directly to HomeViewModel
                    HomeViewModel(application)
                }
                DetailViewModel::class -> {
                    // Create a SavedStateHandle for this ViewModel from extras
                    val savedStateHandle = extras.createSavedStateHandle()
                    DetailViewModel(savedStateHandle)
                }
                else -> throw IllegalArgumentException("Unknown class $modelClass")
            } as T
        }
    }
    
  • O lifecycle-viewmodel agora fornece uma DSL viewModelFactory do Kotlin que permite definir seu ViewModelProvider.Factory em termos de um ou mais inicializadores de lambda, um para cada classe ViewModel com suporte para a fábrica personalizada, usando CreationExtras como a fonte de dados principal.

    val customFactory = viewModelFactory {
        // The return type of the lambda automatically sets what class this lambda handles
        initializer {
            // Get the Application object from extras provided to the lambda
            val application = checkNotNull(get(ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY))
            HomeViewModel(application)
        }
        initializer {
            val savedStateHandle = createSavedStateHandle()
            DetailViewModel(savedStateHandle)
        }
    }
    
  • O lifecycle-viewmodel-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.

    // Within a @Composable, you can now skip writing a custom Factory
    // and instead write a lambda to do the initialization of your ViewModel
    val detailViewModel = viewModel {
      // This lambda is only called the first time the ViewModel is created
      // and all CreationExtras are available inside the lambda
      val savedStateHandle = createSavedStateHandle()
      DetailViewModel(savedStateHandle)
    }
    
  • Integração do SavedStateHandle para economia no Compose: o artefato lifecycle-viewmodel-compose agora contém novas APIs experimentais em SavedStateHandle.saveable que permitem um comportamento similar ao rememberSaveable apoiado pelo SavedStateHandle de um ViewModel.

    class ListScreenViewModel(handle: SavedStateHandle): ViewModel() {
        // This value survives both configuration changes and process death and recreation
        val editMode by handle.saveable { mutableStateOf(false) }
    }
    
  • Adicionamos uma API addCloseable() e uma nova sobrecarga de construtor que permite adicionar um ou mais objetos Closeable ao ViewModel que são fechados quando o ViewModel é apagado sem exigir trabalhos manuais em onCleared().

    Por exemplo, para criar um escopo de corrotina que possa ser injetado em um ViewModel e controlado por testes, você pode criar um CoroutineScope que implemente Closeable:

    class CloseableCoroutineScope(
        context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate
    ) : Closeable, CoroutineScope {
        override val coroutineContext: CoroutineContext = context
        override fun close() {
            coroutineContext.cancel()
       }
    }
    

    Ele pode ser usado no construtor ViewModel e manter o mesmo ciclo de vida do viewModelScope:

    class TestScopeViewModel(
        val customScope: CloseableCoroutineScope = CloseableCoroutineScope()
    ) : ViewModel(customScope) {
        // You can now use customScope in the same way as viewModelScope
    }
    

Mudanças de comportamento

  • A tentativa de mover o Lifecycle.State de INITIALIZED para DESTROYED agora sempre vai gerar uma IllegalStateException, independentemente do Lifecycle ter um observador anexado.
  • O LifecycleRegistry agora vai limpar os observadores quando alcançarem o estado DESTROYED.

Versão 2.5.0-rc02

15 de junho de 2022

Lançamento de androidx.lifecycle:lifecycle-*:2.5.0-rc02. A versão 2.5.0-rc02 contém estas confirmações.

Correções de bugs

  • A classe ViewModelProvider não vai mais falhar ao combinar versões anteriores de dependências compileOnly Lifecycle com a versão 2.5 ou mais recentes (I81a66, b/230454566).

Versão 2.5.0-rc01

11 de maio de 2022

Lançamento de androidx.lifecycle:lifecycle-*:2.5.0-rc01. A versão 2.5.0-rc01 contém estas confirmações.

Correções de bugs

  • MediatorLiveData.addSource() agora gera uma NullPointerException quando recebe uma origem null em vez de propagar essa origem null para os observadores (Ibd0fb, b/123085232).

Versão 2.5.0-beta01

20 de abril de 2022

Lançamento de androidx.lifecycle:lifecycle-*:2.5.0-beta01. A versão 2.5.0-beta01 contém estas confirmações.

Mudanças na API

  • Adicionados delegados de propriedade SavedStateHandle.saveable para usar nomes de propriedades como chaves a fim de 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 a 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

  • SavedStateViewFactory agora oferece suporte ao uso de CreationExtras, mesmo quando 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

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

  • Corrigido 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. 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 do 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 uso de @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 método ViewModelProvider.Factory.create 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á pelo menos em 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 a lifecycle.lifecycle-common. Portanto, a dependência dele pode ser substituída por 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", a classe ContentProvider que era usada para inicializar o ciclo de vida do processo, será necessário fazer o seguinte:

     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.lifecycle.ProcessLifecycleInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

    (ou)

     <!-- If you want to disable androidx.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

Versão 2.4.0-rc01

29 de setembro de 2021

Lançamento de androidx.lifecycle:lifecycle-*:2.4.0-rc01 sem alterações do Lifecycle 2.4.0-beta01. A versão 2.4.0-rc01 contém estas confirmações.

Versão 2.4.0-beta01

15 de setembro de 2021

Lançamento de androidx.lifecycle:lifecycle-*:2.4.0-beta01. A versão 2.4.0-beta01 contém estas confirmações.

Mudanças na API

  • O uso de @OnLifecycleEvent foi descontinuado. Use a interface LifecycleEventObserver ou a 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 a androidx.lifecycle.lifecycle-common. Portanto, a dependência dele pode ser substituída por 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 não permite mais o uso de genéricos anuláveis. (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).
  • O ProcessLifecycleInitializer agora é público para que possa ser usado como dependência por outros androidx.startup.Initializers (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", a classe ContentProvider que era usada para inicializar o ciclo de vida do processo, será necessário fazer o seguinte:

     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.lifecycle.ProcessLifecycleInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

    (ou)

     <!-- If you want to disable androidx.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

Mudanças na API

  • Uma nova API Flow.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 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 de composição 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

  • Suporte de SavedStateHandle aclasses não comparáveis: SavedStateHandle agora oferece suporte 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 esse 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).
  • Corrigido um problema em que as verificações de lint não eram executadas ao usar o Android Studio 4.1 Canary 6 ou versão mais recente (aosp/1331903).

Versão 2.3.0-alpha04

10 de junho de 2020

Lançamento de androidx.lifecycle:lifecycle-*:2.3.0-alpha04. A versão 2.3.0-alpha04 contém estas confirmações.

Correções de bugs

  • Correção de uma falha na verificação de lint NonNullableMutableLiveData (b/157294666).
  • A verificação de lint 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 oferece suporte 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.
  • Descontinuação do ViewModelProviders.of(): o uso do ViewModelProviders.of() foi descontinuado. Você pode transmitir um Fragment ou FragmentActivity ao novo construtor ViewModelProvider(ViewModelStoreOwner) para ter a mesma funcionalidade quando 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ê pode usar DefautLifecycleObserver. Se ele tiver sido programado com a linguagem de programação Java 7, você pode 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

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

Contribuições externas

  • Agradecemos a Anders Järleberg por contribuir com a correção (aosp/1156203).
  • Agradecemos a Vsevolod Tolstopyatov, da Jetbrains, por revisar uma implementação de execução in-line.

Mudanças na dependência

  • As extensões do Lifecycle agora dependem do Fragment 1.2.0-rc03.

Versão 2.2.0-rc02

7 de novembro de 2019

androidx.lifecycle:lifecycle-*:2.2.0-rc02 é lançado. A versão 2.2.0-rc02 contém estas confirmações.

Correções de bugs

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

Versão 2.2.0-rc01

23 de outubro de 2019

Lançamento de androidx.lifecycle:lifecycle-*:2.2.0-rc01. A versão 2.2.0-rc01 contém estas confirmações.

Correções de bugs

  • Foi corrigido um problema em que launchWhenCreated e métodos relacionados executavam um frame depois do 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

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

Versão 2.2.0-alpha05

18 de setembro de 2019

Lançamento de androidx.lifecycle:lifecycle-*:2.2.0-alpha05. A versão 2.2.0-alpha05 contém estas confirmações.

Correções de bugs

  • Uma disputa no builder da corrotina livedata foi corrigida b/140249349.

Versão 2.2.0-alpha04

5 de setembro de 2019

Lançamento de androidx.lifecycle:lifecycle-*:2.2.0-alpha04. As confirmações incluídas nessa versão podem ser encontradas neste link.

Novos recursos

  • lifecycleScope, whenCreated, whenStarted, whenResumed, 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 incluir suporte a corrotinas do Kotlin para Lifecycle e LiveData. A documentação detalhada sobre eles pode ser encontrada neste link.

ViewModel-SavedState Versão 1.0.0

Versão 1.0.0

22 de janeiro de 2020

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

Recursos importantes da versão 1.0.0

  • Adição da nova classe SavedStateHandle. Ela permite que as classes 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 vão injetar SavedStateHandle automaticamente.
  • Adição de AbstractSavedStateViewModelFactory. Ela permite que você crie fábricas personalizadas para ViewModel e forneça acesso a 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

  • Corrigido um problema ao acessar um ViewModel de SavedState pela primeira vez em Activity.onActivityResult() que resultava em uma IllegalStateException (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.
  • Adicionadas extensões ktx 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 versões 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.
  • Adicionadas extensões ktx 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.
  • Adicionado suporte de corrotinas em ViewModels: a propriedade da extensão ViewModel.viewModelScope foi adicionada.
  • Adicionada ViewModelProvider.KeyedFactory, uma fábrica para ViewModels que recebe key e Class no método create.

Versão 2.0.0

Versão 2.0.0

21 de setembro de 2018

A versão 2.0.0 foi lançada com uma correção de bug de 2.0.0-rc01 em ViewModel.

Correções de bugs

  • Correção de uma regra Proguard do ViewModel que removia incorretamente os construtores. b/112230489

Versão 2.0.0-beta01

2 de julho de 2018

Correções de bugs

  • A regra Proguard do LifecycleObserver foi corrigida para manter apenas implementações, e não subinterfaces b/71389427.
  • As regras Proguard do ViewModel foram corrigidas para permitir ofuscação e redução.

Versões anteriores ao AndroidX

Para as seguintes versões do Lifecycle anteriores ao AndroidX, inclua estas dependências:

dependencies {
    def lifecycle_version = "1.1.1"

    // ViewModel and LiveData
    implementation "android.arch.lifecycle:extensions:$lifecycle_version"
    // alternatively - just ViewModel
    implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
    // alternatively - just LiveData
    implementation "android.arch.lifecycle:livedata:$lifecycle_version"
    // alternatively - Lifecycles only (no ViewModel or LiveData).
    //     Support library depends on this lightweight import
    implementation "android.arch.lifecycle:runtime:$lifecycle_version"

    annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
    // alternately - if using Java8, use the following instead of compiler
    implementation "android.arch.lifecycle:common-java8:$lifecycle_version"

    // optional - ReactiveStreams support for LiveData
    implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"

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

Versão 1.1.1

21 de março de 2018

Só uma pequena mudança: android.arch.core.util.Function foi movida de arch:runtime para arch:common. Isso possibilita o uso sem a dependência de execução, por exemplo, em paging:common abaixo.

lifecycle:common é uma dependência de lifecycle:runtime. Por esse motivo, essa mudança não afeta lifecycle:runtime diretamente, mas apenas os módulos que dependem diretamente de lifecycle:common, como, por exemplo, Paging.

Versão 1.1.0

22 de janeiro de 2018

Mudanças no empacotamento

Novas dependências muito menores agora estão disponíveis:

  • android.arch.lifecycle:livedata:1.1.0
  • android.arch.lifecycle:viewmodel:1.1.0

Mudanças na API

  • Os LifecycleActivity e LifecycleFragment obsoletos foram descontinuados. Use FragmentActivity, AppCompatActivity ou ofereça suporte a 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.
  • Adicionado o método ViewModelProvider.AndroidViewModelFactory.getInstance(Application) estático para recuperar uma Factory estática adequada para criar instâncias ViewModel e AndroidViewModel.