Жизненный цикл

Компоненты с учетом жизненного цикла выполняют действия в ответ на изменение состояния жизненного цикла другого компонента, например действий и фрагментов. Эти компоненты помогают создавать более организованный и часто более легкий код, который легче поддерживать.

В этой таблице перечислены все артефакты группы androidx.lifecycle .

Артефакт Стабильный выпуск Релиз-кандидат Бета-версия Альфа-релиз
жизненный цикл-* 2.8.4 - - -
жизненный цикл-представление-модель-составление 2.8.4 - - -
Последнее обновление этой библиотеки: 24 июля 2024 г.

Объявление зависимостей

Чтобы добавить зависимость от Lifecycle, вам необходимо добавить в свой проект репозиторий Google Maven. Для получения дополнительной информации прочтите репозиторий Google Maven .

Добавьте зависимости для нужных вам артефактов в файл build.gradle для вашего приложения или модуля:

Котлин

классный

    dependencies {
        def lifecycle_version = "2.8.4"
        def arch_version = "2.2.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"
        // Lifecycle utilities for Compose
        implementation "androidx.lifecycle:lifecycle-runtime-compose:$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"

        // optional - Test helpers for Lifecycle runtime
        testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version"
    }
    

Котлин

    dependencies {
        val lifecycle_version = "2.8.4"
        val arch_version = "2.2.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")
        // Lifecycle utilities for Compose
        implementation("androidx.lifecycle:lifecycle-runtime-compose:$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")

        // optional - Test helpers for Lifecycle runtime
        testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version")
    }
    

Джава

классный

    dependencies {
        def lifecycle_version = "2.8.4"
        def arch_version = "2.2.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"

        // optional - Test helpers for Lifecycle runtime
        testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version"
    }
    

Котлин

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

        // optional - Test helpers for Lifecycle runtime
        testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version")
    }
    

Дополнительные сведения о зависимостях см. в разделе Добавление зависимостей сборки .

Обратная связь

Ваши отзывы помогают сделать Jetpack лучше. Дайте нам знать, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете добавить свой голос к существующей проблеме, нажав кнопку со звездочкой.

Создать новую задачу

Дополнительную информацию см. в документации по системе отслеживания проблем .

Версия 2.8

Версия 2.8.4

24 июля 2024 г.

Выпущен androidx.lifecycle:lifecycle-*:2.8.4 . Версия 2.8.4 содержит эти коммиты .

Исправление ошибок

  • LiveData.asFlow() теперь правильно обрабатывает случаи, когда возвращаемый Flow немедленно завершается после получения значения, уже установленного в LiveData (например, при использовании take(1) ). ( I9c566 )
  • Завершение Lifecycle*Effect теперь идемпотентно (т. е., если onStopOrDispose был вызван из-за остановки жизненного цикла, он не будет вызываться второй раз после удаления, если жизненный цикл снова не вернется к STARTED ). ( I5f607 , б/352364595 )

Версия 2.8.3

1 июля 2024 г.

Выпущен androidx.lifecycle:lifecycle-*:2.8.3 . Версия 2.8.3 содержит эти коммиты .

Исправление ошибок

  • Исправлена ​​проблема с обратной совместимостью Lifecycle 2.8 с Compose 1.6.0 и более ранними версиями при использовании сжатия кода. ( аосп/3133056 , б/346808608 )

Версия 2.8.2

12 июня 2024 г.

Выпущен androidx.lifecycle:lifecycle-*:2.8.2 . Версия 2.8.2 содержит эти коммиты .

Исправление ошибок

  • Исправлена ​​ошибка, из-за которой CompositionLocal LocalLifecycleOwner not present ошибки при использовании Lifecycle 2.8.X с Compose 1.6.X или более ранней версии — теперь вы можете использовать Lifecycle 2.8.2 с любой версией Compose без каких-либо обходных путей. ( аосп/3105647 , б/336842920 )
  • ViewModelProvider больше не будет аварийно завершать работу при смешивании предыдущих версий зависимостей жизненного цикла compileOnly с версиями 2.8+, что устраняет проблемы с такими библиотеками, как LeakCanary. ( I80383 , б/341792251 )

Версия 2.8.1

29 мая 2024 г.

Выпущен androidx.lifecycle:lifecycle-*:2.8.1 . Версия 2.8.1 содержит эти коммиты .

Исправление ошибок

  • lifecycle-viewmodel-compose теперь имеет только общую зависимость от compose-runtime , что устраняет общую зависимость от compose-ui . Артефакт Android сохраняет свой compose-ui для совместимости. ( аосп/3079334 , б/339562627 )
  • saveable интеграция ViewModel с использованием делегатов свойств теперь использует имя класса как часть автоматически создаваемого ключа, что позволяет избежать конфликтов, если несколько классов используют один и тот же SavedStateHandle . ( аосп/3063463 )

Версия 2.8.0

14 мая 2024 г.

Выпущен androidx.lifecycle:lifecycle-*:2.8.0 . Версия 2.8.0 содержит эти коммиты .

Важные изменения с версии 2.7.0

  • LocalLifecycleOwner был перенесен из пользовательского интерфейса Compose в lifecycle-runtime-compose , чтобы его вспомогательные API на основе Compose можно было использовать за пределами пользовательского интерфейса Compose.
  • Артефакт lifecycle-runtime-compose теперь содержит API-интерфейсы dropUnlessResumed и dropUnlessStarted , которые позволяют отбрасывать щелчки или другие события, которые происходят даже после того, как LifecycleOwner опустился ниже заданного Lifecycle.State . Например, это можно использовать с Navigation Compose, чтобы избежать обработки событий щелчка после того, как переход на другой экран уже начался: onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
  • ViewModel.viewModelScope теперь является переопределяемым параметром конструктора, позволяющим вам внедрить собственный диспетчер и SupervisorJob() или переопределить значение по умолчанию, используя backgroundScope , доступный в runTest . ( I2817c , б / 264598574 )

    class MyViewModel(
      // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate
      viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob()
    ) : ViewModel(viewModelScope) {
      // Use viewModelScope as before, without any code changes
    }
    
    // Allows overriding the viewModelScope in a test
    fun Test() = runTest {
      val viewModel = MyViewModel(backgroundScope)
    }
    
  • ViewModel была переписана на Kotlin и теперь использует AutoClosable вместо Closeable . Теперь он поддерживает добавление объектов AutoCloseable с key , который позволяет получить их с помощью getCloseable() .

  • Вызов LifecycleStartEffect и LifecycleResumeEffect без ключа теперь является ошибкой в ​​соответствии с тем же соглашением, что и API DisposableEffect , который отражают эти API.

  • LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) устарел в пользу LiveData.toPublisher(lifecycleOwner) .

  • Расширения kotlin lifecycle-livedata-core-ktx теперь перенесены в модуль lifecycle-livedata-core .

  • NullSafeMutableLiveData был переработан, чтобы избежать множества ложных срабатываний.

Многоплатформенная совместимость с жизненным циклом Kotlin

Основные API жизненного цикла в Lifecycle , LifecycleOwner , LifecycleObserver , Lifecycle.State , Lifecycle.Event и LifecycleRegistry теперь поставляются в виде артефактов, совместимых с Kotlin Multiplatform.

Затронутые артефакты:

  • lifecycle-common переводит большинство API в common и поддерживает jvm и iOS в дополнение к Android.
  • lifecycle-runtime переводит большинство API в common и поддерживает jvm и iOS в дополнение к Android.
  • lifecycle-runtime-ktx теперь пуст, и все API перенесены в lifecycle-runtime .
  • lifecycle-runtime-compose перемещает все API в common и отправляет артефакт Android, соответствующий многоплатформенной поддержке androidx.compose .

Многоплатформенная совместимость ViewModel Kotlin

Артефакт lifecycle-viewmodel и API-интерфейсы, такие как ViewModel , ViewModelStore , ViewModelStoreOwner и ViewModelProvider , теперь поставляются в виде артефактов, совместимых с Kotlin Multiplatform.

Чтобы учесть это изменение, такие методы, как методы ViewModelProvider , которые принимали java.lang.Class<T> , теперь имеют эквивалентный метод, который принимает kotlin.reflect.KClass<T> .

Бинарная совместимость на Android сохранена, но есть несколько заметных изменений при сравнении поверхности Android API с общей поверхностью API:

  • Создание экземпляра ViewModelProvider теперь выполняется с помощью методов ViewModelProvider.create() , а не непосредственного вызова его конструктора.
  • ViewModelProvider.NewInstanceFactory и ViewModelProvider.AndroidViewModelFactory доступны только на Android.
    • Пользовательские фабрики рекомендуется расширять из ViewModelProvider.Factory и использовать метод create , который принимает CreationExtras , или использовать viewModelFactory Kotlin DSL.
  • Использование ViewModelProvider без специальной фабрики на платформах, отличных от JVM, приведет к исключению UnsupportedOperationException . На платформах JVM совместимость сохраняется за счет использования конструктора ViewModel без аргументов, если пользовательская фабрика не указана.
  • viewModelScope вернется к EmptyCoroutineContext на платформах, где Dispatchers.Main недоступен (например, Linux).

Затронутые артефакты:

  • lifecycle-viewmodel переводит большинство API в common и поддерживает jvm и iOS в дополнение к Android.
  • lifecycle-viewmodel-ktx теперь пуст, и все API перенесены в lifecycle-viewmodel .
  • lifecycle-viewmodel-compose перемещает все API в common и отправляет артефакт Android, соответствующий многоплатформенной поддержке androidx.compose .

Изменения поведения

  • InitializerViewModelFactory (включая функцию построения viewModelFactory ) теперь будет выдавать IllegalArgumentException если initializer с тем же clazz: KClass<VM : ViewModel> уже добавлен. ( Ic3a36 )

Известные вопросы

Версия 2.8.0-rc01

1 мая 2024 г.

Выпущен androidx.lifecycle:lifecycle-*:2.8.0-rc01 . Версия 2.8.0-rc01 содержит эти коммиты .

Исправление ошибок

  • Исправлена ​​проблема, из-за которой базовый профиль для lifecycle-common не был должным образом упакован. Теперь они упакованы в AAR lifecycle-runtime . ( аосп/3038274 , б/322382422 )
  • Исправлено непреднамеренное изменение порядка очистки экземпляров AutoCloseable , прикрепленных к ViewModel: был восстановлен предыдущий порядок addCloseable(String, AutoCloseable) , затем addClosable(AutoCloseable) и onCleared() . ( аосп/3041632 )
  • Улучшите поведение создания по умолчанию для viewModelScope для собственных сред и сред рабочего стола JVM. ( аосп/3039221 )

Внешний вклад

  • Спасибо Виктору Кроппу за улучшение проверки основного потока на JVM Desktop. ( аосп/3037116 )

Версия 2.8.0-бета01

17 апреля 2024 г.

Выпущен androidx.lifecycle:lifecycle-*:2.8.0-beta01 . Версия 2.8.0-beta01 содержит эти коммиты .

Новые возможности

  • Артефакт lifecycle-runtime-compose теперь совместим с Kotlin Multiplatform, его код перенесен в common и поставляется с артефактом Android, что соответствует мультиплатформенной поддержке androidx.compose . ( If7a71 , I4f4a0 , b/331769623 )

Версия 2.8.0-альфа04

3 апреля 2024 г.

Выпущен androidx.lifecycle:lifecycle-*:2.8.0-alpha04 . Версия 2.8.0-alpha04 содержит эти коммиты .

Новые возможности

  • Артефакт lifecycle-viewmodel-compose теперь совместим с Kotlin Multiplatform, его код перенесен в common и поставляется с артефактом Android, соответствующим многоплатформенной поддержке androidx.compose . Чтобы учесть это изменение, метод Composable viewModel теперь принимает KClass в дополнение к java.lang.Class . ( б/330323282 )

Исправление ошибок

  • NullSafeMutableLiveData был переработан, чтобы избежать множества ложных срабатываний. ( I2d8c1 , Iafb18 , I03463 , I7ecef )

Обновление зависимостей

Версия 2.8.0-альфа03

20 марта 2024 г.

Выпущен androidx.lifecycle:lifecycle-*:2.8.0-alpha03 . Версия 2.8.0-alpha03 содержит эти коммиты .

Новые возможности

  • ViewModel.viewModelScope теперь является переопределяемым параметром конструктора, позволяющим вам внедрить собственный диспетчер и SupervisorJob() или переопределить значение по умолчанию, используя backgroundScope , доступный в runTest . ( I2817c , б / 264598574 )

    class MyViewModel(
      // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate
      viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob()
    ) : ViewModel(viewModelScope) {
      // Use viewModelScope as before, without any code changes
    }
    
    // Allows overriding the viewModelScope in a test
    fun Test() = runTest {
      val viewModel = MyViewModel(backgroundScope)
    }
    

Мультиплатформенная совместимость Kotlin

Артефакт lifecycle-viewmodel и API-интерфейсы, такие как ViewModel , ViewModelStore , ViewModelStoreOwner и ViewModelProvider , теперь поставляются в виде артефактов, совместимых с Kotlin Multiplatform. ( б/214568825 )

Чтобы учесть это изменение, такие методы, как методы ViewModelProvider , которые принимали java.lang.Class<T> , теперь имеют эквивалентный метод, который принимает kotlin.reflect.KClass<T> .

Бинарная совместимость на Android сохранена, но есть несколько заметных изменений при сравнении поверхности Android API с общей поверхностью API:

  • Создание экземпляра ViewModelProvider теперь выполняется с помощью методов ViewModelProvider.create() , а не непосредственного вызова его конструктора.
  • ViewModelProvider.NewInstanceFactory и ViewModelProvider.AndroidViewModelFactory доступны только на Android.
    • Пользовательские фабрики рекомендуется расширять из ViewModelProvider.Factory и использовать метод create , который принимает CreationExtras , или использовать viewModelFactory Kotlin DSL.
  • Использование ViewModelProvider без специальной фабрики на платформах, отличных от JVM, приведет к исключению UnsupportedOperationException . На платформах JVM совместимость сохраняется за счет использования конструктора ViewModel без аргументов, если пользовательская фабрика не указана.
  • viewModelScope вернется к EmptyCoroutineContext на платформах, где Dispatchers.Main недоступен (например, Linux).

Изменения поведения

  • InitializerViewModelFactory (включая функцию построения viewModelFactory ) теперь будет выдавать IllegalArgumentException если initializer с тем же clazz: KClass<VM : ViewModel> уже добавлен. ( Ic3a36 )

Исправление ошибок

  • ViewModel.getCloseable теперь обрабатывает дублированные ключи: если с key уже связан ресурс AutoCloseable , старый ресурс будет заменен и немедленно закрыт. ( Ибеб67 )
  • Доступ viewModelScope ViewModel теперь является потокобезопасным. ( Если4766 , б/322407038 )

Внешний вклад

  • LocalLifecycleOwner перешел из пользовательского интерфейса Compose в пользовательский интерфейс жизненного цикла, чтобы его вспомогательные API на основе Compose можно было использовать за пределами пользовательского интерфейса Compose. Спасибо Джейку Уортону за вклад. ( I6c41b , б/328263448 )

Версия 2.8.0-альфа02

21 февраля 2024 г.

Выпущен androidx.lifecycle:lifecycle-*:2.8.0-alpha02 . Версия 2.8.0-alpha02 содержит эти коммиты.

Новые возможности

  • Были добавлены API dropUnlessResumed и dropUnlessStarted , которые позволяют отбрасывать клики или другие события, которые происходят даже после того, как LifecycleOwner опустился ниже заданного Lifecycle.State . Например, это можно использовать с Navigation Compose, чтобы избежать обработки событий щелчка после того, как переход на другой экран уже начался: onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) } ( Icba83 , b/317230685 )

Котлин-преобразования

  • ViewModel теперь написана на Kotlin ( I16f26 , b/214568825 ).
  • Расширения kotlin lifecycle-viewmodel-ktx теперь перенесены в базовый модуль жизненного цикла. ( Id787b , b/274800183 )
  • Расширения kotlin lifecycle-runtime-ktx теперь перенесены в базовый модуль жизненного цикла. ( Ic3686 , б/274800183 )
  • Расширения kotlin lifecycle-livedata-core-ktx теперь перенесены в базовый модуль жизненного цикла. ( I54a3d , б/274800183 )

Мультиплатформенная совместимость Kotlin

  • Основные API жизненного цикла в Lifecycle , LifecycleOwner , LifecycleObserver , Lifecycle.State , Lifecycle.Event и LifecycleRegistry теперь поставляются в виде артефактов, совместимых с Kotlin Multiplatform. ( б/317249252 )

Изменения API

  • Вызов LifecycleStartEffect и LifecycleResumeEffect без ключа теперь является ошибкой в ​​соответствии с тем же соглашением, что и API DisposableEffect , который отражают эти API. ( Ib0e0c , б/323518079 )
  • ViewModel теперь использует AutoCloseable вместо Closeable . Это обратно совместимое изменение. ( I27f8e , б / 214568825 )
  • LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) устарел в пользу LiveData.toPublisher(lifecycleOwner) . ( Ябе29 , б/262623005 )

Внешний вклад

  • Спасибо Ивану Маткову из Jetbrains за помощь в переносе Lifecycle на мультиплатформу Kotlin. ( aosp/2926690 , I0c5ac , If445d )

Версия 2.8.0-альфа01

24 января 2024 г.

Выпущен androidx.lifecycle:lifecycle-*:2.8.0-alpha01 . Версия 2.8.0-alpha01 содержит эти коммиты.

Новые возможности

  • ViewModel теперь поддерживает добавление объектов Closeable с key , который позволяет получить их с помощью getCloseable() . ( I3cf63 )

Версия 2.7

Версия 2.7.0

10 января 2024 г.

Выпущен androidx.lifecycle:lifecycle-*:2.7.0 . Версия 2.7.0 содержит эти коммиты.

Важные изменения с версии 2.6.0

  • TestLifecycleOwner теперь включает функцию приостановки setCurrentState() , которая гарантирует, что изменение состояния и все обратные вызовы LifecycleObserver будут завершены перед возвратом. Примечательно, что в отличие от установки свойства currentState напрямую, здесь не используется runBlocking , что делает его безопасным для использования в сопрограмме, например, предоставленной runTest .
  • Расширения LiveData для map и switchMap теперь отражают поведение distinctUntilChanged — если для LiveData установлено value , функция map / switchMap будет немедленно вызвана для заполнения value возвращаемого LiveData . Это гарантирует, что начальное значение будет установлено как часть первой композиции (при использовании с observeAsState() ), но не меняет поведение наблюдения — значения обновлений из источника LiveData по-прежнему будут применяться только после того, как вы начнете наблюдать LiveData .
  • В этом выпуске исправлена ​​проблема, из-за которой SavedStateHandle не мог должным образом восстанавливать пользовательские классы Parcelable после смерти и воссоздания процесса. Из-за того, что информация о типе теряется платформой Android, массивы пользовательских Parcelables требуют дополнительной работы (создание типизированного массива нужного типа вручную), и документация по get , getLiveData и getStateFlow теперь специально устраняет это ограничение.
  • Правила хранения proguard, связанные с LifecycleObserver были удалены. Это означает, что защищенный код, который хочет использовать API-интерфейсы посредством отражения (например, используя давно устаревшую аннотацию @OnLifecycleEvent ), должен будет предоставить свои собственные правила хранения для своего конкретного варианта использования.

Наблюдение за событиями жизненного цикла

  • В качестве альтернативы использованию LifecycleEventObserver теперь вы можете наблюдать за Flow Lifecycle.Event с помощью метода расширения Lifecycle.asFlow() .
  • Пользователи Jetpack Compose теперь могут использовать LifecycleEventEffect для запуска побочных эффектов Compose на основе Lifecycle.Event .
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
  LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
    viewModel.refreshData()
  }
  // …
}
  • Пользователи Jetpack Compose могут использовать LifecycleStartEffect и LifecycleResumeEffect для обработки пар событий — начало, остановка и возобновление, пауза соответственно. Этот API отражает API, найденный в DisposableEffect , и подходит для случаев, когда изменение, внесенное при повышении состояния, необходимо отменить при понижении состояния.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
  LifecycleStartEffect(viewModel) {
    val timeTracking = viewModel.startTrackingTimeOnScreen()
    onStopOrDispose {
      timeTracking.stopTrackingTimeOnScreen()
    }
  }
  // …
}

Дополнительные сведения см. в разделе Запуск кода при событиях жизненного цикла .

Наблюдаемость за состоянием жизненного цикла

  • Текущий Lifecycle.State теперь можно наблюдать через свойство Lifecycle.currentStateFlow , которое возвращает StateFlow , где value является текущий Lifecycle.State .
  • Пользователи Jetpack Compose могут использовать расширение Lifecycle.currentStateAsState() , чтобы напрямую предоставлять Lifecycle.State как Compose State . Это эквивалент (и более короткая альтернатива) lifecycle.currentStateFlow.collectAsState() .

Дополнительные сведения см. в разделе Сбор состояния жизненного цикла с помощью потоков .

Версия 2.7.0-rc02

13 декабря 2023 г.

Выпущен androidx.lifecycle:lifecycle-*:2.7.0-rc02 . Версия 2.7.0-rc02 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​проблема, из-за которой SavedStateHandle не восстанавливал должным образом пользовательские классы Parcelable после смерти и воссоздания процесса. Из-за того, что информация о типе теряется платформой Android, массивы пользовательских Parcelables требуют дополнительной работы (создание типизированного массива нужного типа вручную), и документация по get , getLiveData и getStateFlow теперь специально устраняет это ограничение. ( I0b55a )

Версия 2.7.0-rc01

15 ноября 2023 г.

Выпущен androidx.lifecycle:lifecycle-*:2.7.0-rc01 . Версия 2.7.0-rc01 содержит эти коммиты.

Исправление ошибок

  • LifecycleStartEffect и LifecycleResumeEffect теперь правильно удаляют и воссоздают блок эффекта, если LifecycleOwner изменен. ( Ia25c6 )

Версия 2.7.0-бета01

1 ноября 2023 г.

androidx.lifecycle:lifecycle-*:2.7.0-beta01 выпущен без изменений. Версия 2.7.0-beta01 содержит эти коммиты.

  • Обновление бета-версии, никаких серьезных изменений в этой версии нет.

Версия 2.7.0-альфа03

18 октября 2023 г.

Выпущен androidx.lifecycle:lifecycle-*:2.7.0-alpha03 . Версия 2.7.0-alpha03 содержит эти коммиты.

Новые возможности

  • lifecycle-runtime-testing теперь содержит новую проверку Lint, позволяющую избежать установки Lifecycle.State TestLifecycleOwner с использованием поля currentState внутри сопрограммы. Проверка Lint теперь предлагает приостановить setCurrentState , что позволяет установить Lifecycle.State без блокировки. ( Icf728 , б/297880630 )

Исправление ошибок

  • Исправлена ​​проблема с LiveData.switchMap , из-за которой возврат одного и того же экземпляра LiveData как при первоначальном вызове, так и при последующем вызове препятствовал добавлению экземпляра LiveData в качестве источника. ( Ibedcba7 ​​)

Версия 2.7.0-альфа02

6 сентября 2023 г.

Выпущен androidx.lifecycle:lifecycle-*:2.7.0-alpha02 . Версия 2.7.0-alpha02 содержит эти коммиты.

Новые возможности

  • TestLifecycleOwner теперь включает в себя функцию приостановки setCurrentState() чтобы дать пользователям возможность использовать TestLifecycleOwner из сопрограммы, например, предоставленной runTest . ( I329de , б / 259344129 )

Изменения API

  • Все файлы из модулей lifecycle-livedata-ktx были перемещены в основной модуль lifecycle-livedata . ( I10c6f , б / 274800183 )

Изменения поведения

  • Расширения LiveData.map() и LiveData.switchMap() теперь устанавливают value возвращаемого LiveData если для предыдущего LiveData было установлено значение, гарантируя, что использование результирующего LiveData в Jetpack Compose имеет правильное состояние при исходной композиции. . ( I91d2b , б/269479952 )
  • Функция addCloseable() ViewModel теперь немедленно закрывает Closeable если ViewModel уже получила вызов onCleared() . ( I4712e , б / 280294730 )

Исправление ошибок

  • Из жизненного цикла 2.6.2 : исправлена ​​проблема, из-за которой SavedStateHandle не восстанавливался правильно после смерти процесса, если состояние было восстановлено, save() вызывался без фактического сохранения состояния в родительском SavedStateRegistry , а затем состояние восстанавливалось снова. Это исправляет взаимодействие между rememberSaveable и NavHost из Navigation Compose. ( аосп/2729289 )

Версия 2.7.0-альфа01

26 июля 2023 г.

Выпущен androidx.lifecycle:lifecycle-*:2.7.0-alpha01 . Версия 2.7.0-alpha01 содержит эти коммиты.

Изменения API

  • Lifecycle.State теперь доступен для наблюдения Compose через Lifecycle.currentStateFlow , который возвращает StateFlow , где value является текущий Lifecycle.State . ( Ib212d , б/209684871 )
  • Lifecycle.Event теперь можно наблюдать как Flow с помощью Lifecycle.asFlow(). ( If2c0f , b/176311030 )
  • Был добавлен API LifecycleResumeEffect для запуска Compose SideEffect на основе обратных вызовов событий Lifecycle.Event.ON_RESUME и Lifecycle.Event.ON_PAUSE . ( I60386 , б / 235529345 )
  • Был добавлен API LifecycleStartEffect для запуска Compose SideEffect на основе обратных вызовов событий Lifecycle.Event.ON_START и Lifecycle.Event.ON_STOP . ( I5a8d1 , б/235529345 )
  • Был добавлен API LifecycleEventEffect для запуска Compose SideEffect на основе Lifecycle.Event . ( Ic9794 , б/235529345 )
  • Было добавлено расширение Lifecycle.collectAsState() , позволяющее напрямую предоставлять Lifecycle.State как Compose State . Это эквивалент (и более короткая альтернатива) lifecycle.currentStateFlow.collectAsState() . ( I11015 , б / 235529345 )

Исправление ошибок

  • Расширение LiveData.distinctUntilChanged() теперь устанавливает value возвращаемого LiveData , если для предыдущего LiveData было установлено значение. Это не меняет поведение наблюдения — обновленные значения из исходного LiveData по-прежнему будут применяться только после того, как вы начнете наблюдать LiveData , возвращаемым из distinctUntilChanged() . ( Ib482f )
  • Правила хранения proguard, связанные с LifecycleObserver были удалены. Это означает, что защищенный код, желающий использовать API посредством отражения, должен будет предоставить свои собственные правила хранения для конкретного варианта использования. ( Ia12fd )

Версия 2.6

Версия 2.6.2

6 сентября 2023 г.

Выпущен androidx.lifecycle:lifecycle-*:2.6.2 . Версия 2.6.2 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​проблема, из-за которой SavedStateHandle не восстанавливался правильно после смерти процесса, если состояние было восстановлено, save() вызывался без фактического сохранения состояния в родительском SavedStateRegistry , а затем состояние восстанавливалось снова. Это исправляет взаимодействие между rememberSaveable и NavHost Navigation Compose. ( аосп/2729289 )

Версия 2.6.1

22 марта 2023 г.

Выпущен androidx.lifecycle:lifecycle-*:2.6.1 . Версия 2.6.1 содержит эти коммиты.

Обновления зависимостей

Версия 2.6.0

8 марта 2023 г.

Выпущен androidx.lifecycle:lifecycle-*:2.6.0 . Версия 2.6.0 содержит эти коммиты.

Важные изменения с версии 2.5.0

  • LiveData теперь включает в себя новое свойство isInitialized , которое указывает, было ли когда-либо установлено явное значение для LiveData , что позволяет вам различать liveData.value , возвращающий значение null поскольку значение никогда не было установлено, или явное null значение.
  • MediatorLiveData теперь включает конструктор для установки начального значения.
  • Добавлено новое расширение для StateFlow и Flow метода collectAsStateWithLifecycle() , которое собирает данные из потоков и представляет их последнее значение как Compose State с учетом жизненного цикла.
  • Методы Lifecycle.launchWhenX и Lifecycle.whenX признаны устаревшими, поскольку использование диспетчера приостановки в некоторых случаях может привести к пустой трате ресурсов. Рекомендуется использовать Lifecycle.repeatOnLifecycle . Для получения дополнительной информации о однократной приостановке работы см. объяснение того, почему это по своей сути небезопасно.
  • Преобразование Kotlin . Большое количество классов жизненного цикла было преобразовано в Kotlin. Все преобразованные классы по-прежнему сохраняют двоичную совместимость с предыдущими версиями. Следующие классы имеют несовместимые с исходным кодом изменения для классов, написанных на Kotlin: ViewTreeLifecycleOwner , LiveDataReactiveStreams , HasDefaultViewModelProviderFactory , ViewTreeViewModelStoreOwner , Transformations , ViewModelStoreOwner , LifecycleOwner

В таблице ниже представлены преобразования исходного кода для новой версии жизненного цикла.

Жизненный цикл 2.5 Жизненный цикл 2.5 (KTX) Жизненный цикл 2.6
Transformations.switchMap(liveData) {...} liveData.switchMap {...} liveData.switchMap {...}
Transformations.map(liveData) {...} liveData.map {...} liveData.map {...}
Transformations.distinctUntilChanged(liveData) {...} liveData.distinctUntilChanged{...} liveData.distinctUntilChanged{...}
LiveDataReactiveStreams.fromPublisher(publisher) publisher.toLiveData() publisher.toLiveData()
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) liveData.toPublisher(lifecycleOwner) liveData.toPublisher(lifecycleOwner)
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory override val defaultViewModelProviderFactory = factory
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras override fun getDefaultViewModelCreationExtras(): CreationExtras = extras override val defaultViewModelProviderCreationExtras = extras
ViewTreeLifecycleOwner.set(view, owner) ViewTreeLifecycleOwner.set(view, owner) view.setViewTreeLifecycleOwner(owner)
ViewTreeLifecycleOwner.get(view) view.findViewTreeLifecycleOwner() view.findViewTreeLifecycleOwner()
override fun getViewModelStore(): ViewModelStore = store override fun getViewModelStore(): ViewModelStore = store override val viewModelStore: ViewModelStore = store
override fun getLifecycle(): Lifecycle = registry override fun getLifecycle(): Lifecycle = registry override val lifecycle: Lifecycle get() = registry
  • Обнуляемость метода onChanged Observer , созданного в Kotlin, теперь соответствует обнуляемости универсального типа. Если вы хотите, чтобы Observer.onChanged() принимал тип, допускающий значение NULL, вы должны создать экземпляр Observer с типом, допускающим значение NULL.
  • Эти классы также были преобразованы в Kotlin, но остались совместимыми с исходным кодом: DefaultLifecycleObserver , LifecycleEventObserver , Lifecycle , LifecycleRegistry , LifecycleObserver , ViewModelStore , AndroidViewModel , AbstractSavedStateViewModelFactory , LifecycleService , ServiceLifecycleDispatcher и ProcessLifecycleOwner

Версия 2.6.0-rc01

22 февраля 2023 г.

Выпущен androidx.lifecycle:lifecycle-*:2.6.0-rc01 . Версия 2.6.0-rc01 содержит эти коммиты.

Исправление ошибок

  • Расширение LiveData.distinctUntilChanged() теперь устанавливает value возвращаемого LiveData , если для предыдущего LiveData было установлено значение. Это не меняет поведение наблюдения — обновленные значения из исходного LiveData по-прежнему будут применяться только после того, как вы начнете наблюдать LiveData , возвращаемым из distinctUntilChanged() . ( Ib482f )

Версия 2.6.0-бета01

8 февраля 2023 г.

Выпущен androidx.lifecycle:lifecycle-*:2.6.0-beta01 . Версия 2.6.0-beta01 содержит эти коммиты.

Котлин-преобразования

  • LifecycleOwner теперь написан на Kotlin. Это изменение, несовместимое с исходным кодом, для классов, написанных на Kotlin — теперь они должны переопределить свойство lifecycle , а не реализовывать предыдущую функцию getLifecycle() . ( I75b4b , б/240298691 )
  • ViewModelStoreOwner теперь находится в Kotlin. Это изменение, несовместимое с исходным кодом, для классов, написанных на Kotlin — теперь они должны переопределить свойство viewModelStore , а не реализовывать предыдущую функцию getViewModelStore() . ( I86409 , б / 240298691 )
  • Расширение Kotlin для LifecycleOwner , предоставляющее поле lifecycleScope , было перенесено в lifecycle-common артефакт из lifecycle-runtime-ktx . ( I41d78 , б/240298691 )
  • Расширение Kotlin для Lifecycle , предоставляющее поле coroutineScope , было перенесено в lifecycle-common артефакт из lifecycle-runtime-ktx . ( Ябб91 , б/240298691 )

Версия 2.6.0-альфа05

25 января 2023 г.

Выпущен androidx.lifecycle:lifecycle-*:2.6.0-alpha05 . Версия 2.6.0-alpha05 содержит эти коммиты.

Котлин-преобразования

  • Transformations теперь написаны на Котлине. Это изменение, несовместимое с исходным кодом для тех классов, написанных на Kotlin, которые напрямую использовали синтаксис, такой как Transformations.map — код Kotlin теперь должен использовать синтаксис метода расширения Kotlin, который ранее был доступен только при использовании lifecycle-livedata-ktx . При использовании языка программирования Java версии этих методов, принимающие метод androidx.arch.core.util.Function , считаются устаревшими и заменяются версиями, принимающими Kotlin Function1 . Это изменение поддерживает двоичную совместимость. ( I8e14f )
  • ViewTreeViewModelStoreOwner теперь написан на Kotlin. Это изменение, несовместимое с исходным кодом для классов, написанных на Kotlin — теперь вы должны напрямую импортировать и использовать методы расширения Kotlin в View androidx.lifecycle.setViewTreeViewModelStoreOwner и androidx.lifecycle.findViewTreeViewModelStoreOwner чтобы установить и найти ранее установленного владельца. Он совместим на двоичном уровне и остается совместимым с исходным кодом для реализаций, написанных на языке программирования Java. ( Ia06d8 , Ib22d8 , b/240298691 )
  • Интерфейс HasDefaultViewModelProviderFactory теперь написан на Kotlin. Это изменение, несовместимое с исходным кодом, для классов, написанных на Kotlin — теперь они должны переопределять свойства defaultViewModelProviderFactory и defaultViewModelCreationExtras , а не реализовывать предыдущие соответствующие функции. ( Iaed9c , б/240298691 )
  • Observer теперь написан на Kotlin. Его метод onChanged() теперь использует value имени для своего параметра. ( Iffef2 , I4995e , b/240298691 )
  • AndroidViewModel , AbstractSavedStateViewModelFactory , LifecycleService , ServiceLifecycleDispatcher и ProcessLifecycleOwner теперь написаны на Kotlin ( I2e771 , Ibae40 , I160d7 , I08884 , I1cda7 , b/240298691 ).

Версия 2.6.0-альфа04

11 января 2023 г.

Выпущен androidx.lifecycle:lifecycle-*:2.6.0-alpha04 . Версия 2.6.0-alpha04 содержит эти коммиты.

Новые возможности

  • LiveData теперь включает в себя новое свойство isInitialized , которое указывает, было ли когда-либо установлено явное значение для LiveData , что позволяет вам различать liveData.value , возвращающий значение null поскольку значение никогда не было установлено, или явное null значение. ( Там же018 )

Изменения API

  • API-интерфейсы collectAsStateWithLifecycle() для lifecycle-runtime-compose больше не находятся в экспериментальном состоянии. ( I09d42 , б / 258835424 )
  • Методы Lifecycle.launchWhenX и Lifecycle.whenX признаны устаревшими, поскольку использование диспетчера приостановки в некоторых случаях может привести к пустой трате ресурсов. Рекомендуется использовать Lifecycle.repeatOnLifecycle . ( Iafc54 , б/248302832 )

Котлин-преобразования

  • ViewTreeLifecycleOwner теперь написан на Kotlin. Это изменение, несовместимое с исходным кодом для классов, написанных на Kotlin — теперь вы должны напрямую импортировать и использовать методы расширения Kotlin в View androidx.lifecycle.setViewTreeLifecycleOwner и androidx.lifecycle.findViewTreeLifecycleOwner , чтобы установить и найти ранее установленного владельца. Это заменяет предыдущее расширение Kotlin в lifecycle-runtime-ktx . Он совместим на двоичном уровне и остается совместимым с исходным кодом для реализаций, написанных на языке программирования Java. ( I8a77a , I5234e , б/240298691 )
  • LiveDataReactiveStreams теперь написан на Kotlin. Расширения Kotlin, ранее существовавшие в lifecycle-reactivestreams-ktx были перенесены в модуль lifecycle-reactivestreams и стали основной поверхностью для кода, написанного на Kotlin. Это изменение, несовместимое с исходным кодом, для кода, написанного на Kotlin, если вы еще не использовали API-интерфейсы метода расширения Kotlin. ( I2b1b9 , I95d22 , б/240298691 )
  • DefaultLifecycleObserver , LifecycleEventObserver , Lifecycle , LifecycleRegistry , LifecycleObserver и ViewModelStore теперь написаны на Kotlin ( Iadffd , ( I60034 , I8c52c , I9593d , I01fe1 , I59a23 , b/240298691 )

Исправление ошибок

  • SavedStateHandle больше не завершается сбоем из-за ClassCastException при вызове get() с неправильным типом класса. ( I6ae7c )

Версия 2.6.0-альфа03

24 октября 2022 г.

Выпущен androidx.lifecycle:lifecycle-*:2.6.0-alpha03 . Версия 2.6.0-alpha03 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​проблема, из-за которой ограничения между различными модулями жизненного цикла не работали должным образом. ( I18d0d , б / 249686765 )
  • Ошибки, вызываемые LifecycleRegistry.moveToState() , теперь включают более полезные сообщения об ошибках, которые информируют разработчиков о компоненте, вызывающем ошибку. ( Idf4b2 , б/244910446 )

Версия 2.6.0-альфа02

7 сентября 2022 г.

Выпущен androidx.lifecycle:lifecycle-*:2.6.0-alpha02 . Версия 2.6.0-alpha02 содержит эти коммиты.

Изменения API

  • MediatorLiveData теперь включает конструктор для установки начального значения. ( Ib6cc5 , б/151244085 )

Исправление ошибок

  • Артефакты Lifecycle теперь включают ограничения , которые гарантируют, что все взаимозависимые артефакты жизненного цикла используют одну и ту же версию, автоматически обновляя другие зависимости при обновлении одной из них. б/242871265
  • FlowLiveData.asFlow() теперь создает callbackFlow вместо использования собственной реализации Channel для обеспечения потокобезопасности и сохранения контекста. ( I4a8b2 , б/200596935 )
  • Функция asLiveData FlowLiveData теперь сохраняет исходное значение StateFlow при создании нового объекта LiveData . ( I3f530 , б/157380488 )
  • Из жизненного цикла 2.5.1 : пользовательские реализации AndroidViewModelFactory теперь правильно вызывают функцию create(modelClass) при использовании конструктора с отслеживанием состояния в Lifecycle 2.4+ ( I5b315 , b/238011621 ).

Версия 2.6.0-альфа01

29 июня 2022 г.

Выпущен androidx.lifecycle:lifecycle-*:2.6.0-alpha01 . Версия 2.6.0-alpha01 содержит эти коммиты.

Новые возможности

  • Добавлено новое расширение для StateFlow и Flow для collectAsStateWithLifecycle , которое собирает данные из потоков и представляет свое последнее значение как Compose State с учетом жизненного цикла. Поток собирается, и для новой эмиссии устанавливается значение состояния, когда жизненный цикл находится по крайней мере в определенном Lifecycle.State . Когда жизненный цикл падает ниже этого Lifecycle.State , сбор потока останавливается и значение State не обновляется. ( I1856e , б/230557927 )

Версия 2.5

Версия 2.5.1

27 июля 2022 г.

Выпущен androidx.lifecycle:lifecycle-*:2.5.1 . Версия 2.5.1 содержит эти коммиты.

Исправление ошибок

  • Пользовательские реализации AndroidViewModelFactory теперь правильно вызовут функцию create(modelClass) при использовании конструктора AndroidViewModelFactory с AndroidViewModelfActory с Lifecycle 2.4+. ( I5b315 , b/238011621 )

Версия 2.5.0

29 июня 2022 г.

androidx.lifecycle:lifecycle-*:2.5.0 выпускается. Версия 2.5.0 содержит эти коммиты.

Важные изменения с 2.4.0

  • SavedStateHandle теперь предлагает API getStateFlow() , который возвращает Kotlin StateFlow для мониторинга изменений стоимости в качестве альтернативы использованию LiveData .

  • ViewModel CreationExtras - При написании пользовательского ViewModelProvider.Factory больше не требуется расширять AndroidViewModelFactory или AbstractSavedStateViewModelFactory , чтобы получить доступ к Application или SavedStateHandle , соответственно. Вместо этого эти поля предоставляются для каждого подкласса ViewModelProvider.Factory как CreationExtras через новую перегрузку create : create(Class<T>, CreationExtras) . Эти дополнения предоставляются автоматически вашей деятельностью или фрагментом при использовании активности 1.5.0 и фрагмента 1.5.0 соответственно.

    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
        }
    }
    
  • lifecycle-viewmodel теперь предоставляет viewModelFactory Kotlin DSL, который позволяет вам определить свой ViewModelProvider.Factory с точки зрения одного или нескольких инициализаторов Lambda, один для каждого конкретного класса ViewModel , которые ваши пользовательские заводские опоры с использованием CreationExtras в качестве основного источника данных.

    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)
        }
    }
    
  • lifecycle-viewmodel-compose теперь предлагает API viewModel() , который занимает фабрику Lambda для создания экземпляра ViewModel , не требуя создания пользовательского ViewModelProvider.Factory .

    // 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)
    }
    
  • SavedStateHandle Compose Saver Integration -Артефакт lifecycle-viewmodel-compose теперь содержит новые экспериментальные API в SavedStateHandle.saveable , который позволяет rememberSaveable как поведение, поддерживаемое сохраненным SavedStateHandle of `ViewModel.

    class ListScreenViewModel(handle: SavedStateHandle): ViewModel() {
        // This value survives both configuration changes and process death and recreation
        val editMode by handle.saveable { mutableStateOf(false) }
    }
    
  • Добавлено API addCloseable() и новая перегрузка конструктора, которая позволяет вам добавлять один или несколько Closeable объектов в ViewModel , которые будут закрыты, когда ViewModel очищена, не требуя никакой ручной работы в onCleared() .

    Например, чтобы создать прицел из -за корзины, который вы можете ввести в ViewModel, но управляйте через тестирование, вы можете создать CoroutineScope , который реализует Closeable :

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

    Который затем может быть использован в вашем конструкторе ViewModel , сохраняя при этом ту же срок службы, что и viewModelScope :

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

Поведение изменяется

  • Попытка переместить Lifecycle.State от INITIALIZED в DESTROYED теперь всегда бросает IllegalStateException независимо от того, имеет ли Lifecycle прикрепленный наблюдатель.
  • LifecycleRegistry теперь очистит своих наблюдателей, когда они достигнут DESTROYED состояния.

Версия 2.5.0-RC02

15 июня 2022 г.

androidx.lifecycle:lifecycle-*:2.5.0-rc02 выпускается. Версия 2.5.0-RC02 содержит эти коммиты.

Исправление ошибок

  • ViewModelProvider больше не будет сбои при смешивании предыдущих версий зависимостей для жизненного цикла компонента с версиями 2.5+. ( I81a66 , b/230454566 )

Версия 2.5.0-RC01

11 мая 2022 г.

androidx.lifecycle:lifecycle-*:2.5.0-rc01 выпускается. Версия 2.5.0-RC01 содержит эти коммиты.

Исправление ошибок

  • MediatorLiveData.addSource() теперь бросает NullPointerException при передаче null источника вместо распространения null источника наблюдателям. ( IBD0FB , B/123085232 )

Версия 2.5.0-бета01

20 апреля 2022 г.

androidx.lifecycle:lifecycle-*:2.5.0-beta01 выпускается. Версия 2.5.0-бета01 содержит эти коммиты.

Изменения API

  • Добавлены делегаты SavedStateHandle.saveable Property для использования имен свойств в качестве ключей для постоянного состояния в SavedStateHandle ( I8BB86 , B/225014345 )

Исправление ошибок

  • Исправлена ​​проблема, в которой гнездовывание одного NavHost в другом NavHost на неприимкой вкладке нижней навигации приведет к IllegalStateException при использовании нескольких стеков задних. ( I11bd5 , b/228865698 )

Версия 2.5.0-Alpha06

6 апреля 2022 г.

androidx.lifecycle:lifecycle-*:2.5.0-alpha06 выпускается. Версия 2.5.0-Alpha06 содержит эти коммиты.

Новые возможности

  • Добавьте экспериментальную перегрузку MutableState в SavedStateHandle.saveable для паритета с rememberSaveable ( i38cfe , B/224565154 )

Изменения API

  • CreationExtras теперь абстрактно, а не герметично. ( IB8A7A )

Исправление ошибок

  • Исправлена IllegalStateException: Already attached to lifecycleOwner вызванной SavedStateHandleController . ( I7ea47 , b/215406268 )

Версия 2.5.0-Alpha05

23 марта 2022 г.

androidx.lifecycle:lifecycle-*:2.5.0-alpha05 выпускается. Версия 2.5.0-Alpha05 содержит эти коммиты.

Новые возможности

  • Модуль lifecycle-viewmodel-compose теперь предоставляет SavedStateHandleSaver , экспериментальный API, который обеспечивает значения в SavedStateHandle правильно интегрированы с тем же сохраненным состоянием экземпляра, которое rememberSaveable применение. ( IA88B7 , B/195689777 )

Изменения API

  • Исправлена ​​проблема совместимости с жизненным циклом 2.3 и более новыми версиями жизненного цикла в Java. ( I52c8a , b/219545060 )

Исправление ошибок

  • SavedStateViewFactory теперь поддерживает использование CreationExtras даже если он был инициализирован с помощью SavedStateRegistryOwner . Если предоставляются дополнения, инициализированные аргументы игнорируются. ( I6c43b , b/224844583 )

Версия 2.5.0-Alpha04

9 марта 2022 г.

androidx.lifecycle:lifecycle-*:2.5.0-alpha04 . Версия 2.5.0-Alpha04 содержит эти коммиты.

Изменения API

  • SavedStateHandle теперь предлагает API getStateFlow() , который возвращает Kotlin StateFlow для мониторинга изменений стоимости в качестве альтернативы использованию LiveData . ( IAD3AB , B/178037961 )

Версия 2.5.0-Alpha03

23 февраля 2022 г.

androidx.lifecycle:lifecycle-*:2.5.0-alpha03 выпускается. Версия 2.5.0-Alpha03 содержит эти коммиты.

Новые возможности

  • Добавлено API addCloseable() и новая перегрузка конструктора, которая позволяет вам добавлять один или несколько Closeable объектов в ViewModel , которые будут закрыты, когда ViewModel очищена, не требуя никакой ручной работы в onCleared() . ( I55ea0 )
  • lifecycle-viewmodel теперь предоставляет InitializerViewModelFactory , которая позволяет добавлять лямбду для обработки определенных классов ViewModel , используя CreationExtras в качестве основного источника данных. ( If58fc , b/216687549 )
  • lifecycle-viewmodel-compose теперь предлагает API viewModel() , который занимает фабрику Lambda для создания экземпляра ViewModel , не требуя создания пользовательского ViewModelProvider.Factory . ( I97FBB , B/216688927 )

Изменения API

  • Теперь вы можете создать ViewModel с CreationExtras через lifecycle-viewmodel-compose . ( I08887 , B/216688927 )

Поведение изменяется

  • Попытка переместить Lifecycle.State от INITIALIZED в DESTROYED теперь всегда бросает IllegalStateException независимо от того, имеет ли Lifecycle прикрепленный наблюдатель. ( I7C390 , B/177924329 )
  • LifecycleRegistry теперь очистит своих наблюдателей, когда они достигнут DESTROYED состояния. ( I4f8dd , b/142925860 )

Версия 2.5.0-альфа02

9 февраля 2022 г.

androidx.lifecycle:lifecycle-*:2.5.0-alpha02 выпускается. Версия 2.5.0-Alpha02 содержит эти коммиты.

Изменения API

  • SavedStateHandle и SavedStateViewModelFactory были преобразованы в Котлин. Это улучшило нулясь дженериков в обоих классах. ( IB6CE2 , B/216168263 , I9647A , B/177667711 )
  • Параметр функции switchMap LiveData теперь может иметь нулевой выход. ( I40396 , B/132923666 )
  • Расширения LiveData -Ktx теперь аннотируются @CheckResult , чтобы обеспечить соблюдение того, что результат используется при вызове этих функций. ( IA0F05 , B/207325134 )

Поведение изменяется

  • SavedStateHandle теперь правильно хранит defaultValue, когда нет значения для указанного ключа. ( I1c6ce , b/178510877 )

Исправление ошибок

  • От жизненного цикла 2.4.1 : обновленный lifecycle-process чтобы зависеть от запуска 1.1.1 , чтобы гарантировать, что исправления, которые предотвращают ProcessLifecycleInitializer от выброса StartupException , доступны по умолчанию. ( IB01DF , B/216490724 )
  • Теперь существует улучшенное сообщение об ошибке, когда пользовательские классы AndroidViewModel имеют параметры в неправильном порядке и пытаются создать ViewModel . ( I340f7 , b/177667711 )
  • Теперь вы можете создать модель представления через CreationExtras используя AndroidViewModelFactory без установки приложения. ( I6ebef , b/217271656 )

Версия 2.5.0-Alpha01

26 января 2022 г.

androidx.lifecycle:lifecycle-*:2.5.0-alpha01 . Версия 2.5.0-Alpha01 содержит эти коммиты.

ViewModel CreationExtras

С помощью этого выпуска мы закладываем основу для реструктуризации, как строится ViewModel . Вместо жесткого набора подклассов ViewModelProvider.Factory , каждый из которых добавляет дополнительную функциональность (позволяя параметру конструктора Application через AndroidViewModelFactory , позволяя параметр конструктора SavedStateHandle через SavedStateViewModelFactory и AbstractSavedStateViewModelFactory , мы перемещаем в течение всего мира. На новой концепции CreationExtras . ( IA7343 , B/188691010 , B/188541057 )

С помощью этого изменения ViewModelProvider больше не делает прямые вызовы в предыдущий метод create(Class<T>) ViewModelProvider.Factory . Вместо этого он вызывает новую перегрузку create : create(Class<T>, CreationExtras) . Это означает, что любая прямая реализация экземпляра ViewModelProvider.Factory теперь имеет доступ к каждому из этих новых CreationExtras :

  • ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY : эта String предоставляет доступ к пользовательской ключу, которую вы передали в ViewModelProvider.get() .
  • ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY предоставляет доступ к классу Application .
  • SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY предоставляет доступ к SavedStateRegistryOwner , который используется для построения этой ViewModel.
  • SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY предоставляет доступ к ViewModelStoreOwner , который используется для построения этой ViewModel.
  • SavedStateHandleSupport.DEFAULT_ARGS_KEY предоставляет доступ к Bundle аргументов, которые следует использовать для построения SavedStateHandle .

Эти дополнения предоставляются по умолчанию при использовании активности 1.5.0-alpha01 , фрагмент 1.5.0-alpha01 и навигация 2.5.0-alpha01 . Если вы используете более раннюю версию этих библиотек, ваши CreationExtras будут пустыми - все существующие подклассы ViewModelProvider.Factory были переписаны для поддержки обоих путей создания CreationExtras идти вперед.

Эти CreationExtras позволяют вам построить ViewModelProvider.Factory , который передает только информацию, необходимую для каждой ViewModel , не полагаясь на строгую иерархию заводских подклассов:

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

Мы используем функцию расширения createSavedStateHandle() на CreationExtras от SavedStateHandleSupport , чтобы построить SavedStateHandle только для одной ViewModel, которая нуждается в этом. ( IA6654 , B/188541057 )

Пользовательские CreationExtras могут быть предоставлены, переопределяя getDefaultViewModelCreationExtras() в вашей ComponentActivity или Fragment , что делает их доступными для вашего пользовательского ViewModelProvider.Factory в качестве встроенной формы вспомогательной инъекции. Эти дополнения будут автоматически доступны для вашей пользовательской заводской завод при непосредственном использовании с ViewModelProvider или при использовании by viewModels() и by activityViewModels() расширения свойств Kotlin. ( I79f2b , b/207012584 , b/207012585 , b/207012490 )

Исправление ошибок

  • Исправлена ​​проблема, в которой значение по умолчанию, предоставленное для SavedStateHandle , появится после смерти и отдыха процесса, даже если оно было специально удалено из SavedStateHandle . Как следствие этого, SavedStateHandle больше не будет объединять значения по умолчанию и восстанавливать значения вместе, вместо этого используя только восстановленные значения в качестве источника истины. ( I53a4b )

Версия 2.4

Версия 2.4.1

9 февраля 2022 г.

androidx.lifecycle:lifecycle-*:2.4.1 выпущен. Версия 2.4.1 содержит эти коммиты.

Исправление ошибок

  • Перекурированный из жизненного цикла 2.5.0-alpha01 : Исправлена ​​проблема, в которой значение по умолчанию, предоставленное для SavedStateHandle будет повторно применять после смерти процесса и отдыха, даже если оно было специально удалено из SavedStateHandle . Как следствие этого, SavedStateHandle больше не будет объединять значения по умолчанию и восстанавливать значения вместе, вместо этого используя только восстановленные значения в качестве источника истины. ( I53a4b )
  • lifecycle-process теперь зависит от стартапа Androidx 1.1.1 , который установил регрессию в том случае, где использование ProcessLifecycleInitializer может привести StartupException . ( B/216490724 )

Версия 2.4.0

27 октября 2021 г.

androidx.lifecycle:lifecycle-*:2.4.0 выпущен. Версия 2.4.0 содержит эти коммиты.

Важные изменения с 2.3.0

  • @OnLifecycleEvent был устарел. Вместо этого следует использовать LifecycleEventObserver или DefaultLifecycleObserver .
  • androidx.lifecycle:lifecycle-viewmodel-compose . Он предоставляет viewModel() Composable и LocalViewModelStoreOwner .
    • Изменение источника : ViewModelProvider был переписан в Котлин. ViewModelProvider.Factory.create Метод больше не допускает общий общий.
  • Новые API Coroutines были добавлены в androidx.lifecycle:lifecycle-runtime-ktx :
  • Lifecycle.repeatOnLifecycle , API, который выполняет блок кода в коратике, когда жизненный цикл, по крайней мере, в определенном состоянии. Блок отменит и повторно запускается, когда жизненный цикл движется в целевом состоянии и выходит из целевого состояния;
  • Flow.flowWithLifecycle , API, который излучает значения из восходящего потока, когда жизненный цикл, по крайней мере, в определенном состоянии.
  • DefaultLifecycleObserver был перемещен из lifecycle.lifecycle-common-java8 в lifecycle.lifecycle-common . lifecycle.lifecycle-common-java8 больше не предоставляет никаких дополнительных функциональных возможностей на вершине lifecycle.lifecycle-common lifecycle.lifecycle-common
  • Non Coroutines API из lifecycle-viewmodel-ktx были перемещены в модуль lifecycle-viewmodel .
  • lifecycle-process теперь использует androidx.startup для инициализации ProcessLifecycleOwner .

    Ранее это делалось androidx.lifecycle.ProcessLifecycleOwnerInitializer .

    Если вы использовали tools:node="remove" ContentProvider , который используется для инициализации жизненного цикла процесса в прошлом, то вам нужно сделать следующее.

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

    (или)

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

Версия 2.4.0-RC01

29 сентября 2021 г.

androidx.lifecycle:lifecycle-*:2.4.0-rc01 выпускается без изменений из жизненного цикла 2.4.0-бета01. Версия 2.4.0-RC01 содержит эти коммиты.

Версия 2.4.0-бета01

15 сентября 2021 г.

androidx.lifecycle:lifecycle-*:2.4.0-beta01 выпускается. Версия 2.4.0-бета01 содержит эти коммиты.

Изменения API

  • @OnLifecycleEvent был устарел. Вместо этого следует использовать LifecycleEventObserver или DefaultLifecycleObserver . ( I5a8fa )
  • DefaultLifeCycleObserver был перенесен из androidx.lifecycle.lifecycle-common-java8 в androidx.lifecycle.lifecycle-common . androidx.lifecycle.lifecycle-common-java8 больше не предоставляет никаких дополнительных функциональных возможностей поверх androidx.lifecycle.lifecycle-common , поэтому зависимость от нее может быть заменена на androidx.lifecycle.lifecycle-common . ( I021AA )
  • Non Coroutines API из lifecycle-viewmodel-ktx были перемещены в модуль lifecycle-viewmodel . ( I6d5b2 )

Внешний вклад

  • Спасибо Dmitrilc за исправление типа в документации ViewModel ! ( #221 )

Версия 2.4.0-альфа03

4 августа 2021 г.

androidx.lifecycle:lifecycle-*:2.4.0-alpha03 выпущен. Версия 2.4.0-Alpha03 содержит эти коммиты.

Изменения API

  • Изменение источника : ViewModelProvider был переписан в Котлин. ViewModelProvider.Factory.create Метод больше не допускает общий общий. ( I9b9f6 )

Поведение изменяется

  • Lifecycle.repeatOnLifecycle : block теперь всегда используется последовательно при повторении выполнения. ( IBAB33 )

Внешний вклад

  • Спасибо Chao2zhang за исправление фрагментов кода в документации repeatOnLifecycle . #205 .

Версия 2.4.0-Alpha02

16 июня 2021 г.

androidx.lifecycle:lifecycle-*:2.4.0-alpha02 выпускается. Версия 2.4.0-Alpha02 содержит эти коммиты.

Новые возможности

  • Добавлена ​​новая проверка Lint RepeatOnLifecycleWrongUsage в lifecycle-runtime-ktx , который обнаруживает, когда repeateOnLifecycle неправильно используется в onStart() или onResume() . ( 706078 , b/187887400 )

Изменения API

  • API LifecycleOwner.addRepeatingJob удаляется в пользу Lifecycle.repeatOnLifecycle . ( I4a3a8 )
  • Сделайте ProcessLifecycleInitializer Public, чтобы другой androidx.startup.Initializer S может использовать их в качестве зависимостей. ( I94C31 )

Исправление ошибок

  • Исправлена ​​проблема с проверкой LINT NullSafeMutableLiveData , когда в поле есть модификаторы. ( #147 , b/183696616 )
  • Исправлена ​​еще одна проблема с проверкой Lint NullSafeMutableLiveData Lint при использовании дженериков. ( #161 , b/184830263 )

Внешний вклад

Версия 2.4.0-Alpha01

24 марта 2021 г.

androidx.lifecycle:lifecycle-*:2.4.0-alpha01 выпускается. Версия 2.4.0-Alpha01 содержит эти коммиты.

Поведение изменяется

  • lifecycle-process теперь использует androidx.startup для инициализации ProcessLifecycleOwner .

    Ранее это делалось androidx.lifecycle.ProcessLifecycleOwnerInitializer .

    Если вы использовали tools:node="remove" ContentProvider , который используется для инициализации жизненного цикла процесса в прошлом, то вам нужно сделать следующее.

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

    (или)

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

Изменения API

  • Добавлен API Flow.flowWithLifecycle , который излучает значения из потока вверх по течению, когда жизненный цикл, по крайней мере, в определенном состоянии с использованием API Lifecycle.repeatOnLifecycle . Это альтернатива также новой LifecycleOwner.addRepeatinJob API. ( I0f4cd )

Исправление ошибок

  • Из жизненного цикла 2.3.1 : правило Lint NonNullableMutableLiveData теперь может правильно различаться между полевыми переменными с различной нулямицией. ( B/169249668 )

Жизненный цикл ViewModel Compose Version 1.0.0

Версия 1.0.0-альфа07

16 июня 2021 г.

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07 . Версия 1.0.0-alpha07 содержит эти коммиты.

Нарушение изменений API

  • viewModel() теперь принимает дополнительную ViewModelStoreOwner , что облегчает работу с владельцами, отличными от LocalViewModelStoreOwner . Например, теперь вы можете использовать viewModel(navBackStackEntry) чтобы получить ViewModel, связанную с конкретным навигационным графиком. ( I2628d , B/188693123 )

Версия 1.0.0-альфа06

2 июня 2021 г.

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06 . Версия 1.0.0-alpha06 содержит эти коммиты.

Обновлено, чтобы быть совместимым с Compose Version 1.0.0-beta08 .

Версия 1.0.0-альфа05

18 мая 2021 г.

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05 . Версия 1.0.0-alpha05 содержит эти коммиты.

Новые возможности

  • Обновлено, чтобы быть совместимым с Compose Version 1.0.0-beta07 .

Исправление ошибок

  • Файлы AndroidManifest из UI-test-Manifest и UI-Tooling-Data в настоящее время совместимы с Android 12 ( i6f9de , b/184718994 )

Версия 1.0.0-альфа04

7 апреля 2021 г.

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04 . Версия 1.0.0-alpha04 содержит эти коммиты.

Изменения зависимости

  • Эта версия позволяет androidx.hilt:hilt-navigation-compose и androidx.navigation:navigation-compose чтобы синхронизировать зависимости от androidx.compose.compiler:compiler:1.0.0-beta04 и androidx.compose.runtime:runtime:1.0.0-beta04 . Для 1.0.0 требуется, чтобы компилятор и совпадение времени выполнения.

Версия 1.0.0-альфа03

10 марта 2021 г.

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03 . Версия 1.0.0-alpha03 содержит эти коммиты.

Изменения API

  • LocalViewModelStoreOwner.current теперь возвращает нулевой ViewModelStoreOwner чтобы лучше определить, доступен ли ViewModelStoreOwner в текущей композиции. API, которые требуют ViewModelStoreOwner , например, viewModel() и NavHost , все еще бросают исключение, если не установлен ViewModelStoreOwner . ( IDF39a )

Lifecycle-Viewmodel-Compose Версия 1.0.0-alpha02

24 февраля 2021 г.

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02 . Версия 1.0.0-alpha02 содержит эти коммиты.

Изменения API

  • LocalViewModelStoreOwner теперь имеет provides функции, которые можно использовать с CompositionLocalProvider , заменив API asProvidableCompositionLocal() . ( I45d24 )

Lifecycle-Viewmodel-Compose Версия 1.0.0-alpha01

10 февраля 2021 г.

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 . Версия 1.0.0-alpha01 содержит эти коммиты.

Новые возможности

  • Composable и LocalViewModelStoreOwner viewModel() были перемещены из androidx.compose.ui.viewinterop этого артефакта в пакете androidx.lifecycle.viewmodel.compose . ( I7a374 )

Версия 2.3.1

Жизненный цикл версии 2.3.1

24 марта 2021 г.

androidx.lifecycle:lifecycle-*:2.3.1 выпущен. Версия 2.3.1 содержит эти коммиты.

Исправление ошибок

  • Правило Lint NonNullableMutableLiveData теперь может должным образом различать переменные поля с различной нулямицией. ( B/169249668 )

Версия 2.3.0

Версия 2.3.0

10 февраля 2021 г.

androidx.lifecycle:lifecycle-*:2.3.0 выпущен. Версия 2.3.0 содержит эти коммиты.

Основные изменения с 2.2.0

  • Поддержка SavedStateHandle для неразовых классов : SavedStateHandle теперь поддерживает ленивую сериализацию, позволяя вам позвонить в setSavedStateProvider() для данного ключа, предоставляя SavedStateProvider , который получит обратный вызов для saveState() , когда SavedStateHandle просят сохранить его состояние. См. Сохранение не-ласковых классов .
  • Содействие поведению жизненного цикла :
    • LifeCyclereGistry в настоящее время обеспечивает DESTROYED как терминальное государство.
    • LifecycleRegistry теперь проверяет, что ее методы вызываются в основной поток. Это всегда было требованием для жизненных циклов деятельности, фрагментов и т. Д. Добавление наблюдателей из неэ-мэльных потоков привело к трудностям в сбоях во время выполнения. Для объектов LifecycleRegistry , которые принадлежат вашим собственным компонентам, вы можете явно отказаться от чеков, используя LifecycleRegistry.createUnsafe(...) , но затем вы должны убедиться, что правильная синхронизация введена, когда доступна к этой LifecycleRegistry .
  • Помогатели жизни и события жизненного цикла : добавлены статические вспомогательные методы downFrom(State) , downTo(State) , upFrom(State) , upTo(State) в Lifecycle.Event для создания Event с учетом State и направления перехода. Добавлен метод getTargetState() , который предоставляет State , что жизненный цикл будет переходить непосредственно после Event .
  • withStateAtLeast : Добавлен API Lifecycle.withStateAtLeast , которые ожидают состояния жизненного цикла и запускают не подвижный блок кодового синхронного в точке состояния, а затем возобновите с результатом. Эти API отличаются от when* методов, поскольку они не разрешают запуск приостановленного кода и не используют пользовательский диспетчер. ( AOSP/1326081 )
  • API ViewTree : новый ViewTreeLifecycleOwner.get(View) и ViewTreeViewModelStoreOwner.get(View) API позволяет получить содержащий LifecycleOwner и ViewModelStoreOwner , соответственно, с учетом экземпляра View . Вы должны перейти на действие 1.2.0 и фрагмент 1.3.0 , а также AppCompat 1.3.0-Alpha01 или выше, чтобы правильно заполнить это. findViewTreeLifecycleOwner и findViewTreeViewModelStoreOwner Kotlin расширения доступны в lifecycle-runtime-ktx и lifecycle-viewmodel-ktx , соответственно.
  • LiveData.observe() Увеличение удлинения котлина : расширение LiveData.observe() Kotlin, необходимое для использования синтаксиса Lambda, теперь устарело, поскольку это не требуется при использовании Kotlin 1.4.

Версия 2.3.0-RC01

16 декабря 2020 г.

androidx.lifecycle:lifecycle-*:2.3.0-rc01 выпускается. Версия 2.3.0-RC01 содержит эти коммиты.

Исправление ошибок

  • Метод keys() SavedStateHandle теперь согласован до и после сохранения состояния - теперь он включает в себя ключи, ранее используемые с setSavedStateProvider() в дополнение к ключам, используемым с set() и getLiveData() . ( AOSP/1517919 , B/174713653 )

Внешний вклад

Версия 2.3.0-бета01

1 октября 2020 г.

androidx.lifecycle:lifecycle-*:2.3.0-beta01 выпускается. Версия 2.3.0-бета01 содержит эти коммиты.

Изменения API

  • Расширение Kotlin LiveData.observe() , необходимое для использования синтаксиса Lambda, теперь устарело, поскольку это не требуется при использовании Kotlin 1.4. ( I40d3f )

Исправление ошибок

КОМЕНТАЦИЯ ИЗМЕНЕНИЯ

  • Документы liveData Builder и asLiveData() были обновлены, чтобы включить подробности об изменении заданных значений тайм -аута. ( AOSP/1122324 )

Версия 2.3.0-Alpha07

19 августа 2020 г.

androidx.lifecycle:lifecycle-*:2.3.0-alpha07 выпускается. Версия 2.3.0-Alpha07 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​проблема с аварией в чек на NullSafeMutableLiveData lint. ( AOSP/1395367 )

Версия 2.3.0-Alpha06

22 июля 2020 г.

androidx.lifecycle:lifecycle-*:2.3.0-alpha06 выпускается. Версия 2.3.0-Alpha06 содержит эти коммиты.

Новые возможности

  • Добавлены статические вспомогательные методы downFrom(State) , State downTo(State) , upFrom(State) , upTo(State) Event Lifecycle.Event . Добавлен метод getTargetState() , который предоставляет State , что жизненный цикл будет переходить непосредственно после Event . ( I00887 )
  • Добавлен API Lifecycle.withStateAtLeast , которые ожидают состояния жизненного цикла, и запускают не подвижный блок кода синхронно в точке изменения состояния, затем возобновите с результатом. Эти API отличаются от when* методов, поскольку они не разрешают запуск приостановленного кода и не используют пользовательский диспетчер. ( AOSP/1326081 )

Поведение изменяется

  • LifeCyclereGistry в настоящее время обеспечивает DESTROYED как терминальное государство. ( I00887 )
  • LifecycleRegistry теперь проверяет, что ее методы вызываются в основной поток. Это всегда было требованием для жизненных циклов деятельности, фрагментов и т. Д. Добавление наблюдателей из неэ-мэльных потоков привело к трудностям в сбоях во время выполнения. Для объектов LifecycleRegistry , которые принадлежат вашим собственным компонентам, вы можете явно отказаться от проверки, используя LifecycleRegistry.createUnsafe(...) , но тогда вы должны убедиться, что соответствующая синхронизация введена, когда эта LifecycleRegistry доступна из разных потоков ( IE7280 , B/137392809 )

Исправление ошибок

  • Исправлена ​​авария в NullSafeMutableLiveData . ( B/159987480 )
  • Исправлена ObsoleteLintCustomCheck для чеков с ворсом, связанными с lifecycle-livedata-core-ktx (и, в частности, NullSafeMutableLiveData ). ( B/158699265 )

Версия 2.3.0-Alpha05

24 июня 2020 г.

androidx.lifecycle:lifecycle-*:2.3.0-alpha05 выпускается. Версия 2.3.0-Alpha05 содержит эти коммиты.

Исправление ошибок

  • LiveData теперь лучше обрабатывает случаи повторного въезда, избегая дублирующих вызовов onActive() или onInactive() . ( B/157840298 )
  • Исправлена ​​проблема, когда проверки Lint не будут работать при использовании Android Studio 4.1 Canary 6 или выше. ( AOSP/1331903 )

Версия 2.3.0-альфа04

10 июня 2020 г.

androidx.lifecycle:lifecycle-*:2.3.0-alpha04 выпускается. Версия 2.3.0-Alpha04 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​авария в проверке LINT NonNullableMutableLiveData . ( B/157294666 )
  • Проверка Lint NonNullableMutableLiveData теперь охватывает значительно больше случаев, когда на MutableLiveData было установлено значение null значения с параметрам не нулевого типа. ( б/156002218 )

Версия 2.3.0-Alpha03

20 мая 2020 г.

androidx.lifecycle:lifecycle-*:2.3.0-alpha03 выпускаются. Версия 2.3.0-Alpha03 содержит эти коммиты.

Новые возможности

  • SavedStateHandle теперь поддерживает ленивую сериализацию, позволяя вам вызовать setSavedStateProvider() для данного ключа, предоставляя SavedStateProvider , который получит обратный вызов saveState() когда SavedStateHandle просят сохранить свое состояние. ( B/155106862 )
  • Новый API ViewTreeViewModelStoreOwner.get(View) позволяет получить содержащий ViewModelStoreOwner данный экземпляр View . Вы должны перейти на активность 1.2.0-alpha05 , фрагмент 1.3.0-alpha05 и Appcompat 1.3.0-alpha01 чтобы правильно заполнить это. Расширение Kotlin findViewModelStoreOwner() было добавлено в lifecycle-viewmodel-ktx . ( AOSP/1295522 )

Исправление ошибок

  • Исправлена ​​проблема, которая привела к тому, что чеки Lint MutableLiveData , выпущенные в жизненном цикле 2.3.0-alpha01 были опубликованы вместе с артефактом lifecycle-livedata-core-ktx . ( B/155323109 )

Версия 2.3.0-Alpha02

29 апреля 2020 г.

androidx.lifecycle:lifecycle-*:2.3.0-alpha02 выпускается. Версия 2.3.0-Alpha02 содержит эти коммиты.

Изменения API

  • SavedStateViewModelFactory теперь позволяет вам передавать нулевое Application к своему конструктору для лучшей поддержки случаев, когда кто -то недоступен, и поддержка AndroidViewModel не нужна. ( AOSP/1285740 )

Исправление ошибок

  • Улучшенная производительность холодного запуска, избегая сбоя проверки класса на API 28 и нижних устройствах. ( AOSP/1282118 )

Версия 2.3.0-Alpha01

4 марта 2020 г.

androidx.lifecycle:lifecycle-*:2.3.0-alpha01 выпускается. Версия 2.3.0-Alpha01 содержит эти коммиты.

Новые возможности

  • Новый API ViewTreeLifecycleOwner.get(View) позволяет получить содержащий LifecycleOwner учитывая экземпляр View . Вы должны перейти на действие 1.2.0-alpha01 и фрагмент 1.3.0-alpha01 чтобы правильно заполнить это. findViewTreeLifecycleOwner Kotlin Extension доступен в lifecycle-runtime-ktx . ( AOSP/1182361 , AOSP/1182956 )
  • Добавлена ​​новая проверка Lint, которая предупреждает вас при установлении null значения на MutableLiveData , которая была определена в Котлине как не нулевой. Это доступно при использовании артефактов livedata-core-ktx или livedata-ktx . ( AOSP/1154723 , AOSP/1159092 )
  • Доступен новый артефакт lifecycle-runtime-testing , который обеспечивает TestLifecycleOwner , который реализует LifecycleOwner и обеспечивает безопасный Lifecycle потока. ( AOSP/1242438 )

Исправление ошибок

  • Артефакт lifecycle-runtime теперь имеет уникальное название пакета. ( AOSP/1187196 )

Версия 2.2.0

ViewModel-SavedState версия 2.2.0

5 февраля 2020 г.

androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0 выпускается. Версия 2.2.0 содержит эти коммиты .

LifeCycle ViewModel SaveState теперь имеет ту же версию, что и другие артефакты жизненного цикла. Поведение 2.2.0 идентично поведению 1.0.0 .

Версия 2.2.0

22 января 2020 г.

androidx.lifecycle:lifecycle-*:2.2.0 выпущен. Версия 2.2.0 содержит эти коммиты .

Важные изменения с 2,1,0

  • Интеграция жизненного цикла Coroutine : Новый артефакт lifecycle-runtime-ktx добавляет интеграцию между жизненным циклом и коратиками Kotlin. lifecycle-livedata-ktx также был расширен, чтобы воспользоваться CORUTINES. См. Используйте коратики Kotlin с компонентами архитектуры для получения более подробной информации.
  • ViewModelProviders.of() Tempercation : ViewModelProviders.of() устарел. Вы можете передать Fragment или FragmentActivity конструктору New ViewModelProvider(ViewModelStoreOwner) для достижения той же функциональности при использовании фрагмента 1.2.0 .
  • Исключение артефактов lifecycle-extensions : с приведенной выше устаревшей ViewModelProviders.of() этот выпуск знаменует собой снижение последнего API в lifecycle-extensions , и этот артефакт теперь следует считать в его полной ситуации. Мы настоятельно рекомендуем в зависимости от конкретных артефактов жизненного цикла, которые вам нужны (например lifecycle-service , если вы используете LifecycleService и lifecycle-process , если вы используете ProcessLifecycleOwner ), а не lifecycle-extensions так как не будет будущего выпуска 2.3.0 lifecycle-extensions .
  • Процессор постепенного аннотации Gradle : процессор аннотации LifeCycle по умолчанию является инкрементным. Если ваше приложение написано на языке программирования Java 8, вы можете вместо этого использовать DefautLifecycleObserver ; И если он написан на языке программирования Java 7, вы можете использовать LifecycleEventObserver .

Версия 2.2.0-RC03

4 декабря 2019 г.

androidx.lifecycle:lifecycle-*:2.2.0-rc03 выпускается. Версия 2.2.0-RC03 содержит эти коммиты .

Исправление ошибок

  • Исправлена ​​сбой, возникающий, когда в ViewModelStore хранился издевательная ViewModel и запрашивалась позже на фабрике по умолчанию.
  • Исправьте использование Dispatchers.Main.immediate в launchWhenCreated . ( AOSP/1156203 )

Внешние взносы

  • Спасибо Андерсу Ярлебергу за то, что внесли свой вклад! ( AOSP/1156203 )
  • Благодаря Vsevolod tolstopyatov из Jetbrains за просмотр реализации вставленного выполнения.

Изменения зависимости

  • Расширения жизненного цикла теперь зависит от фрагмента 1.2.0-rc03 .

Версия 2.2.0-RC02

7 ноября 2019 г.

androidx.lifecycle:lifecycle-*:2.2.0-rc02 выпущен. Версия 2.2.0-RC02 содержит эти коммиты .

Исправление ошибок

  • Исправлена ​​ошибка в настройке прогарда библиотеки, которая затронула устройства, управляющие API 28+, если целевой API ниже 29. ( B/142778206 )

Версия 2.2.0-RC01

23 октября 2019 г.

androidx.lifecycle:lifecycle-*:2.2.0-rc01 выпускается. Версия 2.2.0-RC01 содержит эти коммиты .

Исправление ошибок

  • Исправлена ​​проблема, в которой launchWhenCreated и связанные с ними методы будут выполнять один кадр позже, чем связанный метод жизненного цикла из -за его использования Dispatchers.Main Main вместо Dispatchers.Main.immediate . Main.Mimediate. ( AOSP/1145596 )

Внешние взносы

  • Thanks to Nicklas Ansman for contributing the fix! ( aosp/1145596 )

Version 2.2.0-beta01

9 октября 2019 г.

androidx.lifecycle:lifecycle-*:2.2.0-beta01 is released. Version 2.2.0-beta01 contains these commits .

Исправление ошибок

  • Fixed a regression introduced in Lifecycle 2.2.0-alpha05 in the ordering of ProcessLifecycleOwner and the activity's LifecycleOwner moving to started and resumed on Android 10 devices. ( aosp/1128132 )
  • Fixed a regression introduced in Lifecycle 2.2.0-alpha05 which would cause a NullPointerException when using version 2.0.0 or 2.1.0 of lifecycle-process . ( b/141536990 )

Version 2.2.0-alpha05

18 сентября 2019 г.

androidx.lifecycle:lifecycle-*:2.2.0-alpha05 is released. Version 2.2.0-alpha05 contains these commits .

Исправление ошибок

  • Fixed a race condition in coroutine livedata builder. b/140249349

Version 2.2.0-alpha04

5 сентября 2019 г.

androidx.lifecycle:lifecycle-*:2.2.0-alpha04 is released. The commits included in this version can be found here .

Новые возможности

  • lifecycleScope , whenCreated , whenStarted , whenResumed , viewModelScope , and the underlying implementation of liveData now use Dispatchers.Main.immediate instead of Dispatchers.Main . ( b/139740492 )

External contributions

  • Thanks to Nicklas Ansman for contributing the move to Dispatchers.Main.immediate ! ( aosp/1106073 )

Version 2.2.0-alpha03

7 августа 2019 г.

androidx.lifecycle:lifecycle-*:2.2.0-alpha03 is released. The commits included in this version can be found here .

Новые возможности

API changes

  • ViewModelProviders.of() has been deprecated. You can pass a Fragment or FragmentActivity to the new ViewModelProvider(ViewModelStoreOwner) constructor to achieve the same functionality. ( aosp/1009889 )

Version 2.2.0-alpha02

2 июля 2019 г.

androidx.lifecycle:*:2.2.0-alpha02 is released. The commits included in this version can be found here .

API changes

  • Replaced LiveDataScope.initialValue with LiveDataScope.latestValue which will track the current emitted value of the liveData block.
  • Added a new overload to the liveData builder that receives timeout parameter as type Duration

Version 2.2.0-alpha01

7 мая 2019 г.

androidx.lifecycle:*:2.2.0-alpha01 is released. The commits included in this version can be found here .

Новые возможности

  • This release adds new features that adds support for Kotlin coroutines for Lifecycle and LiveData. Detailed documentation on them can be found here .

ViewModel-SavedState Версия 1.0.0

Версия 1.0.0

22 января 2020 г.

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0 is released. Version 1.0.0 contains these commits .

Important features in 1.0.0

  • New SavedStateHandle class was added. It enables your ViewModel classes to access and to contribute to the saved state. This object can be received in constructor of ViewModel class and factories provided by default by Fragments and AppCompatActivity will inject SavedStateHandle automatically.
  • AbstractSavedStateViewModelFactory was added. It allows you to create custom factories for your ViewModel and provide them access to SavedStateHandle .

ViewModel-Savedstate Version 1.0.0-rc03

4 декабря 2019 г.

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03 is released. Version 1.0.0-rc03 contains these commits .

Dependency changes

  • Lifecycle ViewModel SavedState now depends on Lifecycle 2.2.0-rc03 .

Viewmodel-Savedstate Version 1.0.0-rc02

7 ноября 2019 г.

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02 is released. Version 1.0.0-rc02 contains these commits .

Dependency changes

  • Now depends on lifecycle 2.2.0-rc02 .

ViewModel-SavedState Version 1.0.0-rc01

23 октября 2019 г.

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01 is released with no changes from 1.0.0-beta01 . Версия 1.0.0-rc01 содержит эти коммиты .

ViewModel-Savedstate Version 1.0.0-beta01

9 октября 2019 г.

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01 is released. Версия 1.0.0-beta01 содержит эти коммиты .

Исправление ошибок

  • Fixed an issue where accessing a SavedState ViewModel for the first time in Activity.onActivityResult() would result in an IllegalStateException . ( b/139093676 )
  • Fixed an IllegalStateException when using AbstractSavedStateViewModelFactory . ( b/141225984 )

ViewModel-SavedState Version 1.0.0-alpha05

18 сентября 2019 г.

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05 is released. Version 1.0.0-alpha05 contains these commits .

API changes

  • SavedStateViewModelFactory no longer extends AbstractSavedStateViewModelFactory and SavedStateHandle is created only for ViewModels that requested have it ( aosp/1113593 )

ViewModel-SavedState Version 1.0.0-alpha03

7 августа 2019 г.

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03 is released. The commits included in this version can be found here .

Breaking Changes

ViewModel-SavedState Версия 1.0.0-alpha02

2 июля 2019 г.

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02 is released. The commits included in this version can be found here .

Новые возможности

  • Added SavedStateHandle.getLiveData() overload which accepts a default value.

Изменения API

  • SavedStateVMFactory is renamed to SavedStateViewModelFactory .
  • AbstractSavedStateVMFactory is renamed to AbstractSavedStateViewModelFactory .

ViewModel-Savedstate Version 1.0.0-alpha01

13 марта 2019 г.

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01 is released. The full commit log for this initial release can be found here .

Новые возможности

  • Now ViewModels can contribute to savedstate. To do that you use newly introduced viewmodel's factory SavedStateVMFactory and your ViewModel should have a constructor that receives SavedStateHandle object as a parameter.

Version 2.1.0

Important changes since 2.0.0

  • Added LifecycleEventObserver for the cases when a stream of lifecycle events is needed. It is a public API instead of a hidden GenericLifecycleObserver class.
  • Added ktx extensions for LiveData.observe methods and Transformations.* methods.
  • Added Transformations.distinctUntilChanged , which creates a new LiveData object that does not emit a value until the source LiveData value has been changed.
  • Added coroutine support in ViewModels by adding the extension property ViewModel.viewModelScope .

Version 2.1.0

5 сентября 2019 г.

androidx.lifecycle:lifecycle-*:2.1.0 is released. The commits included in this version can be found here .

Version 2.1.0-rc01

2 июля 2019 г.

androidx.lifecycle:*:2.1.0-rc01 is released with no changes from androidx.lifecycle:*:2.1.0-beta01 . The commits included in this version can be found here .

Version 2.1.0-beta01

7 мая 2019 г.

androidx.lifecycle:*:2.1.0-beta01 is released. The commits included in this version can be found here .

Новые возможности

  • Lifecycles are graduated to beta: api introduced in previous alphas such as liveData extension functions for transformations and observations, ViewModel initialisation with property delegation and others are stabilised and not going to change.

Version 2.1.0-alpha04

April 3, 2019

androidx.lifecycle:*:2.1.0-alpha04 is released. The commits included in this version can be found here .

API changes

  • Breaking change: the underlying API behind by viewModels() and by activityViewModels() has been changed to support a ViewModelStore directly, rather than only a ViewModelStoreOwner . ( aosp/932932 )

Version 2.1.0-alpha03

13 марта 2019 г.

androidx.lifecycle:*:2.1.0-alpha03 is released. The full list of commits included in this version can be found here .

API changes

  • ViewModelProvider.KeyedFactory was removed. Second interface in addition to ViewModelProvider.Factory didn't compose well with new features as property delegation in Kotlin by viewmodels {} . ( aosp/914133 )

Version 2.1.0-alpha02

30 января 2019 г.

androidx.lifecycle 2.1.0-alpha02 is released.

API changes

  • LifecycleRegistry now contains a setCurrentState() method that replaces the now deprecated setState() method. ( aosp/880715 )

Исправление ошибок

  • Fixed an issue where mock ViewModel instances would crash when the containing ViewModelStore was cleared. b/122273087

Version 2.1.0-alpha01

17 декабря 2018 г.

androidx.lifecycle 2.1.0-alpha01 is released.

Новые возможности

  • Added LifecycleEventObserver for the cases when a stream of lifecycle events is needed. It is a public api instead of a hidden GenericLifecycleObserver class.
  • Added ktx extensions for LiveData.observe methods and Transformations.* methods.
  • Method Transformations.distinctUntilChanged was added. It creates a new LiveData object that does not emit a value until the source LiveData value has been changed.
  • Coroutine support in ViewModels: extension property ViewModel.viewModelScope was added.
  • Added ViewModelProvider.KeyedFactory , a factory for ViewModels that receives key and Class in create method.

Version 2.0.0

Version 2.0.0

September 21, 2018

Lifecycle 2.0.0 is released with one bugfix from 2.0.0-rc01 in ViewModel.

Исправление ошибок

  • Fixed a ViewModel proguard rule that incorrectly removed constructors b/112230489

Version 2.0.0-beta01

July 2, 2018

Исправление ошибок

  • Fixed LifecycleObserver proguard rule to keep only implementations, not subinterfaces b/71389427
  • Fixed ViewModel proguard rules to allow obfuscation and shrinking

Pre-AndroidX Versions

For the pre-AndroidX versions of Lifecycle that follow, include these dependencies:

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

Version 1.1.1

21 марта 2018 г.

Only one small change: android.arch.core.util.Function is moved from arch:runtime to arch:common . This allows it to be used without the runtime dependency, eg in paging:common below.

lifecycle:common is a dependency of lifecycle:runtime , so this change doesn't affect lifecycle:runtime directly, only modules that depend directly on lifecycle:common , as Paging does.

Версия 1.1.0

January 22, 2018

Packaging Changes

New, much smaller dependencies are now available:

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

Изменения API

  • The deprecated LifecycleActivity and LifecycleFragment have now been removed - please use FragmentActivity , AppCompatActivity or support Fragment .
  • @NonNull annotations have been added to ViewModelProviders and ViewModelStores
  • ViewModelProviders constructor has been deprecated - please use its static methods directly
  • ViewModelProviders.DefaultFactory has been deprecated - please use ViewModelProvider.AndroidViewModelFactory
  • The static ViewModelProvider.AndroidViewModelFactory.getInstance(Application) method has been added to retrieve a static Factory suitable for creating ViewModel and AndroidViewModel instances.