Жизненный цикл
В этой таблице перечислены все артефакты в группе androidx.lifecycle
.
Артефакт | Стабильный релиз | Кандидат на релиз | Бета-релиз | Альфа-релиз |
---|---|---|---|---|
жизненный цикл-* | 2.9.0 | - | - | - |
жизненный цикл-видмодель-навигация3 | - | - | - | 1.0.0-альфа01 |
Объявление зависимостей
Чтобы добавить зависимость от Lifecycle, необходимо добавить репозиторий Google Maven в свой проект. Прочтите репозиторий Google Maven для получения дополнительной информации.
Добавьте зависимости для необходимых артефактов в файл build.gradle
для вашего приложения или модуля:
Котлин
Круто
dependencies { def lifecycle_version = "2.9.0" 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" // ViewModel integration with Navigation3 implementation "androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha01" // 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.9.0" 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") // ViewModel integration with Navigation3 implementation("androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha01") // 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.9.0" 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.9.0" 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 лучше. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете добавить свой голос к существующей проблеме, нажав кнопку со звездочкой.
Более подробную информацию смотрите в документации Issue Tracker .
Lifecycle ViewModel Navigation3 Версия 1.0.0
Версия 1.0.0-альфа01
23 мая 2025 г.
Выпущен androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha01
. Версия 1.0.0-alpha01 содержит эти коммиты .
Новые возможности
- Lifecycle ViewModel Navigation3 — это новая библиотека, созданная вместе с Navigation3 для обеспечения интеграции с
ViewModels
. Артефактandroidx.lifecycle:lifecycle-viewmodel-navigation3
предоставляетViewModelStoreNavEntryDecorator
, который предоставляет уникальныйViewModelStoreOwner
для содержимого каждогоNavEntry
. Он также предоставляетrememberViewModelStoreNavEntryDecorator()
для обеспечения правильной обработки декоратора изменениями конфигурации.
val viewModelDecorator = rememberViewModelStoreNavEntryDecorator()
NavDisplay(
…,
entryDecorators =
listOf(
rememberSceneSetupNavEntryDecorator(),
rememberSavedStateNavEntryDecorator(),
viewModelDecorator
)
)
Версия 2.9
Версия 2.9.0
7 мая 2025 г.
Выпущен androidx.lifecycle:lifecycle-*:2.9.0
. Версия 2.9.0 содержит эти коммиты .
Важные изменения по сравнению с версией 2.8.0
- Доступен новый артефакт KMP
androidx.lifecycle:lifecycle-viewmodel-testing
, который предоставляет классViewModelScenario
для тестированияViewModels
в изоляции с поддержкойonCleared
иSavedStateHandle
, а также тестирования завершения и восстановления процесса с помощьюrecreate()
. - Добавьте
getMutableStateFlow
вSavedStateHandle
для возвратаMutableStateFlow
. Эта новая функция является ключ-эксклюзивной и не может использоваться сgetLiveData
. Будет выдано исключение, если вы попытаетесь использовать обе для доступа к одному и тому же состоянию. -
CreationExtras
теперь включает перегрузки операторов, подобных картам, для идиоматической манипуляции содержимым в Kotlin. Он позволяет использоватьin
,+=
и+
сCreationExtras
.
Поддержка сериализации KotlinX
С поддержкой сериализации KotlinX, добавленной в SavedState
1.3.0
, мы ввелиsaved
, ленивый делегат свойств, чтобы упростить сохранение классов@Serializable
вSavedStateHandle
и автоматическое восстановление этих классов при завершении и восстановлении процесса. Обратите внимание, чтоsaved
делегат является ленивым и не будет вызывать лямбдуinit
или сохранять что-либо вSavedStateHandle
, пока к нему не будет получен доступ.@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
Kotlin Мультиплатформенный
- Модуль
lifecycle-testing
теперь совместим с KMP, включая такие API, какTestLifecycleOwner
. - Модуль
lifecycle-viewmodel-savedstate
теперь совместим с KMP, включая такие API, какSavedStateHandle
. -
androidx.compose.ui.platform.LocalLifecycleOwner
теперь доступен в общем исходном наборе. -
NewInstanceFactory
теперь доступен на платформах JVM Desktop и Android.
Изменения в поведении
- Состояние
Lifecycle.DESTROYED
является конечным, и любая попытка перевестиLifecycle
из него в любое другое состояние теперь приведет к исключениюIllegalStateException
. -
SavedStateHandle
больше не включаетSavedStateProvider.saveState()
, где возвращаемыйBundle
пуст.
Версия 2.9.0-rc01
23 апреля 2025 г.
Выпущен androidx.lifecycle:lifecycle-*:2.9.0-rc01
. Версия 2.9.0-rc01 содержит эти коммиты .
Версия 2.9.0-beta01
9 апреля 2025 г.
Выпущен androidx.lifecycle:lifecycle-*:2.9.0-beta01
. Версия 2.9.0-beta01 содержит эти коммиты .
Изменения API
-
Lifecycle ViewModel Compose
теперь использует ту же настройку Kotlin Multiplatform, что и Compose Runtime 1.7.1 и выше — артефакты-desktop
теперь удалены, а артефакты-jvmStubs
и-linuxx64Stubs
добавлены. Ни одна из этих целей не предназначена для использования, они являются заполнителями, помогающими усилиям Jetbrains Compose. ( I5cb14 , b/406592090 )
Обновления зависимостей
- Эта библиотека теперь ориентирована на уровень языка Kotlin 2.0 и требует KGP 2.0.0 или более поздней версии. ( Idb6b5 )
-
Lifecycle ViewModel Compose
теперь зависит от Compose 1.7.8. ( I5cb14 , b/406592090 )
Версия 2.9.0-альфа13
26 марта 2025 г.
androidx.lifecycle:lifecycle-*:2.9.0-alpha13
выпущен без заметных публичных изменений. Версия 2.9.0-alpha13 содержит эти коммиты .
Версия 2.9.0-альфа12
12 марта 2025 г.
Выпущен androidx.lifecycle:lifecycle-*:2.9.0-alpha12
. Версия 2.9.0-alpha12 содержит эти коммиты .
Изменения API
- Добавьте аннотацию
@MainThread
вViewModelProvider.get
на всех поддерживаемых платформах KMP. ( I7e8dd , b/397736115 ) - Переименуйте
SavedState*Delegates
вSavedState*Delegate
. ( I8589b , b/399629301 )
Версия 2.9.0-альфа11
26 февраля 2025 г.
Выпущен androidx.lifecycle:lifecycle-*:2.9.0-alpha11
. Версия 2.9.0-alpha11 содержит эти коммиты .
Изменения API
- Добавить параметр
SavedStateConfig
к делегатамsaved()
( I39b3a )
Версия 2.9.0-альфа10
12 февраля 2025 г.
Выпущен androidx.lifecycle:lifecycle-*:2.9.0-alpha10
. Версия 2.9.0-alpha10 содержит эти коммиты .
Изменения API
- Переместить
MutableStateSerializer
вsavedstate-compose
изlifecycle-viewmodel-compose
. ( I4f690 , b/378895074 )
Внешний вклад
- Добавляет новую проблему Lint для вызова
Lifecycle::currentState
в композиции, вместо этого предлагая использоватьcurrentStateAsalue().value
, чтобы гарантировать, что изменения в состоянии Lifecycle правильно вызывают перекомпозицию. Спасибо, Стивен Шен! ( Iad484 )
Версия 2.9.0-альфа09
29 января 2025 г.
Выпущен androidx.lifecycle:lifecycle-*:2.9.0-alpha09
. Версия 2.9.0-alpha09 содержит эти коммиты .
Новые возможности
- Добавить
MutableStateSerializer
для сериализацииandroidx.compose.runtime.MutableState
. ( Idfc48 , b/378895074 )
Изменения API
- Заменить перегруженные функции делегата
SavedStateHandle.saved()
параметрами по умолчанию ( Icd1c1 ) -
AbstractSavedStateViewModelFactory
устарел, так как он создаетSavedStateHandle
для каждойViewModel
, что приводит к ненужным накладным расходам. ИспользуйтеViewModelProvider.Factory
сCreationExtras.createSavedStateHandle
вместо этого для более эффективного созданияViewModel
. ( Ia920b , b/388590327 )
Версия 2.9.0-альфа08
11 декабря 2024 г.
Выпущен androidx.lifecycle:lifecycle-*:2.9.0-alpha08
. Версия 2.9.0-alpha08 содержит эти коммиты .
Новые возможности
- Добавьте
ViewModelScenario.recreate
для имитации смерти системного процесса, воссоздающего тестируемуюViewModel
и все связанные с ней компоненты. ( Id6a69 , b/381063087 ) - Экземпляры
LifecycleOwner
иViewModelStoreOwner
, извлеченные через соответствующие APIfindViewTree
, теперь могут быть разрешены через непересекающиеся родительские элементы представления, такие какViewOverlay
. См. заметки о выпуске ядра или документацию вViewTree.setViewTreeDisjointParent
для получения дополнительной информации о непересекающихся родительских элементах представления. ( I800f4 )
Изменения API
- Сделать наименования и организацию пакетов более согласованными с
SavedStateRegistryOwnerDelegate
( I8c135 , b/376026744 )
Исправление ошибок
- Эта библиотека теперь использует аннотации nullness JSpecify , которые являются type-use. Разработчики Kotlin должны использовать следующий аргумент компилятора для обеспечения правильного использования:
-Xjspecify-annotations=strict
(это значение по умолчанию, начиная с версии 2.1.0 компилятора Kotlin). ( Ie4340 , b/326456246 ) - Документ
ViewModel.onCleared
очищает последовательность. ( I586c7 , b/363984116 )
Версия 2.9.0-альфа07
13 ноября 2024 г.
Выпущен androidx.lifecycle:lifecycle-*:2.9.0-alpha07
. Версия 2.9.0-alpha07 содержит эти коммиты .
Совместимость Kotlin с разными платформами
- Lifecycle
ViewModel SavedState
теперь совместим с KMP. Это позволяет использоватьSavedStateHandle
в общем коде. ( Ib6394 , b/334076622 )
Поддержка сериализации KotlinX
С поддержкой сериализации KotlinX, добавленной в SavedState
1.3.0-alpha05
, мы ввелиsaved
, ленивый делегат свойств, чтобы упростить сохранение классов@Serializable
вSavedStateHandle
и автоматическое восстановление этих классов при завершении и восстановлении процесса. Обратите внимание, чтоsaved
делегат является ленивым и не будет вызывать лямбдуinit
или сохранять что-либо вSavedStateHandle
, пока к нему не будет получен доступ. ( I47a88 , b/376026744 )@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
Изменения API
- Добавьте
getMutableStateFlow
вSavedStateHandle
для возвратаMutableStateFlow
. Эта новая функция является ключ-эксклюзивной и не может использоваться сgetLiveData
. Будет выдано исключение, если вы попытаетесь использовать обе для доступа к одному и тому же состоянию. ( I04a4f , b/375408415 )
Версия 2.9.0-альфа06
30 октября 2024 г.
Выпущен androidx.lifecycle:lifecycle-*:2.9.0-alpha06
. Версия 2.9.0-alpha06 содержит эти коммиты .
Изменения в поведении
- Состояние
Lifecycle.DESTROYED
является конечным, и любая попытка переместитьLifecycle
из него в любое другое состояние теперь приведет к исключениюIllegalStateException
. ( I116c4 , b/370577987 ) -
SavedStateHandle
больше не включаетSavedStateProvider.saveState()
, где возвращаемыйBundle
пуст. ( I910b5 , b/370577987 )
Исправление ошибок
-
Lifecycle.eventFlow
теперь корректно завершается, когдаLifecycle
DESTROYED
( I293b2 , b/374043130 )
Версия 2.9.0-альфа05
16 октября 2024 г.
androidx.lifecycle:lifecycle-*:2.9.0-alpha05
выпущен без заметных изменений. Версия 2.9.0-alpha05 содержит эти коммиты .
Версия 2.9.0-альфа04
2 октября 2024 г.
Выпущен androidx.lifecycle:lifecycle-*:2.9.0-alpha04
. Версия 2.9.0-alpha04 содержит эти коммиты .
Kotlin Мультиплатформенный
- Модуль
lifecycle-viewmodel-savedstate
теперь настроен на совместимость с KMP в рамках подготовки к тому, что такие API, какSavedStateHandle
, станут доступны в общем исходном наборе в будущем выпуске. ( I503ed , I48764 , b/334076622 )
Версия 2.9.0-альфа03
18 сентября 2024 г.
Выпущен androidx.lifecycle:lifecycle-*:2.9.0-alpha03
. Версия 2.9.0-alpha03 содержит эти коммиты .
Исправление ошибок
- Из Lifecycle
2.8.6
: ОшибкаNullSafeMutableLiveData
Lint улучшила поддержку интеллектуальных преобразований, избежав ложных срабатываний. ( 85fed6 , b/181042665 )
Обновления зависимостей
- Начиная с Lifecycle
2.8.6
: Lifecycle Runtime Compose теперь зависит от Compose Runtime1.7.1
- Lifecycle Runtime теперь зависит от ProfileInstaller
1.4.0
Версия 2.9.0-альфа02
4 сентября 2024 г.
Выпущен androidx.lifecycle:lifecycle-*:2.9.0-alpha02
. Версия 2.9.0-alpha02 содержит эти коммиты .
Исправление ошибок
- Из Lifecycle
2.8.5
: обновите правилаandroidx.lifecycle.ReportFragment
ProGuard, чтобы разрешить обфускацию. ( ff898e1 )
Внешний вклад
- Переместить
androidx.compose.ui.platform.LocalLifecycleOwner
в общий исходный набор (KMP). Спасибо Ивану Маткову из JetBrains за вклад. ( 8cd5d03 ) - Из Lifecycle
2.8.5
: делегат расширения SavedStateHandle.saveable` теперь поддерживает значения, допускающие значение null. Спасибо Роману Калукевичу за вклад. ( 0d78ea6 )
Версия 2.9.0-альфа01
7 августа 2024 г.
Выпущен androidx.lifecycle:lifecycle-*:2.9.0-alpha01
. Версия 2.9.0-alpha01 содержит эти коммиты .
Kotlin Мультиплатформенный
-
lifecycle-testing
теперь совместимо с KMP. ( Iea41e ) - Добавить поддержку для многоплатформенной цели
linuxArm64
kotlin ( I139d3 , b/338268719 )
Новые возможности
- Доступен новый артефакт KMP
androidx.lifecycle:lifecycle-viewmodel-testing
, который предоставляет классViewModelScenario
для тестирования ViewModels в изоляции с поддержкойonCleared
(все платформы) иSavedStateHandle
(только Android). ( 337f68d , c9b3409 , 9799a95c , b/264602919 ) - Создание
ViewModel
с помощьюViewModelProvider
теперь потокобезопасно; аннотации@MainThread
были удалены. ( Ifd978 , b/237006831 )
Изменения API
- Добавьте фабричную функцию
CreationExtras.Key()
для упрощения создания анонимных объектовCreationExtras.Key
. ( I970ee ) -
CreationExtras
теперь включает перегрузки операторов, подобных картам, для идиоматической манипуляции содержимым в Kotlin. Он позволяет использоватьin
,+=
и+
сCreationExtras
. ( Ib4353 ) -
CreationExtras
теперь реализует методыequals
,hashCode
иtoString
. ( Ib4353 ) -
NewInstanceFactory
теперь доступен на платформах JVM Desktop и Android. ( d3d0892 ) - Встроенное свойство расширения для безопасного предоставления базового приложения в версии языка Kotlin 2.0 ( I39df2 )
Исправление ошибок
- Удалено ручное описание доступа к новым API платформы, поскольку это происходит автоматически через моделирование API при использовании R8 с AGP 7.3 или более поздней версии (например, R8 версии 3.3) и для всех сборок при использовании AGP 8.1 или более поздней версии (например, D8 версии 8.1). Клиентам, не использующим AGP, рекомендуется обновиться до D8 версии 8.1 или более поздней версии. Подробнее см. в этой статье . ( If6b4c , b/345472586 )
Версия 2.8
Версия 2.8.7
30 октября 2024 г.
Выпущен androidx.lifecycle:lifecycle-*:2.8.7
. Версия 2.8.7 содержит эти коммиты .
Изменения API
-
androidx.compose.ui.platform.LocalLifecycleOwner
теперь доступен в общем исходном наборе (KMP). ( 6a3f5b3 ) -
lifecycle-runtime-compose
: артефактыdesktop
были удалены, а артефакты-jvmStubs
и-linuxx64Stubs
были добавлены. Ни одна из этих целей не предназначена для использования, они являются заполнителями для помощи усилиям Jetbrains Compose. ( 6a3f5b3 )
Версия 2.8.6
18 сентября 2024 г.
Выпущен androidx.lifecycle:lifecycle-*:2.8.6
. Версия 2.8.6 содержит эти коммиты .
Исправление ошибок
- Ошибка
NullSafeMutableLiveData
Lint улучшила поддержку интеллектуальных преобразований, избежав ложных срабатываний. ( 85fed6 , b/181042665 )
Обновления зависимостей
- Lifecycle Runtime Compose теперь зависит от Compose Runtime
1.7.1
Версия 2.8.5
4 сентября 2024 г.
Выпущен androidx.lifecycle:lifecycle-*:2.8.5
. Версия 2.8.5 содержит эти коммиты .
Исправление ошибок
- Обновите правила
androidx.lifecycle.ReportFragment
ProGuard, чтобы разрешить обфускацию. ( ff898e1 )
Внешний вклад
- Делегат расширения
SavedStateHandle.saveable
теперь поддерживает значения nullable. Спасибо Роману Калукевичу за вклад. ( 0d78ea6 )
Версия 2.8.4
24 июля 2024 г.
Выпущен androidx.lifecycle:lifecycle-*:2.8.4
. Версия 2.8.4 содержит эти коммиты .
Исправление ошибок
-
LiveData.asFlow()
теперь правильно обрабатывает случаи, когда возвращаемый поток немедленно завершается после получения значения, уже установленного вLiveData
(например, при использованииtake(1)
). ( I9c566 ) - Завершение
Lifecycle*Effect
теперь идемпотентно (т. е. еслиonStopOrDispose
был вызван из-за остановки жизненного цикла, он не будет вызван во второй раз при завершении, если только жизненный цикл снова не вернется кSTARTED
). ( I5f607 , b/352364595 )
Версия 2.8.3
1 июля 2024 г.
Выпущен androidx.lifecycle:lifecycle-*:2.8.3
. Версия 2.8.3 содержит эти коммиты .
Исправление ошибок
- Исправлена проблема обратной совместимости Lifecycle 2.8 с Compose 1.6.0 и более ранними версиями при использовании сжатия кода. ( aosp/3133056 , b/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 без необходимости каких-либо обходных путей. ( aosp/3105647 , b/336842920 ) -
ViewModelProvider
больше не будет давать сбой при смешивании предыдущих версий зависимостейcompileOnly
Lifecycle с версиями 2.8+, что устраняет проблемы с библиотеками, такими как LeakCanary. ( I80383 , b/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
для совместимости. ( aosp/3079334 , b/339562627 ) -
saveable
интеграцияViewModel
с использованием делегатов свойств теперь использует имя класса как часть автоматически сгенерированного ключа, избегая конфликтов, если несколько классов используют один и тот жеSavedStateHandle
. ( aosp/3063463 )
Версия 2.8.0
14 мая 2024 г.
Выпущен androidx.lifecycle:lifecycle-*:2.8.0
. Версия 2.8.0 содержит эти коммиты .
Важные изменения по сравнению с версией 2.7.0
-
LocalLifecycleOwner
был перемещен из Compose UI вlifecycle-runtime-compose
чтобы его вспомогательные API на основе Compose можно было использовать за пределами Compose UI. - Артефакт
lifecycle-runtime-compose
теперь содержит APIdropUnlessResumed
иdropUnlessStarted
, которые позволяют вам отбрасывать щелчки или другие события, которые происходят даже после того, какLifecycleOwner
опустился ниже заданногоLifecycle.State
. Например, это можно использовать с Navigation Compose, чтобы избежать обработки событий щелчков после того, как переход на другой экран уже начался:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
ViewModel.viewModelScope
теперь является переопределяемым параметром конструктора, что позволяет вам внедрять собственный диспетчер иSupervisorJob()
или переопределять значение по умолчанию, используяbackgroundScope
, доступный вrunTest
. ( I2817c , b/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
без ключа теперь является ошибкой, следуя тому же соглашению, что и APIDisposableEffect
, которому соответствуют эти 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 сохранена, но есть несколько заметных изменений при сравнении поверхности API Android с общей поверхностью API:
- Создание экземпляра
ViewModelProvider
теперь выполняется с помощью методовViewModelProvider.create()
, а не путем прямого вызова его конструктора. -
ViewModelProvider.NewInstanceFactory
иViewModelProvider.AndroidViewModelFactory
доступны только на Android.- Рекомендуется, чтобы пользовательские фабрики расширяли
ViewModelProvider.Factory
и использовали методcreate
, который принимаетCreationExtras
, или использовали DSLviewModelFactory
Kotlin.
- Рекомендуется, чтобы пользовательские фабрики расширяли
- Использование
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 )
Известные проблемы
-
lifecycle-*:2.8.0
требует версию Compose не ниже 1.7.0-alpha05 ( b/336842920 ).
Версия 2.8.0-rc01
1 мая 2024 г.
Выпущен androidx.lifecycle:lifecycle-*:2.8.0-rc01
. Версия 2.8.0-rc01 содержит эти коммиты .
Исправление ошибок
- Исправлена проблема, когда базовый профиль для
lifecycle-common
не был правильно упакован. Теперь они упакованы в AARlifecycle-runtime
. ( aosp/3038274 , b/322382422 ) - Исправлено непреднамеренное изменение порядка очистки экземпляров
AutoCloseable
, прикрепленных к ViewModel — восстановлен предыдущий порядокaddCloseable(String, AutoCloseable)
, затемaddClosable(AutoCloseable)
, затемonCleared()
. ( aosp/3041632 ) - Улучшено поведение создания по умолчанию для
viewModelScope
для собственных сред и сред JVM Desktop. ( aosp/3039221 )
Внешний вклад
- Спасибо Виктору Кроппу за улучшение проверки основного потока на JVM Desktop. ( aosp/3037116 )
Версия 2.8.0-beta01
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
. Чтобы учесть это изменение, метод ComposableviewModel
теперь принимаетKClass
в дополнение кjava.lang.Class
. ( b/330323282 )
Исправление ошибок
-
NullSafeMutableLiveData
был рефакторингирован, чтобы избежать множества ложных срабатываний. ( I2d8c1 , Iafb18 , I03463 , I7ecef )
Обновление зависимости
- Артефакт
lifecycle-viewmodel-compose
теперь зависит от Compose 1.6.0. - Жизненный цикл теперь зависит от Profile Installer 1.3.1 .
Версия 2.8.0-альфа03
20 марта 2024 г.
Выпущен androidx.lifecycle:lifecycle-*:2.8.0-alpha03
. Версия 2.8.0-alpha03 содержит эти коммиты .
Новые возможности
ViewModel.viewModelScope
теперь является переопределяемым параметром конструктора, что позволяет вам внедрять собственный диспетчер иSupervisorJob()
или переопределять значение по умолчанию, используяbackgroundScope
, доступный вrunTest
. ( I2817c , b/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. ( b/214568825 )
Чтобы учесть это изменение, такие методы, как методы ViewModelProvider
, которые принимали java.lang.Class<T>
теперь имеют эквивалентный метод, который принимает kotlin.reflect.KClass<T>
.
Двоичная совместимость на Android сохранена, но есть несколько заметных изменений при сравнении поверхности API Android с общей поверхностью API:
- Создание экземпляра
ViewModelProvider
теперь выполняется с помощью методовViewModelProvider.create()
, а не путем прямого вызова его конструктора. -
ViewModelProvider.NewInstanceFactory
иViewModelProvider.AndroidViewModelFactory
доступны только на Android.- Рекомендуется, чтобы пользовательские фабрики расширяли
ViewModelProvider.Factory
и использовали методcreate
, который принимаетCreationExtras
, или использовали DSLviewModelFactory
Kotlin.
- Рекомендуется, чтобы пользовательские фабрики расширяли
- Использование
ViewModelProvider
без пользовательской фабрики на платформах, отличных от JVM, приведет кUnsupportedOperationException
. На платформах JVM совместимость сохраняется за счет использования конструктора ViewModel без аргументов, если пользовательская фабрика не предоставлена. -
viewModelScope
будет возвращаться кEmptyCoroutineContext
на платформах, гдеDispatchers.Main
недоступен (например, Linux).
Изменения в поведении
-
InitializerViewModelFactory
(включая функцию конструктораviewModelFactory
) теперь будет выдавать исключениеIllegalArgumentException
, еслиinitializer
с тем жеclazz: KClass<VM : ViewModel>
уже был добавлен. ( Ic3a36 )
Исправление ошибок
-
ViewModel.getCloseable
теперь обрабатывает дублирующиеся ключи: если сkey
уже связан ресурсAutoCloseable
, старый ресурс будет заменен и немедленно закрыт. ( Ibeb67 ) - Доступ к
viewModelScope
ViewModel
теперь потокобезопасен. ( If4766 , b/322407038 )
Внешний вклад
-
LocalLifecycleOwner
переместился из Compose UI в lifecycle-runtime-compose, чтобы его вспомогательные API на основе Compose можно было использовать вне Compose UI. Спасибо Джейку Уортону за вклад. ( I6c41b , b/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 )
Конверсии Kotlin
-
ViewModel
теперь написан на Kotlin ( I16f26 , b/214568825 ) - Расширения
lifecycle-viewmodel-ktx
kotlin теперь перемещены в базовый модуль жизненного цикла. ( Id787b , b/274800183 ) - Расширения
lifecycle-runtime-ktx
kotlin теперь перемещены в базовый модуль жизненного цикла. ( Ic3686 , b/274800183 ) - Расширения
lifecycle-livedata-core-ktx
kotlin теперь перемещены в базовый модуль жизненного цикла. ( I54a3d , b/274800183 )
Совместимость Kotlin с разными платформами
- Основные API жизненного цикла в
Lifecycle
,LifecycleOwner
,LifecycleObserver
,Lifecycle.State
,Lifecycle.Event
иLifecycleRegistry
теперь поставляются в артефактах, совместимых с Kotlin Multiplatform. ( b/317249252 )
Изменения API
- Вызов
LifecycleStartEffect
иLifecycleResumeEffect
без ключа теперь является ошибкой, следуя тому же соглашению, что и APIDisposableEffect
, который отражают эти API. ( Ib0e0c , b/323518079 ) -
ViewModel
теперь используетAutoCloseable
вместоCloseable
. Это изменение обратно совместимо. ( I27f8e , b/214568825 ) - Устарело
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
в пользуLiveData.toPublisher(lifecycleOwner)
. ( Iabe29 , b/262623005 )
Внешний вклад
- Благодарим Ивана Маткова из Jetbrains за помощь в переносе Lifecycle на Kotlin Multiplatform. ( 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
, были удалены. Это означает, что защищенный proguard код, который хочет использовать 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
для обработки пар событий — started to stopped и resumed to paused соответственно. Этот 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
как ComposeState
. Это эквивалентно (и является более короткой альтернативой)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-beta01
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 , b/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 , b/259344129 )
Изменения API
- Все файлы из модулей
lifecycle-livedata-ktx
были перемещены в основной модульlifecycle-livedata
. ( I10c6f , b/274800183 )
Изменения в поведении
- Расширения
LiveData.map()
иLiveData.switchMap()
теперь устанавливаютvalue
возвращаемойLiveData
, если на предыдущихLiveData
была установлена значение, обеспечивая, чтобы использование полученного живого в Jetpack Compose имеет правильное состояние на начальном составе. ( I91d2b , b/269479952 ) -
addCloseable()
ViewModel
() теперь немедленно закрываетCloseable
, еслиViewModel
уже получила вызовonCleared()
. ( I4712e , b/280294730 )
Исправление ошибок
- Из жизненного цикла
2.6.2
: Исправлена проблема, в которойSavedStateHandle
не будет правильно восстановлен после смерти процесса, если государство было восстановлено,save()
был вызван без фактической спасения государства в родительскомSavedStateRegistry
, а затем государство было снова восстановлено. Это исправляет взаимодействие междуrememberSaveable
и навигационнымиNavHost
. ( AOSP/2729289 )
Версия 2.7.0-Alpha01
26 июля 2023 г.
androidx.lifecycle:lifecycle-*:2.7.0-alpha01
выпускается. Версия 2.7.0-Alpha01 содержит эти коммиты.
Изменения API
-
Lifecycle.State
в настоящее время составляется с помощью Spose-Observable черезLifecycle.currentStateFlow
, который возвращаетStateFlow
, гдеvalue
является текущимLifecycle.State
. ( IB212D , B/209684871 ) -
Lifecycle.Event
S теперь может наблюдать какFlow
сLifecycle.asFlow().
( IF2C0F , B/176311030 ) - API
LifecycleResumeEffect
был добавлен для запускаSideEffect
S на основе как наLifecycle.Event.ON_RESUME
, так и наLifecycle.Event.ON_PAUSE
Событие. ( I60386 , B/235529345 ) - API
LifecycleStartEffect
был добавлен для запускаSideEffect
S на основеLifecycle.Event.ON_START
иLifecycle.Event.ON_STOP
. ( I5a8d1 , b/235529345 ) - API
LifecycleEventEffect
был добавлен для запуска ComposeSideEffect
S на основеLifecycle.Event
. ( IC9794 , B/235529345 ) - Расширение
Lifecycle.collectAsState()
было добавлено, чтобы непосредственно выявитьLifecycle.State
.State
. Это эквивалентно (и более короткая альтернатива) дляlifecycle.currentStateFlow.collectAsState()
. ( I11015 , B/235529345 )
Исправление ошибок
- Расширение
LiveData.distinctUntilChanged()
теперь устанавливаетvalue
возвращаемогоLiveData
, если на предыдущихLiveData
было установлено значение. Это не изменяет поведение наблюдения - обновленные значения из исходногоLiveData
все равно будут применяться только после того, как вы начнете наблюдать заLiveData
возвращаемой изdistinctUntilChanged()
. ( IB482F ) - Правила Proguard Hepe, связанные с
LifecycleObserver
, были удалены. Это означает, что прогнозированный код, который желает использовать API с помощью отражения, должен будет предоставить свои собственные правила Heat для их конкретного случая использования. ( IA12FD )
Версия 2.6
Версия 2.6.2
6 сентября 2023 г.
androidx.lifecycle:lifecycle-*:2.6.2
выпущен. Версия 2.6.2 содержит эти коммиты.
Исправление ошибок
- Исправлена проблема, в которой
SavedStateHandle
не будет правильно восстановлен после смерти процесса, если государство было восстановлено,save()
был вызван без фактической спасения государства в родительскомSavedStateRegistry
, а затем государство было снова восстановлено. Это исправляет взаимодействие междуrememberSaveable
и навигационнымиNavHost
. ( AOSP/2729289 )
Версия 2.6.1
22 марта 2023 г.
androidx.lifecycle:lifecycle-*:2.6.1
выпускается. Версия 2.6.1 содержит эти коммиты.
Обновления зависимости
-
lifecycle-viewmodel-savedstate
теперь зависит от SaveState1.2.1
. ( CD7251 ) - Жизненный цикл теперь зависит от ProfileInstaller
1.3.0
. ( F9D30B )
Версия 2.6.0
8 марта 2023 г.
androidx.lifecycle:lifecycle-*:2.6.0
выпускается. Версия 2.6.0 содержит эти коммиты.
Важные изменения с 2.5.0
-
LiveData
теперь включаетnull
null
новоеisInitialized
свойство, которое указывает на то, что когда -либо было установлено явное значение наLiveData
, что позволяет вам различатьliveData.value
-
MediatorLiveData
теперь включает в себя конструктор для установки начального значения. - Добавлено новое расширение на
StateFlow
иFlow
collectAsStateWithLifecycle()
, которые собираются из потоков и представляют его последнее значение в качестве состояния составления в целом в жизненном цикле. -
Lifecycle.launchWhenX
Методы иLifecycle.whenX
методы были устарели, так как использование паузационного диспетчера может привести к потерянным ресурсам в некоторых случаях. Рекомендуется использоватьLifecycle.repeatOnLifecycle
. Для получения дополнительной информации о единовременной приостановке работы, пожалуйста, посмотрите это объяснение того, почему это по своей природе небезопасно. - Конверсия Kotlin - большое количество классов жизненного цикла было преобразовано в Kotlin. Все преобразованные классы все еще сохраняют свою бинарную совместимость с
LifecycleOwner
версиями. Следующие классы имеют несовместимые изменения источника для классовViewModelStoreOwner
написанных в Kotlin:ViewTreeLifecycleOwner
,LiveDataReactiveStreams
,HasDefaultViewModelProviderFactory
,ViewTreeViewModelStoreOwner
,Transformations
В таблице ниже представлены преобразования источника для новой версии жизненного цикла.
Жизненный цикл 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()
принял нулевой тип, вы должны создать экземплярObserver
с нулевым типом. - Эти классы также были преобразованы в котлин, но остаются совместимыми с источником:
DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
LifecycleService
LifecycleRegistry
,LifecycleObserver
,ViewModelStore
,AndroidViewModel
ServiceLifecycleDispatcher
AbstractSavedStateViewModelFactory
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-BETA01
8 февраля 2023 г.
androidx.lifecycle:lifecycle-*:2.6.0-beta01
выпускается. Версия 2.6.0-beta01 содержит эти коммиты.
Котлин преобразования
-
LifecycleOwner
теперь написан в Котлине. Это несовместимое изменение источника для классов, написанных в Kotlin - теперь они должны переопределить свойствоlifecycle
, а не внедрять предыдущую функциюgetLifecycle()
. ( I75b4b , b/240298691 ) -
ViewModelStoreOwner
сейчас в Котлине. Это несовместимое изменение источника для классов, написанных в Kotlin - теперь они должны переопределить свойствоviewModelStore
, а не внедрять предыдущую функциюgetViewModelStore()
. ( I86409 , B/240298691 ) - Расширение Kotlin на
LifecycleOwner
, который обеспечивает полеlifecycleScope
, было перемещено в артефактlifecycle-common
отlifecycle-runtime-ktx
. ( I41d78 , b/240298691 ) - Расширение Kotlin на
Lifecycle
, обеспечивающее полеcoroutineScope
, было перемещено в артефактlifecycle-common
изlifecycle-runtime-ktx
. ( IABB91 , B/240298691 )
Версия 2.6.0-Alpha05
25 января 2023 г.
androidx.lifecycle:lifecycle-*:2.6.0-alpha05
выпускается. Версия 2.6.0-Alpha05 содержит эти коммиты.
Котлин преобразования
-
Transformations
теперь написаны в Котлине. Это несовместимое изменение источника для тех классов, написанных в котлине, которые непосредственно использовали синтаксис, такой какTransformations.map
-Код Kotlin теперь должен использовать синтаксис метода расширения Kotlin, который ранее был доступен только при использованииlifecycle-livedata-ktx
. При использовании языка программирования Java версии этих методов, которые принимают методandroidx.arch.core.util.Function
, устанавливаются и заменяются версиями, которые принимаютFunction1
Kotlin1. Это изменение поддерживает бинарную совместимость. ( I8e14f ) -
ViewTreeViewModelStoreOwner
теперь написан в Котлине. Это несовместимое изменение источника для тех классов, написанных в Kotlin - теперь вы должны непосредственно импортировать и использовать методы расширения Kotlin вView
androidx.lifecycle.setViewTreeViewModelStoreOwner
и Androidx.LifeCycle.FindViewTreeViewModelStoreOwner иandroidx.lifecycle.findViewTreeViewModelStoreOwner
и Androidx.lifecycle.findViewTreeViewModelSotorOwner для SET и FEENT FEER SET SET SET. Это бинарно совместим и остается источником, совместимым с реализациями, написанными на языке программирования Java. ( IA06D8 , IB22D8 , B/240298691 ) - Интерфейс
HasDefaultViewModelProviderFactory
теперь записан в Kotlin. Это несовместимое изменение источника для классов, написанных в Kotlin - теперь они должны переопределить свойстваdefaultViewModelProviderFactory
иdefaultViewModelCreationExtras
, а не реализовывать предыдущие соответствующие функции. ( IAed9c , b/240298691 ) -
Observer
сейчас написан в Котлине. Его методonChanged()
теперь используетvalue
имени для своего параметра. ( Iffef2 , i4995e , b/240298691 ) -
AndroidViewModel
,AbstractSavedStateViewModelFactory
,LifecycleService
,ServiceLifecycleDispatcher
иProcessLifecycleOwner
теперь написаны в Kotlin ( i2e771 , ibae40 , i160d7, i08884 , i1cda7, b/240298691), I08884, i1cda7, b/240298691), I08884 , i1cda7 , b/240298691 ), i08884, i1cda7, b/240298691).
Версия 2.6.0-Alpha04
11 января 2023 г.
androidx.lifecycle:lifecycle-*:2.6.0-alpha04
выпускается. Версия 2.6.0-Alpha04 содержит эти коммиты.
Новые возможности
-
LiveData
теперь включаетnull
null
новоеisInitialized
свойство, которое указывает на то, что когда -либо было установлено явное значение наLiveData
, что позволяет вам различатьliveData.value
. ( IBD018 )
Изменения API
- APIS
collectAsStateWithLifecycle()
lifecycle-runtime-compose
больше не в экспериментальном статусе. ( I09D42 , B/258835424 ) -
Lifecycle.launchWhenX
Методы иLifecycle.whenX
методы были устарели, так как использование паузационного диспетчера может привести к потерянным ресурсам в некоторых случаях. Рекомендуется использоватьLifecycle.repeatOnLifecycle
. ( IAFC54 , B/248302832 )
Котлин преобразования
-
ViewTreeLifecycleOwner
теперь написан в Котлине. Это несовместимое изменение источника для тех классов, написанных в Kotlin - теперь вы должны непосредственно импортировать и использовать методы расширения Kotlin вView
androidx.lifecycle.setViewTreeLifecycleOwner
иandroidx.lifecycle.findViewTreeLifecycleOwner
для установки и поиска ранее набор владельца. Это заменяет предыдущее расширение Kotlin вlifecycle-runtime-ktx
. Это бинарно совместим и остается источником, совместимым с реализациями, написанными на языке программирования Java. ( I8a77a , i5234e , b/240298691 ) -
LiveDataReactiveStreams
теперь написан в Котлине. Ранее расширения Kotlin вlifecycle-reactivestreams-ktx
были перемещены в модульlifecycle-reactivestreams
и стали основной поверхностью для кода, написанного в котлине. Это несовместимое изменение источника для кода, написанного в Котлине, если вы еще не использовали API метода расширения Kotlin. ( I2b1b9 , i95d22 , b/240298691 ) -
DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
,LifecycleRegistry
,LifecycleObserver
иViewModelStore
теперь написаны в Kotlin ( IADFFD , ( i60034 , i8c52c , i9593d, i01fe1, i59a23, b/ 2402989898911193d , I01Fe1, I59A23, B/240299898989891, I9593d , I01Fe1, I59A23, B/24029898989898d, i01fe1, i59a23 , b/240298989898 .
Исправление ошибок
-
SavedStateHandle
больше не сбивается сClassCastException
при вызовеget()
с неправильным типом класса. ( I6ae7c )
Версия 2.6.0-Alpha03
24 октября 2022 г.
androidx.lifecycle:lifecycle-*:2.6.0-alpha03
. Версия 2.6.0-Alpha03 содержит эти коммиты.
Исправление ошибок
- Исправлена проблема с ограничениями между различными модулями жизненного цикла, которые не работают, как предполагалось. ( I18D0D , B/249686765 )
- Ошибки, брошенные
LifecycleRegistry.moveToState()
теперь включают более полезные обмене сообщениями об ошибках, которая информирует разработчиков компонента, вызывающего ошибку. ( IDF4B2 , B/244910446 )
Версия 2.6.0-Alpha02
7 сентября 2022 г.
androidx.lifecycle:lifecycle-*:2.6.0-alpha02
выпускается. Версия 2.6.0-Alpha02 содержит эти коммиты.
Изменения API
-
MediatorLiveData
теперь включает в себя конструктор для установки начального значения. ( IB6CC5 , B/151244085 )
Исправление ошибок
- Артефакты
Lifecycle
теперь включают ограничения , которые гарантируют, что все межзависимые артефакты жизненного цикла используют одну и ту же версию, автоматически обновляя другие зависимости при обновлении. B/242871265 -
FlowLiveData.asFlow()
теперь создаетcallbackFlow
, а не использует свою собственную реализациюChannel
для обеспечения безопасности потока и сохранения контекста. ( I4a8b2 , b/200596935 ) - Функция
asLiveData
FlowLiveData
теперь сохранит начальное значениеStateFlow
при создании нового объектаLiveData
. ( I3f530 , b/157380488 ) - Из жизненного цикла
2.5.1
: пользовательские реализацииAndroidViewModelFactory
теперь правильно вызывает функциюcreate(modelClass)
при использовании конструктора StateRul сLifecycle
2.4+ ( I5B315 , B/238011621 )
Версия 2.6.0-Alpha01
29 июня 2022 г.
androidx.lifecycle:lifecycle-*:2.6.0-alpha01
выпускается. Версия 2.6.0-Alpha01 содержит эти коммиты.
Новые возможности
- Добавлено новое расширение на
StateFlow
иFlow
collectAsStateWithLifecycle
, которые собираются из потоков и представляют его последнее значение в качестве состояния составления в целом в жизненном цикле. Поток собирается, и новая эмиссия устанавливается на значение состояния, когда жизненный цикл, по крайней мере, в определенномLifecycle.State
. Когда жизненный цикл падает ниже тогоLifecycle.State
. ( I1856E , B/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
теперь предлагает APIgetStateFlow()
, который возвращает KotlinStateFlow
для мониторинга изменений стоимости в качестве альтернативы использованию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
теперь предлагает APIviewModel()
, который занимает фабрику 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
теперь предлагает APIgetStateFlow()
, который возвращает KotlinStateFlow
для мониторинга изменений стоимости в качестве альтернативы использованию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
теперь предлагает APIviewModel()
, который занимает фабрику 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-Alpha02
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
CreationExtras
AbstractSavedStateViewModelFactory
, мы перемещаем концепции в мире. ( 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
Hounder, который используется для построения этой 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
lifecycle.lifecycle-common-java8
больше не предоставляет никаких дополнительных функциональных возможностей на вершине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 )
Внешний вклад
Версия 2.4.0-Alpha03
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 )
Внешний вклад
- Спасибо Maxsav за улучшение чека
NullSafeMutableLiveData
Lint. ( #147 , b/183696616 ) - Спасибо Kozaxinan за улучшение чека
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
, который излучает значения из потока вверх по течению, когда жизненный цикл, по крайней мере, в определенном состоянии с использованием APILifecycle.repeatOnLifecycle
. Это альтернатива также новойLifecycleOwner.addRepeatinJob
API. ( I0f4cd )
Исправление ошибок
- Из жизненного цикла 2.3.1 : правило Lint
NonNullableMutableLiveData
теперь может правильно различаться между полевыми переменными с различной нулямицией. ( B/169249668 )
Жизненный цикл ViewModel Compose Version 1.0.0
Версия 1.0.0-Alpha07
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-Alpha06
2 июня 2021 г.
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06
. Версия 1.0.0-Alpha06 содержит эти коммиты.
Обновлено, чтобы быть совместимым с Compose Version 1.0.0-beta08
.
Версия 1.0.0-Alpha05
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-Alpha04
7 апреля 2021 г.
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04
. Версия 1.0.0-Alpha04 содержит эти коммиты.
Изменения зависимости
Version 1.0.0-alpha03
10 марта 2021 г.
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03
is released. Version 1.0.0-alpha03 contains these commits.
Изменения API
-
LocalViewModelStoreOwner.current
now returns a nullableViewModelStoreOwner
to better determine whether aViewModelStoreOwner
is available in the current composition. APIs that require aViewModelStoreOwner
, such asviewModel()
andNavHost
, still throw an exception if aViewModelStoreOwner
is not set. ( Idf39a )
Lifecycle-Viewmodel-Compose Version 1.0.0-alpha02
24 февраля 2021 г.
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02
is released. Version 1.0.0-alpha02 contains these commits.
Изменения API
-
LocalViewModelStoreOwner
now has aprovides
functions that can be used withCompositionLocalProvider
, replacing theasProvidableCompositionLocal()
API. ( I45d24 )
Lifecycle-Viewmodel-Compose Version 1.0.0-alpha01
10 февраля 2021 г.
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
is released. Version 1.0.0-alpha01 contains these commits.
Новые возможности
- The
viewModel()
composable andLocalViewModelStoreOwner
were moved fromandroidx.compose.ui.viewinterop
to this artifact in theandroidx.lifecycle.viewmodel.compose
package. ( I7a374 )
Версия 2.3.1
Lifecycle Version 2.3.1
24 марта 2021 г.
androidx.lifecycle:lifecycle-*:2.3.1
is released. Version 2.3.1 contains these commits.
Исправление ошибок
- The
NonNullableMutableLiveData
lint rule can now properly differentiate between field variables with different nullability. ( b/169249668 )
Версия 2.3.0
Версия 2.3.0
10 февраля 2021 г.
androidx.lifecycle:lifecycle-*:2.3.0
is released. Version 2.3.0 contains these commits.
Major changes since 2.2.0
-
SavedStateHandle
support for non-parcelable classes :SavedStateHandle
now supports lazy serialization by allowing you to callsetSavedStateProvider()
for a given key, providing aSavedStateProvider
that will get a callback tosaveState()
when theSavedStateHandle
is asked to save its state. See Saving non-parcelable classes . - Lifecycle Behavior Enforcement :
- LifecycleRegistry now enforces
DESTROYED
as a terminal state. -
LifecycleRegistry
now verifies that its methods are called on main thread. It was always a requirement for lifecycles of activities, fragments etc. An addition of observers from non-main threads resulted in hard to catch crashes in runtime. ForLifecycleRegistry
objects that owned by your own components, you can explicitly opt out from checks by usingLifecycleRegistry.createUnsafe(...)
, but then you have to ensure that a proper synchronization is in place when thisLifecycleRegistry
is accessed from different threads.
- LifecycleRegistry now enforces
- Lifecycle State and Event Helpers : Added static helper methods of
downFrom(State)
,downTo(State)
,upFrom(State)
,upTo(State)
toLifecycle.Event
for generating theEvent
given aState
and transition direction. Added thegetTargetState()
method that provides theState
that the Lifecycle will transition to directly following theEvent
. -
withStateAtLeast
: AddedLifecycle.withStateAtLeast
APIs that await a lifecycle state and run a non-suspending block of code synchronously at the point of state change, then resume with the result. These APIs differ from the existingwhen*
methods as they do not permit running suspending code and do not employ a custom dispatcher. ( aosp/1326081 ) -
ViewTree
APIs : A newViewTreeLifecycleOwner.get(View)
andViewTreeViewModelStoreOwner.get(View)
API allows you to retrieve the containingLifecycleOwner
andViewModelStoreOwner
, respectively, given aView
instance. You must upgrade to Activity1.2.0
and Fragment1.3.0
, and AppCompat 1.3.0-alpha01 or higher to populate this correctly. ThefindViewTreeLifecycleOwner
andfindViewTreeViewModelStoreOwner
Kotlin extensions are available inlifecycle-runtime-ktx
andlifecycle-viewmodel-ktx
, respectively. -
LiveData.observe()
Kotlin extension deprecation : TheLiveData.observe()
Kotlin extension necessary to use lambda syntax is now deprecated as it is not necessary when using Kotlin 1.4.
Version 2.3.0-rc01
16 декабря 2020 г.
androidx.lifecycle:lifecycle-*:2.3.0-rc01
is released. Version 2.3.0-rc01 contains these commits.
Исправление ошибок
- The
keys()
method ofSavedStateHandle
is now consistent before and after the state is saved - it now includes keys previously used withsetSavedStateProvider()
in addition to the keys used withset()
andgetLiveData()
. ( aosp/1517919 , b/174713653 )
External Contribution
- The APIs to suspend Lifecycle-aware coroutines now better handle calls to
yield()
. Thanks Nicklas Ansman Giertz! ( aosp/1430830 , b/168777346 )
Version 2.3.0-beta01
1 октября 2020 г.
androidx.lifecycle:lifecycle-*:2.3.0-beta01
is released. Version 2.3.0-beta01 contains these commits.
Изменения API
- The
LiveData.observe()
Kotlin extension necessary to use lambda syntax is now deprecated as it is not necessary when using Kotlin 1.4. ( I40d3f )
Исправление ошибок
- Upgrade androidx to use Kotlin 1.4 ( Id6471 , b/165307851 , b/165300826 )
Documentation Changes
- The
liveData
builder andasLiveData()
docs have been updated to include details about changing the given timeout values. ( aosp/1122324 )
Version 2.3.0-alpha07
19 августа 2020 г.
androidx.lifecycle:lifecycle-*:2.3.0-alpha07
is released. Version 2.3.0-alpha07 contains these commits.
Исправление ошибок
- Fixed a crash issue in the
NullSafeMutableLiveData
Lint check. ( aosp/1395367 )
Version 2.3.0-alpha06
July 22, 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha06
is released. Version 2.3.0-alpha06 contains these commits.
Новые возможности
- Added static helper methods of
downFrom(State)
,downTo(State)
,upFrom(State)
,upTo(State)
toLifecycle.Event
for generating theEvent
given aState
and transition direction. Added thegetTargetState()
method that provides theState
that the Lifecycle will transition to directly following theEvent
. ( I00887 ) - Added
Lifecycle.withStateAtLeast
APIs that await a lifecycle state and run a non-suspending block of code synchronously at the point of state change, then resume with the result. These APIs differ from the existingwhen*
methods as they do not permit running suspending code and do not employ a custom dispatcher. ( aosp/1326081 )
Изменения в поведении
- LifecycleRegistry now enforces
DESTROYED
as a terminal state. ( I00887 ) -
LifecycleRegistry
now verifies that its methods are called on main thread. It was always a requirement for lifecycles of activities, fragments etc. An addition of observers from non-main threads resulted in hard to catch crashes in runtime. ForLifecycleRegistry
objects that owned by your own components, you can explicitly opt out from checks by usingLifecycleRegistry.createUnsafe(...)
, but then you have to ensure that a proper synchronization is in place when thisLifecycleRegistry
is accessed from different threads ( Ie7280 , b/137392809 )
Исправление ошибок
- Fixed a crash in
NullSafeMutableLiveData
. ( b/159987480 ) - Fixed an
ObsoleteLintCustomCheck
for Lint checks bundled withlifecycle-livedata-core-ktx
(and specificallyNullSafeMutableLiveData
). ( b/158699265 )
Version 2.3.0-alpha05
24 июня 2020 г.
androidx.lifecycle:lifecycle-*:2.3.0-alpha05
is released. Version 2.3.0-alpha05 contains these commits.
Исправление ошибок
-
LiveData
now better handles reentrant cases, avoiding duplicate calls toonActive()
oronInactive()
. ( b/157840298 ) - Fixed an issue where Lint checks would not run when using Android Studio 4.1 Canary 6 or higher. ( aosp/1331903 )
Version 2.3.0-alpha04
10 июня 2020 г.
androidx.lifecycle:lifecycle-*:2.3.0-alpha04
is released. Version 2.3.0-alpha04 contains these commits.
Исправление ошибок
- Fixed a crash in the
NonNullableMutableLiveData
Lint check. ( b/157294666 ) - The
NonNullableMutableLiveData
Lint check now covers significantly more cases where anull
value was set on aMutableLiveData
with a non-null type parameter. ( b/156002218 )
Version 2.3.0-alpha03
20 мая 2020 г.
androidx.lifecycle:lifecycle-*:2.3.0-alpha03
are released. Version 2.3.0-alpha03 contains these commits.
Новые возможности
-
SavedStateHandle
now supports lazy serialization by allowing you to callsetSavedStateProvider()
for a given key, providing aSavedStateProvider
that will get a callback tosaveState()
when theSavedStateHandle
is asked to save its state. ( b/155106862 ) - A new
ViewTreeViewModelStoreOwner.get(View)
API allows you to retrieve the containingViewModelStoreOwner
given aView
instance. You must upgrade to Activity1.2.0-alpha05
, Fragment1.3.0-alpha05
, and AppCompat1.3.0-alpha01
to populate this correctly. AfindViewModelStoreOwner()
Kotlin extension has been added tolifecycle-viewmodel-ktx
. ( aosp/1295522 )
Исправление ошибок
- Fixed an issue that caused the
MutableLiveData
Lint checks released in Lifecycle2.3.0-alpha01
from being published alongside thelifecycle-livedata-core-ktx
artifact. ( b/155323109 )
Version 2.3.0-alpha02
29 апреля 2020 г.
androidx.lifecycle:lifecycle-*:2.3.0-alpha02
is released. Version 2.3.0-alpha02 contains these commits.
Изменения API
-
SavedStateViewModelFactory
now allows you to pass a nullApplication
to its constructor to better support cases where one is not readily available and support forAndroidViewModel
is not needed. ( aosp/1285740 )
Исправление ошибок
- Improved cold start performance by avoiding class verification failure on API 28 and lower devices. ( aosp/1282118 )
Version 2.3.0-alpha01
4 марта 2020 г.
androidx.lifecycle:lifecycle-*:2.3.0-alpha01
is released. Version 2.3.0-alpha01 contains these commits.
Новые возможности
- A new
ViewTreeLifecycleOwner.get(View)
API allows you to retrieve the containingLifecycleOwner
given aView
instance. You must upgrade to Activity1.2.0-alpha01
and Fragment1.3.0-alpha01
to populate this correctly. AfindViewTreeLifecycleOwner
Kotlin extension is available inlifecycle-runtime-ktx
. ( aosp/1182361 , aosp/1182956 ) - Added a new Lint check that warns you when setting a
null
value on aMutableLiveData
that has been defined in Kotlin as non-null. This is available when using thelivedata-core-ktx
orlivedata-ktx
artifacts. ( aosp/1154723 , aosp/1159092 ) - A new
lifecycle-runtime-testing
artifact is available that provides aTestLifecycleOwner
that implementsLifecycleOwner
and provides a thread safe mutableLifecycle
. ( aosp/1242438 )
Исправления ошибок
- The
lifecycle-runtime
artifact now has a unique package name. ( aosp/1187196 )
Version 2.2.0
ViewModel-Savedstate Version 2.2.0
5 февраля 2020 г.
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0
is released. Version 2.2.0 contains these commits .
Lifecycle ViewModel SavedState now shares the same version as other Lifecycle artifacts. The behavior of 2.2.0
is identical to the behavior of 1.0.0
.
Version 2.2.0
22 января 2020 г.
androidx.lifecycle:lifecycle-*:2.2.0
is released. Version 2.2.0 contains these commits .
Important changes since 2.1.0
- Lifecycle Coroutine Integration : The new
lifecycle-runtime-ktx
artifact adds integration between Lifecycle and Kotlin coroutines. Thelifecycle-livedata-ktx
has also been expanded to take advantage of coroutines. See Use Kotlin coroutines with Architecture Components for more details. -
ViewModelProviders.of()
deprecation :ViewModelProviders.of()
has been deprecated. You can pass aFragment
orFragmentActivity
to the newViewModelProvider(ViewModelStoreOwner)
constructor to achieve the same functionality when using Fragment1.2.0
. -
lifecycle-extensions
Artifact Deprecation : With the above deprecation ofViewModelProviders.of()
, this release marks the deprecation of the last API inlifecycle-extensions
and this artifact should now be considered deprecated in its entirety. We strongly recommend depending on the specific Lifecycle artifacts you need (such aslifecycle-service
if you're usingLifecycleService
andlifecycle-process
if you're usingProcessLifecycleOwner
) rather thanlifecycle-extensions
as there will not be a future2.3.0
release oflifecycle-extensions
. - Gradle Incremental Annotation Processor : Lifecycle's annotation processor is incremental by default. If your app is written in the Java 8 programming language you can use
DefautLifecycleObserver
instead; and if it's written in the Java 7 programming language you can useLifecycleEventObserver
.
Version 2.2.0-rc03
4 декабря 2019 г.
androidx.lifecycle:lifecycle-*:2.2.0-rc03
is released. Version 2.2.0-rc03 contains these commits .
Исправления ошибок
- Fixed a failure occurring when a mocked
ViewModel
was stored inViewModelStore
and queried later with default factory. - Fix a usage of
Dispatchers.Main.immediate
inlaunchWhenCreated
and similar methods to be called synchronously during corresponding lifecycle event. ( aosp/1156203 )
External contributions
- Thanks to Anders Järleberg for contributing the fix! ( aosp/1156203 )
- Thanks to Vsevolod Tolstopyatov from Jetbrains for reviewing an implementation of inlined execution.
Dependency changes
- Lifecycle Extensions now depends on Fragment
1.2.0-rc03
.
Version 2.2.0-rc02
7 ноября 2019 г.
androidx.lifecycle:lifecycle-*:2.2.0-rc02
is released. Version 2.2.0-rc02 contains these commits .
Исправления ошибок
- Fixed a bug in the proguard setup of the library that affected devices running API 28+ if the target API is below 29. ( b/142778206 )
Version 2.2.0-rc01
23 октября 2019 г.
androidx.lifecycle:lifecycle-*:2.2.0-rc01
is released. Version 2.2.0-rc01 contains these commits .
Исправления ошибок
- Fixed an issue where
launchWhenCreated
and related methods would run one frame later than the associated lifecycle method due to its use ofDispatchers.Main
instead ofDispatchers.Main.immediate
. ( aosp/1145596 )
External contributions
- 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'sLifecycleOwner
moving to started and resumed on Android 10 devices. ( aosp/1128132 ) - Fixed a regression introduced in Lifecycle
2.2.0-alpha05
which would cause aNullPointerException
when using version2.0.0
or2.1.0
oflifecycle-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 ofliveData
now useDispatchers.Main.immediate
instead ofDispatchers.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 .
Новые возможности
- Implementations of
ViewModelStoreOwner
can now optionally implementHasDefaultViewModelProviderFactory
to provide a defaultViewModelProvider.Factory
. This has been done for Activity1.1.0-alpha02
, Fragment1.2.0-alpha02
, and Navigation2.2.0-alpha01
. ( aosp/1092370 , b/135716331 )
API changes
-
ViewModelProviders.of()
has been deprecated. You can pass aFragment
orFragmentActivity
to the newViewModelProvider(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
withLiveDataScope.latestValue
which will track the current emitted value of theliveData
block. - Added a new overload to the
liveData
builder that receivestimeout
parameter as typeDuration
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 Version 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 ofViewModel
class and factories provided by default by Fragments and AppCompatActivity will injectSavedStateHandle
automatically. - AbstractSavedStateViewModelFactory was added. It allows you to create custom factories for your
ViewModel
and provide them access toSavedStateHandle
.
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
. Version 1.0.0-rc01 contains these commits .
ViewModel-Savedstate Version 1.0.0-beta01
9 октября 2019 г.
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01
is released. Version 1.0.0-beta01 contains these commits .
Исправления ошибок
- Fixed an issue where accessing a SavedState ViewModel for the first time in
Activity.onActivityResult()
would result in anIllegalStateException
. ( b/139093676 ) - Fixed an
IllegalStateException
when usingAbstractSavedStateViewModelFactory
. ( 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 extendsAbstractSavedStateViewModelFactory
andSavedStateHandle
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 .
Критические изменения
-
lifecycle-viewmodel-savedstate
no longer depends onfragment
and the relatedSavedStateViewModelFactory(Fragment)
andSavedStateViewModelFactory(FragmentActivity)
constructors have been removed. Instead,SavedStateViewModelFactory
is now the default factory for Activity1.1.0-alpha02
, Fragment1.2.0-alpha02
, and Navigation2.2.0-alpha01
. ( b/135716331 )
ViewModel-SavedState Version 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 toSavedStateViewModelFactory
. -
AbstractSavedStateVMFactory
is renamed toAbstractSavedStateViewModelFactory
.
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 factorySavedStateVMFactory
and your ViewModel should have a constructor that receivesSavedStateHandle
object as a parameter.
Версия 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 hiddenGenericLifecycleObserver
class. - Added ktx extensions for
LiveData.observe
methods andTransformations.*
methods. - Added
Transformations.distinctUntilChanged
, which creates a new LiveData object that does not emit a value until the sourceLiveData
value has been changed. - Added coroutine support in ViewModels by adding the extension property
ViewModel.viewModelScope
.
Версия 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
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()
andby activityViewModels()
has been changed to support aViewModelStore
directly, rather than only aViewModelStoreOwner
. ( 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 toViewModelProvider.Factory
didn't compose well with new features as property delegation in Kotlinby viewmodels {}
. ( aosp/914133 )
Version 2.1.0-alpha02
30 января 2019 г.
androidx.lifecycle 2.1.0-alpha02
is released.
API changes
-
LifecycleRegistry
now contains asetCurrentState()
method that replaces the now deprecatedsetState()
method. ( aosp/880715 )
Исправления ошибок
- Fixed an issue where mock
ViewModel
instances would crash when the containingViewModelStore
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 hiddenGenericLifecycleObserver
class. - Added ktx extensions for
LiveData.observe
methods andTransformations.*
methods. - Method
Transformations.distinctUntilChanged
was added. It creates a newLiveData
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 receiveskey
andClass
increate
method.
Версия 2.0.0
Версия 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
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"
}
Версия 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
andLifecycleFragment
have now been removed - please useFragmentActivity
,AppCompatActivity
or supportFragment
. -
@NonNull
annotations have been added toViewModelProviders
andViewModelStores
-
ViewModelProviders
constructor has been deprecated - please use its static methods directly -
ViewModelProviders.DefaultFactory
has been deprecated - please useViewModelProvider.AndroidViewModelFactory
- The static
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
method has been added to retrieve a staticFactory
suitable for creatingViewModel
andAndroidViewModel
instances.