The Android Developer Challenge is back! Submit your idea before December 2.

Lifecycle

Los componentes optimizados para Lifecycle realizan acciones como respuesta a un cambio en el estado del ciclo de vida de otro componente, como actividades o fragmentos. Estos componentes te ayudan a crear un código mejor organizado, y a menudo más liviano, que resulta más fácil de mantener. Consulta los documentos de referencia para obtener más información.

Cómo declarar dependencias

Para agregar una dependencia en Lifecycle, debes agregar el repositorio de Maven de Google a tu proyecto. Lee el repositorio de Maven de Google para obtener más información al respecto.

Agrega las dependencias de los artefactos que necesitas en el archivo build.gradle para tu app o módulo.

dependencies {
        def lifecycle_version = "2.0.0"

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

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

        // optional - ReactiveStreams support for LiveData
        implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version" // For Kotlin use lifecycle-reactivestreams-ktx

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

Para obtener más información acerca de las dependencias, consulta Cómo agregar dependencias de compilación.

Versión 2.2.0-alpha03

7 de agosto de 2019

Lanzamiento de androidx.lifecycle:lifecycle-*:2.2.0-alpha03. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Nuevas funciones

Cambios en la API

  • Se dio de baja ViewModelProviders.of(). Puedes pasar un Fragment o una FragmentActivity al nuevo ViewModelProvider(ViewModelStoreOwner) para lograr la misma funcionalidad (aosp/1009889).

ViewModel-SavedState versión 1.0.0-alpha03

7 de agosto de 2019

Lanzamiento de androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Cambios rotundos

Versión 2.2.0-alpha02

2 julio de 2019

Lanzamiento de androidx.lifecycle:*:2.2.0-alpha02. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Cambios en la API

  • Se reemplazó LiveDataScope.initialValue por LiveDataScope.latestValue, que realizará un seguimiento del valor actual emitido del bloque liveData.
  • Se agregó una nueva sobrecarga al compilador de liveData, que recibe el parámetro timeout como de tipo Duration.

ViewModel-SavedState versión 1.0.0-alpha02

2 julio de 2019

Lanzamiento de androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Nuevas funciones

  • Se agregó sobrecarga de SavedStateHandle.getLiveData(), que acepta un valor predeterminado.

Cambios en la API

  • Se cambió el nombre de SavedStateVMFactory por SavedStateViewModelFactory.
  • Se cambió el nombre de AbstractSavedStateVMFactory por AbstractSavedStateViewModelFactory.

Versión 2.1.0-rc01

2 julio de 2019

Lanzamiento de androidx.lifecycle:*:2.1.0-rc01 sin modificaciones desde androidx.lifecycle:*:2.1.0-beta01. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Versión 2.2.0-alpha01

7 de mayo de 2019

Lanzamiento de androidx.lifecycle:*:2.2.0-alpha01. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Nuevas funciones

  • Esta versión cuenta con nuevas funciones que brindan compatibilidad con las corrutinas de Kotlin para Lifecycle y LiveData. Aquí encontrarás documentación detallada sobre estas.

Versión 2.1.0-beta01

7 de mayo de 2019

Lanzamiento de androidx.lifecycle:*:2.1.0-beta01. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Nuevas funciones

  • Se cambia la versión de Lifecycle a Beta: Se estabilizan las API introducidas en las versiones Alfa anteriores, como las funciones de extensión de liveData para transformaciones y observaciones, la inicialización de ViewModel con delegación de propiedades y otras, que no se modificarán.

Versión 2.1.0-alpha04

3 de abril de 2019

Lanzamiento de androidx.lifecycle:*:2.1.0-alpha04. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Cambios en la API

  • Cambio rotundo: Se cambió la API subyacente detrás de by viewModels() y by activityViewModels() para admitir directamente una ViewModelStore, en lugar de solo un ViewModelStoreOwner (aosp/932932).

ViewModel Savedstate versión 1.0.0-alpha01

13 de marzo de 2019

Lanzamiento de androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01. Para obtener el registro completo de confirmaciones para esta versión inicial, consulta este artículo.

Nuevas funciones

  • Ahora los ViewModels pueden contribuir con savedstate. Para hacerlo, usa la clase predeterminada SavedStateVMFactory, recientemente introducida, y tu ViewModel debería tener un constructor que reciba el objeto SavedStateHandle como parámetro.

Versión 2.1.0-alpha03

13 de marzo de 2019

Lanzamiento de androidx.lifecycle:*:2.1.0-alpha03. Para obtener una lista completa de las confirmaciones incluidas en esta versión, consulta este artículo.

Cambios en la API

  • Se quitó ViewModelProvider.KeyedFactory. La segunda interfaz, además de ViewModelProvider.Factory, no se ejecutaba correctamente con las nuevas funciones, como delegación de propiedades en by viewmodels {} de Kotlin (aosp/914133).

Versión 2.1.0-alpha02

30 de enero de 2019

Lanzamiento de androidx.lifecycle 2.1.0-alpha02.

Cambios en la API

  • Ahora LifecycleRegistry contiene un método setCurrentState() que reemplaza al método setState() obsoleto (aosp/880715).

Correcciones de errores

  • Se solucionó un problema en el que fallaban las instancias simuladas de ViewModel cuando se borraba la ViewModelStore que las contenía (b/122273087).

Versión 2.1.0-alpha01

17 de diciembre de 2018

Lanzamiento de androidx.lifecycle 2.1.0-alpha01.

Nuevas funciones

  • Se agregó LifecycleEventObserver para los casos en que se necesita una secuencia de eventos de lifecycle. Es una API pública, en lugar de una clase GenericLifecycleObserver oculta.
  • Se agregaron extensiones ktx para los métodos LiveData.observe y Transformations.*.
  • Se agregó el método Transformations.distinctUntilChanged. Permite crear un nuevo objeto de LiveData que no emite ningún valor hasta que se cambia el valor de origen de LiveData.
  • Compatibilidad con corrutinas en ViewModels: Se agregó la propiedad de extensión ViewModel.viewModelScope.
  • Se agregó ViewModelProvider.KeyedFactory, una fábrica para ViewModels que recibe key y Class en el método create.

Versión 2.0.0

21 de septiembre de 2018

Lanzamiento de Lifecycle 2.0.0 con una corrección de errores desde 2.0.0-rc01 en ViewModel.

Correcciones de errores

  • Se corrigió un error de ProGuard de ViewModel que quitaba constructores de manera incorrecta b/112230489

Versión 2.0.0-beta01

2 de julio de 2018

Correcciones de errores

  • Se corrigió la regla ProGuard de LifecycleObserver solo para mantener implementaciones, y no subinterfaces. b/71389427
  • Se corrigieron las reglas ProGuard de ViewModel para permitir la ofuscación y la contracción.

Dependencias anteriores a AndroidX

Para las siguientes versiones de Lifecycle anteriores a AndroidX, incluye estas dependencias:

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

Versión 1.1.1

21 de marzo de 2018

Solo un pequeño cambio: Se movió android.arch.core.util.Function de arch:runtime a arch:common. Esto permite usarla sin la dependencia del tiempo de ejecución, p. ej., en paging:common a continuación.

lifecycle:common es una dependencia de lifecycle:runtime, de manera que este cambio no afecta a lifecycle:runtime directamente, sino que solo afecta a los módulos que dependen de manera directa de lifecycle:common, como sucede con Paging.

Versión 1.1.0

22 de enero de 2018

Cambios de empaquetado

Ahora hay dependencias nuevas y mucho más pequeñas disponibles:

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

Cambios en la API

  • Se quitaron LifecycleActivity y LifecycleFragment, ya que dejaron de estar disponibles. En su lugar, usa FragmentActivity, AppCompatActivity, o asegúrate de que Fragment sea compatible.
  • Se agregaron anotaciones de @NonNull a ViewModelProviders y ViewModelStores.
  • El constructor ViewModelProviders dejó de estar disponible. Usa sus métodos estáticos directamente.
  • ViewModelProviders.DefaultFactory dejó de estar disponible. Usa ViewModelProvider..AndroidViewModelFactory
  • Se agregó el método ViewModelProvider.AndroidViewModelFactory.getInstance(Application) estático para recuperar un Factory estático apto para la creación de instancias ViewModel y AndroidViewModel.