Lebenszyklus
In dieser Tabelle sind alle Artefakte in der Gruppe androidx.lifecycle
aufgeführt.
Artefakt | Stabile Version | Releasekandidat | Beta-Ausgabe | Alpharelease |
---|---|---|---|---|
lifecycle-* | 2.9.1 | - | – | - |
lifecycle-viewmodel-navigation3 | - | – | - | 1.0.0-alpha03 |
Abhängigkeiten deklarieren
Wenn Sie eine Abhängigkeit von Lifecycle hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.
Fügen Sie der Datei build.gradle
für Ihre App oder Ihr Modul die Abhängigkeiten für die benötigten Artefakte hinzu:
Kotlin
Groovy
dependencies { def lifecycle_version = "2.9.1" 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-alpha03" // 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" }
Kotlin
dependencies { val lifecycle_version = "2.9.1" 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-alpha03") // 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") }
Java
Groovy
dependencies { def lifecycle_version = "2.9.1" 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" }
Kotlin
dependencies { val lifecycle_version = "2.9.1" 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") }
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Ihr Feedback hilft uns, Jetpack zu verbessern. Lassen Sie es uns wissen, wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können für ein vorhandenes Problem abstimmen, indem Sie auf die Schaltfläche mit dem Stern klicken.
Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung.
Lifecycle ViewModel Navigation3 Version 1.0.0
Version 1.0.0-alpha03
2. Juli 2025
androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha03
und androidx.lifecycle:lifecycle-viewmodel-navigation3-android:1.0.0-alpha03
werden veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.
Änderungen an Abhängigkeiten
- Lifecycle ViewModel Navigation 3 hängt jetzt von Navigation3 Alpha05 ab.
Version 1.0.0-alpha02
18. Juni 2025
androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha02
und androidx.lifecycle:lifecycle-viewmodel-navigation3-android:1.0.0-alpha02
werden veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.
Abhängigkeitsupdates
- Lifecycle ViewModel Navigation3
1.0.0-alpha02
hängt von Änderungen in Navigation31.0.0-alpha04
ab. (Icd0fd, b/420991203)
Version 1.0.0-alpha01
23. Mai 2025
androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha01
wird veröffentlicht. Version 1.0.0-alpha01 enthält diese Commits.
Neue Funktionen
- Lifecycle ViewModel Navigation3 ist eine neue Bibliothek, die zusammen mit Navigation3 entwickelt wurde, um Integrationen mit
ViewModels
zu ermöglichen. Dasandroidx.lifecycle:lifecycle-viewmodel-navigation3
-Artefakt stellt dieViewModelStoreNavEntryDecorator
bereit, die einen eindeutigenViewModelStoreOwner
für den Inhalt jedesNavEntry
enthält. Außerdem wird einrememberViewModelStoreNavEntryDecorator()
bereitgestellt, damit der Decorator bei Konfigurationsänderungen richtig verarbeitet wird.
val viewModelDecorator = rememberViewModelStoreNavEntryDecorator()
NavDisplay(
…,
entryDecorators =
listOf(
rememberSceneSetupNavEntryDecorator(),
rememberSavedStateNavEntryDecorator(),
viewModelDecorator
)
)
Version 2.9
Version 2.9.1
4. Juni 2025
androidx.lifecycle:lifecycle-*:2.9.1
wird veröffentlicht. Version 2.9.1 enthält diese Commits.
Fehlerkorrekturen
- Problem behoben:
SavedStateHandle.remove(key)
löschtSavedStateHandle.getMutableStateFlow(key)
-Zustände nicht. (d5f939, b/418746333)
Version 2.9.0
7. Mai 2025
androidx.lifecycle:lifecycle-*:2.9.0
wird veröffentlicht. Version 2.9.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.8.0
- Es ist ein neues
androidx.lifecycle:lifecycle-viewmodel-testing
-KMP-Artefakt verfügbar, das eineViewModelScenario
-Klasse zum isolierten Testen vonViewModels
bietet. Es unterstütztonCleared
undSavedStateHandle
sowie das Testen von Prozessende und ‑neustart überrecreate()
. - Fügen Sie
getMutableStateFlow
zuSavedStateHandle
hinzu, umMutableStateFlow
zurückzugeben. Diese neue Funktion ist nur mit Schlüssel verfügbar und kann nicht mitgetLiveData
verwendet werden. Wenn Sie versuchen, mit beiden auf denselben Status zuzugreifen, wird eine Ausnahme ausgelöst. CreationExtras
enthält jetzt kartenähnliche Operatorüberladungen, die eine idiomatische Bearbeitung von Inhalten in Kotlin ermöglichen. Sie ermöglicht die Verwendung vonin
,+=
und+
mitCreationExtras
.
Unterstützung für KotlinX-Serialisierung
Mit der Unterstützung von KotlinX Serialization, die in SavedState
1.3.0
hinzugefügt wurde, haben wirsaved
eingeführt, einen Lazy-Property-Delegate, mit dem sich@Serializable
-Klassen ganz einfach in einemSavedStateHandle
speichern lassen und diese Klassen automatisch nach dem Beenden und erneuten Erstellen des Prozesses wiederhergestellt werden. Dersaved
-Delegate ist lazy und ruft dieinit
-Lambda-Funktion erst auf oder speichert erst dann etwas inSavedStateHandle
, wenn darauf zugegriffen wird.@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 Multiplatform
- Das Modul
lifecycle-testing
ist jetzt KMP-kompatibel, einschließlich APIs wieTestLifecycleOwner
. - Das Modul
lifecycle-viewmodel-savedstate
ist jetzt KMP-kompatibel, einschließlich APIs wieSavedStateHandle
. androidx.compose.ui.platform.LocalLifecycleOwner
ist jetzt im gemeinsamen Quellset verfügbar.NewInstanceFactory
ist jetzt für JVM-Desktop- und Android-Ziele verfügbar.
Geändertes Verhalten
- Der Status
Lifecycle.DESTROYED
ist ein Endstatus. Jeder Versuch, einLifecycle
daraus in einen anderen Status zu verschieben, führt jetzt zu einemIllegalStateException
. SavedStateHandle
enthält keineSavedStateProvider.saveState()
mehr, bei denen der zurückgegebeneBundle
leer ist.
Version 2.9.0-rc01
23. April 2025
androidx.lifecycle:lifecycle-*:2.9.0-rc01
wird veröffentlicht. Version 2.9.0-rc01 enthält diese Commits.
Version 2.9.0-beta01
9. April 2025
androidx.lifecycle:lifecycle-*:2.9.0-beta01
wird veröffentlicht. Version 2.9.0-beta01 enthält diese Commits.
API-Änderungen
Lifecycle ViewModel Compose
verwendet jetzt dieselbe Kotlin Multiplatform-Einrichtung wie Compose Runtime 1.7.1 und höher. Die-desktop
-Artefakte wurden entfernt und die-jvmStubs
- und-linuxx64Stubs
-Artefakte wurden hinzugefügt. Keines dieser Ziele ist für die Verwendung vorgesehen. Sie sind Platzhalter, um die Bemühungen von Jetbrains Compose zu unterstützen. (I5cb14, b/406592090)
Abhängigkeitsupdates
- Diese Bibliothek ist jetzt auf das Kotlin 2.0-Sprachniveau ausgerichtet und erfordert KGP 2.0.0 oder höher. (Idb6b5)
Lifecycle ViewModel Compose
hängt jetzt von Compose 1.7.8 ab. (I5cb14, b/406592090)
Version 2.9.0-alpha13
26. März 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha13
wird ohne nennenswerte öffentliche Änderungen veröffentlicht. Version 2.9.0-alpha13 enthält diese Commits.
Version 2.9.0-alpha12
12. März 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha12
wird veröffentlicht. Version 2.9.0-alpha12 enthält diese Commits.
API-Änderungen
- Fügen Sie
ViewModelProvider.get
auf allen unterstützten KMP-Plattformen die Annotation@MainThread
hinzu. (I7e8dd, b/397736115) - Benennen Sie
SavedState*Delegates
inSavedState*Delegate
um. (I8589b, b/399629301)
Version 2.9.0-alpha11
26. Februar 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha11
wird veröffentlicht. Version 2.9.0-alpha11 enthält diese Commits.
API-Änderungen
SavedStateConfig
-Parameter zusaved()
-Delegaten hinzufügen (I39b3a)
Version 2.9.0-alpha10
12. Februar 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha10
wird veröffentlicht. Version 2.9.0-alpha10 enthält diese Commits.
API-Änderungen
- Verschiebe
MutableStateSerializer
vonlifecycle-viewmodel-compose
nachsavedstate-compose
. (I4f690, b/378895074)
Externe Beiträge
- Es wird ein neues Lint-Problem für den Aufruf von
Lifecycle::currentState
in der Komposition hinzugefügt. Stattdessen wird die Verwendung voncurrentStateAsalue().value
empfohlen, damit Änderungen am Lebenszyklusstatus korrekt zu einer Neukomposition führen. Vielen Dank, Steven Schoen! (Iad484)
Version 2.9.0-alpha09
29. Januar 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha09
wird veröffentlicht. Version 2.9.0-alpha09 enthält diese Commits.
Neue Funktionen
MutableStateSerializer
zum Serialisieren vonandroidx.compose.runtime.MutableState
hinzugefügt. (Idfc48, b/378895074)
API-Änderungen
- Überladene
SavedStateHandle.saved()
-Delegatfunktionen durch Standardparameter ersetzen (Icd1c1) AbstractSavedStateViewModelFactory
ist veraltet, da für jedesViewModel
einSavedStateHandle
erstellt wird, was zu unnötigem Overhead führt. Verwenden Sie stattdessenViewModelProvider.Factory
mitCreationExtras.createSavedStateHandle
, umViewModel
effizienter zu erstellen. (Ia920b, b/388590327)
Version 2.9.0-alpha08
11. Dezember 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha08
wird veröffentlicht. Version 2.9.0-alpha08 enthält diese Commits.
Neue Funktionen
- Fügen Sie
ViewModelScenario.recreate
hinzu, um einen Systemprozess-Tod zu simulieren, bei dem der zu testendeViewModel
und alle zugehörigen Komponenten neu erstellt werden. (Id6a69, b/381063087) LifecycleOwner
- undViewModelStoreOwner
-Instanzen, die über die entsprechendenfindViewTree
-APIs abgerufen werden, können jetzt über disjunkte übergeordnete Elemente einer Ansicht, z. B. eineViewOverlay
, aufgelöst werden. Weitere Informationen zu disjunkten Ansichtseltern finden Sie in den Versionshinweisen von core oder in der Dokumentation unterViewTree.setViewTreeDisjointParent
. (I800f4)
API-Änderungen
- Die Benennung und Paketorganisation müssen konsistenter mit
SavedStateRegistryOwnerDelegate
sein (I8c135, b/376026744).
Fehlerkorrekturen
- In dieser Bibliothek werden jetzt JSpecify-Nullable-Annotationen verwendet, die typbezogen sind. Kotlin-Entwickler sollten das folgende Compiler-Argument verwenden, um die korrekte Verwendung zu erzwingen:
-Xjspecify-annotations=strict
(dies ist die Standardeinstellung ab Version 2.1.0 des Kotlin-Compilers). (Ie4340, b/326456246) - Dokumentieren Sie die
ViewModel.onCleared
-Löschsequenz. (I586c7, b/363984116)
Version 2.9.0-alpha07
13. November 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha07
wird veröffentlicht. Version 2.9.0-alpha07 enthält diese Commits.
Kompatibilität mit Kotlin Multiplatform
- Der Lebenszyklus
ViewModel SavedState
ist jetzt mit KMP kompatibel. So können SieSavedStateHandle
in gemeinsamem Code verwenden. (Ib6394, b/334076622)
Unterstützung für KotlinX-Serialisierung
Mit der Unterstützung von KotlinX Serialization, die in SavedState
1.3.0-alpha05
hinzugefügt wurde, haben wirsaved
eingeführt, einen Lazy-Property-Delegate, mit dem sich@Serializable
-Klassen ganz einfach in einemSavedStateHandle
speichern lassen und diese Klassen automatisch nach dem Beenden und erneuten Erstellen des Prozesses wiederhergestellt werden. Dersaved
-Delegate ist lazy und ruft dieinit
-Lambda-Funktion erst auf oder speichert erst dann etwas inSavedStateHandle
, wenn darauf zugegriffen wird. (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-Änderungen
- Fügen Sie
getMutableStateFlow
zuSavedStateHandle
hinzu, umMutableStateFlow
zurückzugeben. Diese neue Funktion ist nur mit Schlüssel verfügbar und kann nicht mitgetLiveData
verwendet werden. Wenn Sie versuchen, mit beiden auf denselben Status zuzugreifen, wird eine Ausnahme ausgelöst. (I04a4f, b/375408415)
Version 2.9.0-alpha06
30. Oktober 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha06
wird veröffentlicht. Version 2.9.0-alpha06 enthält diese Commits.
Geändertes Verhalten
- Der Status
Lifecycle.DESTROYED
ist ein Endstatus. Jeder Versuch, einLifecycle
daraus in einen anderen Status zu verschieben, führt jetzt zu einemIllegalStateException
. (I116c4, b/370577987) SavedStateHandle
enthält keineSavedStateProvider.saveState()
mehr, bei denen der zurückgegebeneBundle
leer ist. (I910b5, b/370577987)
Fehlerkorrekturen
Lifecycle.eventFlow
wird jetzt korrekt abgeschlossen, wennLifecycle
gleichDESTROYED
ist (I293b2, b/374043130).
Version 2.9.0-alpha05
16. Oktober 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha05
wird ohne nennenswerte Änderungen veröffentlicht. Version 2.9.0-alpha05 enthält diese Commits.
Version 2.9.0-alpha04
2. Oktober 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha04
wird veröffentlicht. Version 2.9.0-alpha04 enthält diese Commits.
Kotlin Multiplatform
- Das Modul
lifecycle-viewmodel-savedstate
ist jetzt für KMP konfiguriert, um APIs wieSavedStateHandle
vorzubereiten, die in einer zukünftigen Version im gemeinsamen Quellsatz verfügbar sein werden. (I503ed, I48764, b/334076622)
Version 2.9.0-alpha03
18. September 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha03
wird veröffentlicht. Version 2.9.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Ab Lifecycle
2.8.6
: Der Lint-FehlerNullSafeMutableLiveData
bietet eine verbesserte Unterstützung für Smart Casts, wodurch Fehlalarme vermieden werden. (85fed6, b/181042665)
Abhängigkeitsupdates
- Lebenszyklus
2.8.6
: Die Lebenszyklus-Laufzeit von Compose hängt jetzt von Compose Runtime1.7.1
ab. - Die Laufzeit des Lebenszyklus hängt jetzt von ProfileInstaller
1.4.0
ab.
Version 2.9.0-alpha02
4. September 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha02
wird veröffentlicht. Version 2.9.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Lebenszyklus
2.8.5
: Aktualisieren Sie dieandroidx.lifecycle.ReportFragment
ProGuard-Regeln, um die Verschleierung zuzulassen . (ff898e1)
Externe Beiträge
- Verschiebe
androidx.compose.ui.platform.LocalLifecycleOwner
in den gemeinsamen Quellsatz (KMP). Vielen Dank an Ivan Matkov von JetBrains für diesen Beitrag. (8cd5d03) - Ab Lifecycle
2.8.5
: Die Erweiterungsdelegierung „SavedStateHandle.saveable“ unterstützt jetzt Nullwerte. Vielen Dank an Roman Kalukiewicz für diesen Beitrag. (0d78ea6)
Version 2.9.0-alpha01
7. August 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha01
wird veröffentlicht. Version 2.9.0-alpha01 enthält diese Commits.
Kotlin Multiplatform
lifecycle-testing
ist jetzt mit KMP kompatibel. (Iea41e)- Unterstützung für das
linuxArm64
-Kotlin Multiplatform-Ziel hinzugefügt (I139d3, b/338268719)
Neue Funktionen
- Es ist ein neues
androidx.lifecycle:lifecycle-viewmodel-testing
-KMP-Artefakt verfügbar, das eineViewModelScenario
-Klasse zum isolierten Testen von ViewModels mit Unterstützung füronCleared
(alle Plattformen) undSavedStateHandle
(nur Android) bietet. (337f68d, c9b3409, 9799a95c, b/264602919) - Das Erstellen eines
ViewModel
mitViewModelProvider
ist jetzt threadsicher.@MainThread
-Anmerkungen wurden entfernt. (Ifd978, b/237006831)
API-Änderungen
- Fügen Sie die Factory-Funktion
CreationExtras.Key()
hinzu, um das Erstellen anonymerCreationExtras.Key
-Objekte zu vereinfachen. (I970ee) CreationExtras
enthält jetzt kartenähnliche Operatorüberladungen, die eine idiomatische Bearbeitung von Inhalten in Kotlin ermöglichen. Sie ermöglicht die Verwendung vonin
,+=
und+
mitCreationExtras
. (Ib4353)CreationExtras
implementiert jetzt die Methodenequals
,hashCode
undtoString
. (Ib4353)NewInstanceFactory
ist jetzt für JVM-Desktop- und Android-Ziele verfügbar. (d3d0892)- Inline-Erweiterungseigenschaft, um die zugrunde liegende Anwendung in Kotlin-Version 2.0 sicher verfügbar zu machen (I39df2)
Fehlerkorrekturen
- Die manuelle Beschreibung des Zugriffs auf neue Plattform-APIs wurde entfernt, da dies automatisch über die API-Modellierung erfolgt, wenn R8 mit AGP 7.3 oder höher (z.B. R8-Version 3.3) verwendet wird, und für alle Builds, wenn AGP 8.1 oder höher (z.B. D8-Version 8.1) verwendet wird. Clients, die AGP nicht verwenden, wird empfohlen, auf D8-Version 8.1 oder höher zu aktualisieren. Weitere Details findest du in diesem Artikel. (If6b4c, b/345472586)
Version 2.8
Version 2.8.7
30. Oktober 2024
androidx.lifecycle:lifecycle-*:2.8.7
wird veröffentlicht. Version 2.8.7 enthält diese Commits.
API-Änderungen
androidx.compose.ui.platform.LocalLifecycleOwner
ist jetzt im gemeinsamen Quellsatz (KMP) verfügbar. (6a3f5b3)lifecycle-runtime-compose
:desktop
-Artefakte wurden entfernt und-jvmStubs
- und-linuxx64Stubs
-Artefakte wurden hinzugefügt. Keines dieser Ziele ist für die Verwendung vorgesehen. Sie sind Platzhalter, um die Bemühungen von Jetbrains Compose zu unterstützen. (6a3f5b3)
Version 2.8.6
18. September 2024
androidx.lifecycle:lifecycle-*:2.8.6
wird veröffentlicht. Version 2.8.6 enthält diese Commits.
Fehlerkorrekturen
- Der Lint-Fehler
NullSafeMutableLiveData
unterstützt jetzt Smart Casts besser, um Fehlalarme zu vermeiden. (85fed6, b/181042665)
Abhängigkeitsupdates
- Lifecycle Runtime Compose hängt jetzt von Compose Runtime
1.7.1
ab.
Version 2.8.5
4. September 2024
androidx.lifecycle:lifecycle-*:2.8.5
wird veröffentlicht. Version 2.8.5 enthält diese Commits.
Fehlerkorrekturen
- Aktualisieren Sie die
androidx.lifecycle.ReportFragment
ProGuard-Regeln, um die Verschleierung zuzulassen . (ff898e1)
Externe Beiträge
- Die
SavedStateHandle.saveable
-Erweiterungsdelegation unterstützt jetzt Nullable-Werte. Vielen Dank an Roman Kalukiewicz für diesen Beitrag. (0d78ea6)
Version 2.8.4
24. Juli 2024
androidx.lifecycle:lifecycle-*:2.8.4
wird veröffentlicht. Version 2.8.4 enthält diese Commits.
Fehlerkorrekturen
LiveData.asFlow()
verarbeitet jetzt Fälle korrekt, in denen der zurückgegebene Flow sofort abgeschlossen wird, nachdem ein Wert empfangen wurde, der bereits inLiveData
festgelegt ist (z. B. bei Verwendung vontake(1)
). (I9c566)- Der Abschluss von
Lifecycle*Effect
ist jetzt idempotent. Das bedeutet: WennonStopOrDispose
aufgrund des beendeten Lebenszyklus aufgerufen wurde, wird es bei der Bereinigung nicht ein zweites Mal aufgerufen, es sei denn, der Lebenszyklus wird wieder aufSTARTED
gesetzt. (I5f607, b/352364595)
Version 2.8.3
1. Juli 2024
androidx.lifecycle:lifecycle-*:2.8.3
wird veröffentlicht. Version 2.8.3 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem mit der Abwärtskompatibilität von Lifecycle 2.8 mit Compose 1.6.0 und niedriger bei Verwendung von Code-Shrinking behoben. (aosp/3133056, b/346808608)
Version 2.8.2
12. Juni 2024
androidx.lifecycle:lifecycle-*:2.8.2
wird veröffentlicht. Version 2.8.2 enthält diese Commits.
Fehlerkorrekturen
CompositionLocal LocalLifecycleOwner not present
-Fehler bei Verwendung von Lifecycle 2.8.X mit Compose 1.6.X oder niedriger behoben – Sie können jetzt Lifecycle 2.8.2 mit jeder Version von Compose ohne Workarounds verwenden. (aosp/3105647, b/336842920)ViewModelProvider
stürzt nicht mehr ab, wenn frühere Versionen voncompileOnly
-Lifecycle-Abhängigkeiten mit Versionen ab 2.8 kombiniert werden. Dadurch werden Probleme mit Bibliotheken wie LeakCanary behoben. (I80383, b/341792251)
Version 2.8.1
29. Mai 2024
androidx.lifecycle:lifecycle-*:2.8.1
wird veröffentlicht. Version 2.8.1 enthält diese Commits.
Fehlerkorrekturen
lifecycle-viewmodel-compose
hat jetzt nur noch eine gemeinsame Abhängigkeit voncompose-runtime
. Die gemeinsame Abhängigkeit voncompose-ui
wurde entfernt. Das Android-Artefakt behält aus Kompatibilitätsgründen seinecompose-ui
bei. (aosp/3079334, b/339562627)- Bei der
ViewModel
-Integration vonsaveable
mit Attributdelegaten wird jetzt der Klassenname als Teil des automatisch generierten Schlüssels verwendet. So werden Konflikte vermieden, wenn mehrere Klassen dieselbeSavedStateHandle
verwenden. (aosp/3063463)
Version 2.8.0
14. Mai 2024
androidx.lifecycle:lifecycle-*:2.8.0
wird veröffentlicht. Version 2.8.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.7.0
LocalLifecycleOwner
wurde von Compose UI zulifecycle-runtime-compose
verschoben, damit die Compose-basierten Hilfs-APIs außerhalb von Compose UI verwendet werden können.- Das
lifecycle-runtime-compose
-Artefakt enthält jetzt die APIsdropUnlessResumed
unddropUnlessStarted
, mit denen Sie Klick- oder andere Ereignisse verwerfen können, die auch dann auftreten, wennLifecycleOwner
unter den angegebenenLifecycle.State
fällt. Dies kann beispielsweise mit Navigation Compose verwendet werden, um die Verarbeitung von Klickereignissen zu vermeiden, nachdem bereits mit dem Übergang zu einem anderen Bildschirm begonnen wurde:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
ViewModel.viewModelScope
ist jetzt ein überschreibbarer Konstruktorparameter. So können Sie Ihren eigenen Dispatcher undSupervisorJob()
einfügen oder den Standardwert mitbackgroundScope
überschreiben, das inrunTest
verfügbar ist. (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
wurde in Kotlin neu geschrieben und verwendet jetztAutoClosable
anstelle vonCloseable
. Es unterstützt jetzt das Hinzufügen vonAutoCloseable
-Objekten mit einemkey
, das den Abruf übergetCloseable()
ermöglicht.Das Aufrufen von
LifecycleStartEffect
undLifecycleResumeEffect
ohne Schlüssel führt jetzt zu einem Fehler. Dies entspricht der Konvention derDisposableEffect
API, die von diesen APIs gespiegelt wird.LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
wurde zugunsten vonLiveData.toPublisher(lifecycleOwner)
verworfen.Die
lifecycle-livedata-core-ktx
-Kotlin-Erweiterungen wurden in daslifecycle-livedata-core
-Modul verschoben.Der
NullSafeMutableLiveData
wurde überarbeitet, um viele falsch positive Ergebnisse zu vermeiden.
Lifecycle – Kompatibilität mit Kotlin Multiplatform
Die wichtigsten Lifecycle-APIs in Lifecycle
, LifecycleOwner
, LifecycleObserver
, Lifecycle.State
, Lifecycle.Event
und LifecycleRegistry
sind jetzt in Artefakten enthalten, die mit Kotlin Multiplatform kompatibel sind.
Betroffene Artefakte:
- In
lifecycle-common
werden die meisten APIs zucommon
verschoben und neben Android werden auch JVM und iOS unterstützt. - In
lifecycle-runtime
werden die meisten APIs zucommon
verschoben und neben Android werden auch JVM und iOS unterstützt. lifecycle-runtime-ktx
ist jetzt leer, da alle APIs inlifecycle-runtime
verschoben wurden.- Mit
lifecycle-runtime-compose
werden alle APIs zucommon
migriert und ein Android-Artefakt ausgeliefert, das der Multiplattformunterstützung vonandroidx.compose
entspricht.
ViewModel-Kompatibilität mit Kotlin Multiplatform
Das lifecycle-viewmodel
-Artefakt und APIs wie ViewModel
, ViewModelStore
, ViewModelStoreOwner
und ViewModelProvider
werden jetzt in Artefakten ausgeliefert, die mit Kotlin Multiplatform kompatibel sind.
Um dieser Änderung Rechnung zu tragen, gibt es für Methoden wie die in ViewModelProvider
, die bisher java.lang.Class<T>
als Parameter akzeptiert haben, jetzt eine entsprechende Methode, die kotlin.reflect.KClass<T>
als Parameter akzeptiert.
Die binäre Kompatibilität auf Android wurde beibehalten, aber es gibt einige bemerkenswerte Änderungen im Vergleich zur gemeinsamen API-Oberfläche:
- Das Erstellen einer
ViewModelProvider
-Instanz erfolgt jetzt über dieViewModelProvider.create()
-Methoden und nicht mehr durch direkten Aufruf des Konstruktors. ViewModelProvider.NewInstanceFactory
undViewModelProvider.AndroidViewModelFactory
sind nur auf Android-Geräten verfügbar.- Benutzerdefinierte Factorys sollten von
ViewModelProvider.Factory
abgeleitet werden und diecreate
-Methode verwenden, die einCreationExtras
akzeptiert, oder dieviewModelFactory
-Kotlin-DSL.
- Benutzerdefinierte Factorys sollten von
- Die Verwendung von
ViewModelProvider
ohne benutzerdefinierte Factory auf Nicht-JVM-Plattformen führt zu einerUnsupportedOperationException
. Auf JVM-Plattformen wird die Kompatibilität beibehalten, indem der ViewModel-Konstruktor ohne Argumente verwendet wird, wenn keine benutzerdefinierte Factory angegeben ist. viewModelScope
wird auf Plattformen, auf denenDispatchers.Main
nicht verfügbar ist, aufEmptyCoroutineContext
zurückgesetzt (z.B. Linux).
Betroffene Artefakte:
- In
lifecycle-viewmodel
werden die meisten APIs zucommon
verschoben und neben Android werden auch JVM und iOS unterstützt. lifecycle-viewmodel-ktx
ist jetzt leer, da alle APIs inlifecycle-viewmodel
verschoben wurden.- Mit
lifecycle-viewmodel-compose
werden alle APIs zucommon
migriert und ein Android-Artefakt ausgeliefert, das der Multiplattformunterstützung vonandroidx.compose
entspricht.
Geändertes Verhalten
InitializerViewModelFactory
(einschließlich der Builder-FunktionviewModelFactory
) löst jetzt eineIllegalArgumentException
aus, wenn bereits eineinitializer
mit demselbenclazz: KClass<VM : ViewModel>
hinzugefügt wurde. (Ic3a36)
Bekannte Probleme
lifecycle-*:2.8.0
erfordert mindestens die Compose-Version 1.7.0-alpha05 (b/336842920).
Version 2.8.0-rc01
1. Mai 2024
androidx.lifecycle:lifecycle-*:2.8.0-rc01
wird veröffentlicht. Version 2.8.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem das Baseline-Profil für
lifecycle-common
-Klassen nicht richtig verpackt wurde. Sie sind jetzt imlifecycle-runtime
-AAR enthalten. (aosp/3038274, b/322382422) - Es wurde ein unbeabsichtigter Änderungsfehler bei der Reihenfolge behoben, in der
AutoCloseable
-Instanzen, die an ein ViewModel angehängt sind, gelöscht werden. Die vorherige ReihenfolgeaddCloseable(String, AutoCloseable)
, dannaddClosable(AutoCloseable)
, dannonCleared()
wurde wiederhergestellt. (aosp/3041632) - Das Standardverhalten beim Erstellen von
viewModelScope
für native und JVM-Desktopumgebungen wurde verbessert. (aosp/3039221)
Externe Beiträge
- Vielen Dank an Victor Kropp für die Verbesserung der Prüfung des Hauptthreads auf JVM Desktop. (aosp/3037116)
Version 2.8.0-beta01
17. April 2024
androidx.lifecycle:lifecycle-*:2.8.0-beta01
wird veröffentlicht. Version 2.8.0-beta01 enthält diese Commits.
Neue Funktionen
- Das
lifecycle-runtime-compose
-Artefakt ist jetzt mit Kotlin Multiplatform kompatibel. Der Code wurde zucommon
verschoben und es wird ein Android-Artefakt ausgeliefert, das der Multiplatform-Unterstützung fürandroidx.compose
entspricht. (If7a71, I4f4a0, b/331769623)
Version 2.8.0-alpha04
3. April 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha04
wird veröffentlicht. Version 2.8.0-alpha04 enthält diese Commits.
Neue Funktionen
- Das
lifecycle-viewmodel-compose
-Artefakt ist jetzt mit Kotlin Multiplatform kompatibel. Der Code wurde zucommon
verschoben und es wird ein Android-Artefakt ausgeliefert, das der Multiplatform-Unterstützung vonandroidx.compose
entspricht. Um dieser Änderung Rechnung zu tragen, akzeptiert die zusammensetzbare MethodeviewModel
jetzt zusätzlich zu einemjava.lang.Class
auch einKClass
. (b/330323282)
Fehlerkorrekturen
- Der
NullSafeMutableLiveData
wurde überarbeitet, um viele falsch positive Ergebnisse zu vermeiden. (I2d8c1, Iafb18, I03463, I7ecef)
Abhängigkeitsupdate
- Das
lifecycle-viewmodel-compose
-Artefakt hängt jetzt von Compose 1.6.0 ab. - Der Lebenszyklus hängt jetzt von Profile Installer 1.3.1 ab.
Version 2.8.0-alpha03
20. März 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha03
wird veröffentlicht. Version 2.8.0-alpha03 enthält diese Commits.
Neue Funktionen
ViewModel.viewModelScope
ist jetzt ein überschreibbarer Konstruktorparameter. So können Sie Ihren eigenen Dispatcher undSupervisorJob()
einfügen oder den Standardwert mitbackgroundScope
überschreiben, das inrunTest
verfügbar ist. (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) }
Kompatibilität mit Kotlin Multiplatform
Das lifecycle-viewmodel
-Artefakt und APIs wie ViewModel
, ViewModelStore
, ViewModelStoreOwner
und ViewModelProvider
werden jetzt in Artefakten ausgeliefert, die mit Kotlin Multiplatform kompatibel sind. (b/214568825)
Um dieser Änderung Rechnung zu tragen, gibt es für Methoden wie die in ViewModelProvider
, die bisher java.lang.Class<T>
als Parameter akzeptiert haben, jetzt eine entsprechende Methode, die kotlin.reflect.KClass<T>
als Parameter akzeptiert.
Die binäre Kompatibilität auf Android wurde beibehalten, aber es gibt einige bemerkenswerte Änderungen im Vergleich zur gemeinsamen API-Oberfläche:
- Das Erstellen einer
ViewModelProvider
-Instanz erfolgt jetzt über dieViewModelProvider.create()
-Methoden und nicht mehr durch direkten Aufruf des Konstruktors. ViewModelProvider.NewInstanceFactory
undViewModelProvider.AndroidViewModelFactory
sind nur auf Android-Geräten verfügbar.- Benutzerdefinierte Factorys sollten von
ViewModelProvider.Factory
abgeleitet werden und diecreate
-Methode verwenden, die einCreationExtras
akzeptiert, oder dieviewModelFactory
-Kotlin-DSL.
- Benutzerdefinierte Factorys sollten von
- Die Verwendung von
ViewModelProvider
ohne benutzerdefinierte Factory auf Nicht-JVM-Plattformen führt zu einerUnsupportedOperationException
. Auf JVM-Plattformen wird die Kompatibilität beibehalten, indem der ViewModel-Konstruktor ohne Argumente verwendet wird, wenn keine benutzerdefinierte Factory angegeben ist. viewModelScope
wird auf Plattformen, auf denenDispatchers.Main
nicht verfügbar ist, aufEmptyCoroutineContext
zurückgesetzt (z.B. Linux).
Geändertes Verhalten
InitializerViewModelFactory
(einschließlich der Builder-FunktionviewModelFactory
) löst jetzt eineIllegalArgumentException
aus, wenn bereits eineinitializer
mit demselbenclazz: KClass<VM : ViewModel>
hinzugefügt wurde. (Ic3a36)
Fehlerkorrekturen
ViewModel.getCloseable
verarbeitet jetzt doppelte Schlüssel: Wenn demkey
bereits eineAutoCloseable
-Ressource zugeordnet ist, wird die alte Ressource ersetzt und sofort geschlossen. (Ibeb67)- Der Zugriff auf die
viewModelScope
einesViewModel
ist jetzt threadsicher. (If4766, b/322407038)
Externe Beiträge
LocalLifecycleOwner
wurde von Compose UI zu lifecycle-runtime-compose verschoben, damit die Compose-basierten Hilfs-APIs außerhalb von Compose UI verwendet werden können. Vielen Dank an Jake Wharton für den Beitrag. (I6c41b, b/328263448)
Version 2.8.0-alpha02
21. Februar 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha02
wird veröffentlicht. Version 2.8.0-alpha02 enthält diese Commits.
Neue Funktionen
- Die APIs
dropUnlessResumed
unddropUnlessStarted
wurden hinzugefügt. Damit können Sie Klick- oder andere Ereignisse verwerfen, die auch dann auftreten, wennLifecycleOwner
unter den angegebenenLifecycle.State
fällt. Dies kann beispielsweise mit Navigation Compose verwendet werden, um Klickereignisse zu vermeiden, nachdem bereits mit dem Übergang zu einem anderen Bildschirm begonnen wurde:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
(Icba83, b/317230685)
Kotlin-Conversions
ViewModel
wurde jetzt in Kotlin geschrieben (I16f26, b/214568825)- Die
lifecycle-viewmodel-ktx
-Kotlin-Erweiterungen wurden in das Basis-Lifecycle-Modul verschoben. (Id787b, b/274800183) - Die
lifecycle-runtime-ktx
-Kotlin-Erweiterungen wurden in das Basis-Lifecycle-Modul verschoben. (Ic3686, b/274800183) - Die
lifecycle-livedata-core-ktx
-Kotlin-Erweiterungen wurden in das Basis-Lifecycle-Modul verschoben. (I54a3d, b/274800183)
Kompatibilität mit Kotlin Multiplatform
- Die wichtigsten Lifecycle-APIs in
Lifecycle
,LifecycleOwner
,LifecycleObserver
,Lifecycle.State
,Lifecycle.Event
undLifecycleRegistry
sind jetzt in Artefakten enthalten, die mit Kotlin Multiplatform kompatibel sind. (b/317249252)
API-Änderungen
- Das Aufrufen von
LifecycleStartEffect
undLifecycleResumeEffect
ohne Schlüssel führt jetzt zu einem Fehler. Dies entspricht der Konvention derDisposableEffect
API, die von diesen APIs gespiegelt wird. (Ib0e0c, b/323518079) ViewModel
verwendet jetztAutoCloseable
anstelle vonCloseable
. Das ist eine abwärtskompatible Änderung. (I27f8e, b/214568825)LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
wurde zugunsten vonLiveData.toPublisher(lifecycleOwner)
verworfen. (Iabe29, b/262623005)
Externe Beiträge
- Vielen Dank an Ivan Matkov von Jetbrains für seine Unterstützung bei der Umstellung von Lifecycle auf Kotlin Multiplatform. (aosp/2926690, I0c5ac, If445d)
Version 2.8.0-alpha01
24. Januar 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha01
wird veröffentlicht. Version 2.8.0-alpha01 enthält diese Commits.
Neue Funktionen
ViewModel
unterstützt jetzt das Hinzufügen vonCloseable
-Objekten mit einemkey
, über das sie mitgetCloseable()
abgerufen werden können. (I3cf63)
Version 2.7
Version 2.7.0
10. Januar 2024
androidx.lifecycle:lifecycle-*:2.7.0
wird veröffentlicht. Version 2.7.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.6.0
TestLifecycleOwner
enthält jetzt die FunktionsetCurrentState()
zum Anhalten, die dafür sorgt, dass die Statusänderung und alleLifecycleObserver
-Callbacks abgeschlossen sind, bevor die Funktion zurückgegeben wird. Anders als beim direkten Festlegen des AttributscurrentState
wird hier nichtrunBlocking
verwendet. Daher kann es sicher in einer Coroutine wie der vonrunTest
bereitgestellten verwendet werden.- Die
LiveData
-Erweiterungen vonmap
undswitchMap
spiegeln jetzt das Verhalten vondistinctUntilChanged
wider: Wenn für dieLiveData
einvalue
festgelegt ist, wird diemap
-/switchMap
-Funktion sofort aufgerufen, um dasvalue
der zurückgegebenenLiveData
zu füllen. So wird der Anfangswert im Rahmen der ersten Komposition festgelegt (bei Verwendung vonobserveAsState()
), das Beobachtungsverhalten ändert sich jedoch nicht. Aktualisierungen von Werten aus der QuelleLiveData
werden erst angewendet, wenn Sie mit der Beobachtung vonLiveData
beginnen. - In dieser Version wurde ein Problem behoben, bei dem
SavedStateHandle
benutzerdefinierteParcelable
-Klassen nach dem Beenden und erneuten Erstellen des Prozesses nicht richtig wiederhergestellt hat. Da Typinformationen durch das Android-Framework verloren gehen, erfordern Arrays benutzerdefinierter Parcelables zusätzlichen Aufwand (manuelles Erstellen eines typisierten Arrays des richtigen Typs). In der Dokumentation zuget
,getLiveData
undgetStateFlow
wird diese Einschränkung jetzt ausdrücklich erwähnt. - Die mit
LifecycleObserver
verknüpften ProGuard-Keep-Regeln wurden entfernt. Das bedeutet, dass für ProGuard-Code, der APIs über Reflection verwenden möchte (z. B. mit der längst veralteten Annotation@OnLifecycleEvent
), eigene Keep-Regeln für den jeweiligen Anwendungsfall erforderlich sind.
Beobachtbarkeit von Lebenszyklusereignissen
- Alternativ zur Verwendung eines
LifecycleEventObserver
können Sie jetzt einFlow
vonLifecycle.Event
über die ErweiterungsmethodeLifecycle.asFlow()
beobachten. - Jetpack Compose-Nutzer können jetzt
LifecycleEventEffect
verwenden, um Compose-Nebeneffekte basierend aufLifecycle.Event
auszuführen.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
viewModel.refreshData()
}
// …
}
- Jetpack Compose-Nutzer können
LifecycleStartEffect
undLifecycleResumeEffect
verwenden, um Ereignispaare zu verarbeiten, z. B. „gestartet“ bis „beendet“ und „fortgesetzt“ bis „pausiert“. Diese API entspricht der inDisposableEffect
und eignet sich für Fälle, in denen die Änderung, die beim Hochfahren des Status vorgenommen wird, beim Herunterfahren rückgängig gemacht werden muss.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleStartEffect(viewModel) {
val timeTracking = viewModel.startTrackingTimeOnScreen()
onStopOrDispose {
timeTracking.stopTrackingTimeOnScreen()
}
}
// …
}
Weitere Informationen finden Sie unter Code für Lebenszyklusereignisse ausführen.
Beobachtbarkeit des Lebenszyklusstatus
- Der aktuelle
Lifecycle.State
kann jetzt über das AttributLifecycle.currentStateFlow
beobachtet werden, das einStateFlow
zurückgibt, wobeivalue
der aktuelleLifecycle.State
ist. - Jetpack Compose-Nutzer können die
Lifecycle.currentStateAsState()
-Erweiterung verwenden, umLifecycle.State
direkt als Compose-State
verfügbar zu machen. Dies entsprichtlifecycle.currentStateFlow.collectAsState()
und ist eine kürzere Alternative.
Weitere Informationen finden Sie unter Lebenszyklusstatus mit Abläufen erfassen.
Version 2.7.0-rc02
13. Dezember 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc02
wird veröffentlicht. Version 2.7.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem
SavedStateHandle
benutzerdefinierteParcelable
-Klassen nach dem Beenden und erneuten Erstellen des Prozesses nicht richtig wiederhergestellt hat. Da Typinformationen durch das Android-Framework verloren gehen, erfordern Arrays benutzerdefinierter Parcelables zusätzlichen Aufwand (manuelles Erstellen eines typisierten Arrays des richtigen Typs). In der Dokumentation zuget
,getLiveData
undgetStateFlow
wird diese Einschränkung jetzt ausdrücklich erwähnt. (I0b55a)
Version 2.7.0-rc01
15. November 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc01
wird veröffentlicht. Version 2.7.0-rc01 enthält diese Commits.
Fehlerkorrekturen
LifecycleStartEffect
undLifecycleResumeEffect
verwerfen und erstellen den Effektblock jetzt korrekt neu, wenn sichLifecycleOwner
ändert. (Ia25c6)
Version 2.7.0-beta01
1. November 2023
androidx.lifecycle:lifecycle-*:2.7.0-beta01
wird ohne Änderungen veröffentlicht. Version 2.7.0-beta01 enthält diese Commits.
- Eine Betaversion wurde aktualisiert. Es gab keine größeren Änderungen an dieser Releaseversion.
Version 2.7.0-alpha03
18. Oktober 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha03
wird veröffentlicht. Version 2.7.0-alpha03 enthält diese Commits.
Neue Funktionen
lifecycle-runtime-testing
enthält jetzt eine neue Lint-Prüfung, um zu verhindern, dass dieLifecycle.State
vonTestLifecycleOwner
mithilfe des FeldscurrentState
innerhalb einer Coroutine festgelegt wird. Der Lint-Check schlägt jetzt das Aussetzen vonsetCurrentState
vor, wodurchLifecycle.State
ohne Blockierung festgelegt werden kann. (Icf728, b/297880630)
Fehlerkorrekturen
- Es wurde ein Problem mit
LiveData.switchMap
behoben, bei dem dieLiveData
-Instanz nicht als Quelle hinzugefügt wurde, wenn bei der ersten und einer nachfolgenden Anfrage dieselbeLiveData
-Instanz zurückgegeben wurde. (Ibedcba7)
Version 2.7.0-alpha02
6. September 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha02
wird veröffentlicht. Version 2.7.0-alpha02 enthält diese Commits.
Neue Funktionen
TestLifecycleOwner
enthält jetzt die Funktion zum AnhaltensetCurrentState()
, damit NutzerTestLifecycleOwner
in einer Coroutine wie einer vonrunTest
bereitgestellten Coroutine verwenden können. (I329de, b/259344129)
API-Änderungen
- Alle Dateien aus den
lifecycle-livedata-ktx
-Modulen wurden in das Hauptmodullifecycle-livedata
verschoben. (I10c6f, b/274800183)
Geändertes Verhalten
- Die Erweiterungen
LiveData.map()
undLiveData.switchMap()
legen jetzt dievalue
der zurückgegebenenLiveData
fest, wenn für die vorherigeLiveData
ein Wert festgelegt wurde. So wird sichergestellt, dass die Verwendung der resultierenden LiveData in Jetpack Compose den richtigen Status bei der ersten Komposition hat. (I91d2b, b/269479952) - Die
ViewModel
addCloseable()
schließt dieCloseable
jetzt sofort, wenn dieViewModel
bereits einen Aufruf anonCleared()
erhalten hat. (I4712e, b/280294730)
Fehlerkorrekturen
- Lifecycle
2.6.2
: Ein Problem wurde behoben, bei demSavedStateHandle
nach dem Beenden des Prozesses nicht korrekt wiederhergestellt wurde, wenn der Status wiederhergestellt wurde,save()
aufgerufen wurde, ohne den Status tatsächlich im übergeordnetenSavedStateRegistry
zu speichern, und der Status dann noch einmal wiederhergestellt wurde. Dadurch wird die Interaktion zwischenrememberSaveable
undNavHost
von Navigation Compose korrigiert. (aosp/2729289)
Version 2.7.0-alpha01
26. Juli 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha01
wird veröffentlicht. Version 2.7.0-alpha01 enthält diese Commits.
API-Änderungen
Lifecycle.State
ist jetzt überLifecycle.currentStateFlow
in Compose beobachtbar.Lifecycle.currentStateFlow
gibt einStateFlow
zurück, wobeivalue
das aktuelleLifecycle.State
ist. (Ib212d, b/209684871)Lifecycle.Event
können jetzt alsFlow
mitLifecycle.asFlow().
beobachtet werden (If2c0f, b/176311030).- Die
LifecycleResumeEffect
API wurde hinzugefügt, um Compose-SideEffect
s basierend aufLifecycle.Event.ON_RESUME
- undLifecycle.Event.ON_PAUSE
-Ereignis-Callbacks auszuführen. (I60386, b/235529345) - Die
LifecycleStartEffect
API wurde hinzugefügt, um Compose-SideEffect
s basierend aufLifecycle.Event.ON_START
- undLifecycle.Event.ON_STOP
-Ereignis-Callbacks auszuführen. (I5a8d1, b/235529345) - Die
LifecycleEventEffect
API wurde hinzugefügt, um Compose-SideEffect
s basierend aufLifecycle.Event
auszuführen. (Ic9794, b/235529345) - Die
Lifecycle.collectAsState()
-Erweiterung wurde hinzugefügt, umLifecycle.State
direkt als ComposeState
verfügbar zu machen. Dies entsprichtlifecycle.currentStateFlow.collectAsState()
und ist eine kürzere Alternative. (I11015, b/235529345)
Fehlerkorrekturen
- Die
LiveData.distinctUntilChanged()
-Erweiterung legt jetzt denvalue
des zurückgegebenenLiveData
fest, wenn für den vorherigenLiveData
ein Wert festgelegt wurde. Das ändert nichts am Beobachtungsverhalten. Aktualisierte Werte aus der QuelleLiveData
werden erst angewendet, wenn Sie die vondistinctUntilChanged()
zurückgegebeneLiveData
beobachten. (Ib482f) - Die mit
LifecycleObserver
verknüpften ProGuard-Keep-Regeln wurden entfernt. Das bedeutet, dass für ProGuard-Code, der APIs über Reflection verwenden möchte, eigene Keep-Regeln für den jeweiligen Anwendungsfall erforderlich sind. (Ia12fd)
Version 2.6
Version 2.6.2
6. September 2023
androidx.lifecycle:lifecycle-*:2.6.2
wird veröffentlicht. Version 2.6.2 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem
SavedStateHandle
nach dem Beenden des Prozesses nicht korrekt wiederhergestellt wurde, wenn der Status wiederhergestellt wurde,save()
aufgerufen wurde, ohne den Status tatsächlich im übergeordnetenSavedStateRegistry
zu speichern, und der Status dann noch einmal wiederhergestellt wurde. Dadurch wird die Interaktion zwischenrememberSaveable
undNavHost
von Navigation Compose korrigiert. (aosp/2729289)
Version 2.6.1
22. März 2023
androidx.lifecycle:lifecycle-*:2.6.1
wird veröffentlicht. Version 2.6.1 enthält diese Commits.
Abhängigkeitsupdates
lifecycle-viewmodel-savedstate
ist jetzt von SavedState1.2.1
abhängig. (cd7251)- Der Lebenszyklus hängt jetzt von ProfileInstaller
1.3.0
ab. (f9d30b)
Version 2.6.0
8. März 2023
androidx.lifecycle:lifecycle-*:2.6.0
wird veröffentlicht. Version 2.6.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.5.0
LiveData
enthält jetzt die neue EigenschaftisInitialized
, die angibt, ob jemals ein expliziter Wert fürLiveData
festgelegt wurde. So können Sie unterscheiden, obliveData.value
null
zurückgibt, weil noch nie ein Wert festgelegt wurde, oder ob ein expliziternull
-Wert zurückgegeben wird.MediatorLiveData
enthält jetzt einen Konstruktor zum Festlegen eines Anfangswerts.- Eine neue Erweiterung für
StateFlow
undFlow
voncollectAsStateWithLifecycle()
wurde hinzugefügt, die Daten aus Abläufen erfasst und den aktuellen Wert als Compose-Status auf lebenszyklusbewusste Weise darstellt. - Die Methoden
Lifecycle.launchWhenX
undLifecycle.whenX
wurden eingestellt, da die Verwendung eines pausierenden Dispatchers in einigen Fällen zu verschwendeten Ressourcen führen kann. Es wird empfohlen,Lifecycle.repeatOnLifecycle
zu verwenden. Weitere Informationen zum einmaligen Anhalten von Arbeitsvorgängen finden Sie in dieser Erklärung, in der erläutert wird, warum dies von Natur aus unsicher ist. - Kotlin-Konvertierung: Eine große Anzahl von Lifecycle-Klassen wurde in Kotlin konvertiert. Alle konvertierten Klassen behalten ihre binäre Kompatibilität mit früheren Versionen bei. Die folgenden Klassen haben quellinkompatible Änderungen für in Kotlin geschriebene Klassen:
ViewTreeLifecycleOwner
,LiveDataReactiveStreams
,HasDefaultViewModelProviderFactory
,ViewTreeViewModelStoreOwner
,Transformations
,ViewModelStoreOwner
,LifecycleOwner
In der folgenden Tabelle finden Sie die Quell-Conversions für die neue Version des Lebenszyklus.
Lebenszyklus 2.5 | Lifecycle 2.5 (KTX) | Lebenszyklus 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 |
- Die Nullable-Eigenschaft der Methode
onChanged
eines in Kotlin erstelltenObserver
entspricht jetzt der Nullable-Eigenschaft des generischen Typs. WennObserver.onChanged()
einen Nullable-Typ akzeptieren soll, müssen SieObserver
mit einem Nullable-Typ instanziieren. - Diese Klassen wurden ebenfalls in Kotlin konvertiert, sind aber weiterhin quellcodekompatibel:
DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
,LifecycleRegistry
,LifecycleObserver
,ViewModelStore
,AndroidViewModel
,AbstractSavedStateViewModelFactory
,LifecycleService
,ServiceLifecycleDispatcher
undProcessLifecycleOwner
.
Version 2.6.0-rc01
22. Februar 2023
androidx.lifecycle:lifecycle-*:2.6.0-rc01
wird veröffentlicht. Version 2.6.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Die
LiveData.distinctUntilChanged()
-Erweiterung legt jetzt denvalue
des zurückgegebenenLiveData
fest, wenn für den vorherigenLiveData
ein Wert festgelegt wurde. Das ändert nichts am Beobachtungsverhalten. Aktualisierte Werte aus der QuelleLiveData
werden erst angewendet, wenn Sie die vondistinctUntilChanged()
zurückgegebeneLiveData
beobachten. (Ib482f)
Version 2.6.0-beta01
8. Februar 2023
androidx.lifecycle:lifecycle-*:2.6.0-beta01
wird veröffentlicht. Version 2.6.0-beta01 enthält diese Commits.
Kotlin-Conversions
LifecycleOwner
wurde in Kotlin neu geschrieben. Dies ist eine quelleninkompatible Änderung für in Kotlin geschriebene Klassen. Sie müssen jetzt dielifecycle
-Property überschreiben, anstatt die vorherigegetLifecycle()
-Funktion zu implementieren. (I75b4b, b/240298691)ViewModelStoreOwner
ist jetzt in Kotlin. Dies ist eine quelleninkompatible Änderung für in Kotlin geschriebene Klassen. Sie müssen jetzt dieviewModelStore
-Property überschreiben, anstatt die vorherigegetViewModelStore()
-Funktion zu implementieren. (I86409, b/240298691)- Die Kotlin-Erweiterung für
LifecycleOwner
, die das FeldlifecycleScope
bereitstellt, wurde vom Artefaktlifecycle-runtime-ktx
zum Artefaktlifecycle-common
verschoben. (I41d78, b/240298691) - Die Kotlin-Erweiterung für
Lifecycle
, die das FeldcoroutineScope
bereitstellt, wurde vom Artefaktlifecycle-runtime-ktx
zum Artefaktlifecycle-common
verschoben. (Iabb91, b/240298691)
Version 2.6.0-alpha05
25. Januar 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha05
wird veröffentlicht. Version 2.6.0-alpha05 enthält diese Commits.
Kotlin-Conversions
Transformations
wurde in Kotlin neu geschrieben. Dies ist eine quellinkompatible Änderung für Klassen, die in Kotlin geschrieben wurden und in denen Syntax wieTransformations.map
direkt verwendet wurde. Kotlin-Code muss jetzt die Kotlin-Erweiterungsmethodensyntax verwenden, die zuvor nur bei Verwendung vonlifecycle-livedata-ktx
verfügbar war. Wenn Sie die Programmiersprache Java verwenden, sind die Versionen dieser Methoden, die eineandroidx.arch.core.util.Function
-Methode verwenden, eingestellt und werden durch die Versionen ersetzt, die eine Kotlin-Function1
verwenden. Diese Änderung beeinträchtigt die binäre Kompatibilität nicht. (I8e14f)ViewTreeViewModelStoreOwner
wurde in Kotlin neu geschrieben. Dies ist eine quelleninkompatible Änderung für Klassen, die in Kotlin geschrieben wurden. Sie müssen jetzt die Kotlin-Erweiterungsmethoden fürView
vonandroidx.lifecycle.setViewTreeViewModelStoreOwner
undandroidx.lifecycle.findViewTreeViewModelStoreOwner
direkt importieren und verwenden, um einen zuvor festgelegten Inhaber festzulegen und zu finden. Dies ist binärkompatibel und bleibt für Implementierungen, die in der Programmiersprache Java geschrieben wurden, quellkompatibel. (Ia06d8, Ib22d8, b/240298691)- Die Schnittstelle
HasDefaultViewModelProviderFactory
ist jetzt in Kotlin geschrieben. Dies ist eine quelleninkompatible Änderung für in Kotlin geschriebene Klassen. Sie müssen jetzt die AttributedefaultViewModelProviderFactory
unddefaultViewModelCreationExtras
überschreiben, anstatt die entsprechenden Funktionen zu implementieren. (Iaed9c, b/240298691) Observer
wurde in Kotlin neu geschrieben. Die MethodeonChanged()
verwendet jetzt den Namenvalue
für ihren Parameter. (Iffef2, I4995e, b/240298691)AndroidViewModel
,AbstractSavedStateViewModelFactory
,LifecycleService
,ServiceLifecycleDispatcher
undProcessLifecycleOwner
sind jetzt in Kotlin geschrieben (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691)
Version 2.6.0-alpha04
11. Januar 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha04
wird veröffentlicht. Version 2.6.0-alpha04 enthält diese Commits.
Neue Funktionen
LiveData
enthält jetzt die neue EigenschaftisInitialized
, die angibt, ob jemals ein expliziter Wert fürLiveData
festgelegt wurde. So können Sie unterscheiden, obliveData.value
null
zurückgibt, weil noch nie ein Wert festgelegt wurde, oder ob ein expliziternull
-Wert zurückgegeben wird. (Ibd018)
API-Änderungen
- Die
collectAsStateWithLifecycle()
-APIs vonlifecycle-runtime-compose
haben nicht mehr den Status „Experimentell“. (I09d42, b/258835424) - Die Methoden
Lifecycle.launchWhenX
undLifecycle.whenX
wurden eingestellt, da die Verwendung eines pausierenden Dispatchers in einigen Fällen zu verschwendeten Ressourcen führen kann. Es wird empfohlen,Lifecycle.repeatOnLifecycle
zu verwenden. (Iafc54, b/248302832)
Kotlin-Conversions
ViewTreeLifecycleOwner
wurde in Kotlin neu geschrieben. Dies ist eine quelleninkompatible Änderung für Klassen, die in Kotlin geschrieben wurden. Sie müssen jetzt die Kotlin-Erweiterungsmethoden fürView
vonandroidx.lifecycle.setViewTreeLifecycleOwner
undandroidx.lifecycle.findViewTreeLifecycleOwner
direkt importieren und verwenden, um einen zuvor festgelegten Inhaber festzulegen und zu finden. Dadurch wird die vorherige Kotlin-Erweiterung inlifecycle-runtime-ktx
ersetzt. Dies ist binärkompatibel und bleibt für Implementierungen, die in der Programmiersprache Java geschrieben wurden, quellkompatibel. (I8a77a, I5234e, b/240298691)LiveDataReactiveStreams
wurde in Kotlin neu geschrieben. Die Kotlin-Erweiterungen, die sich zuvor inlifecycle-reactivestreams-ktx
befanden, wurden in daslifecycle-reactivestreams
-Modul verschoben und sind nun die primäre Oberfläche für in Kotlin geschriebenen Code. Dies ist eine quellinkompatible Änderung für in Kotlin geschriebenen Code, wenn Sie die Kotlin-Erweiterungsmethoden-APIs noch nicht verwendet haben. (I2b1b9, I95d22, b/240298691)DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
,LifecycleRegistry
,LifecycleObserver
undViewModelStore
sind jetzt in Kotlin geschrieben (Iadffd, I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691).
Fehlerkorrekturen
SavedStateHandle
stürzt nicht mehr mit einemClassCastException
ab, wennget()
mit dem falschen Klassentyp aufgerufen wird. (I6ae7c)
Version 2.6.0-alpha03
24. Oktober 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha03
wird veröffentlicht. Version 2.6.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Einschränkungen zwischen verschiedenen Lifecycle-Modulen nicht wie vorgesehen funktionierten. (I18d0d, b/249686765)
- Fehler, die von
LifecycleRegistry.moveToState()
ausgelöst werden, enthalten jetzt eine hilfreichere Fehlermeldung, die Entwickler über die Komponente informiert, die den Fehler verursacht hat. (Idf4b2, b/244910446)
Version 2.6.0-alpha02
7. September 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha02
wird veröffentlicht. Version 2.6.0-alpha02 enthält diese Commits.
API-Änderungen
MediatorLiveData
enthält jetzt einen Konstruktor zum Festlegen eines Anfangswerts. (Ib6cc5, b/151244085)
Fehlerkorrekturen
Lifecycle
-Artefakte enthalten jetzt Einschränkungen, die dafür sorgen, dass alle voneinander abhängigen Lifecycle-Artefakte dieselbe Version verwenden. Andere Abhängigkeiten werden automatisch aktualisiert, wenn eine aktualisiert wird. b/242871265FlowLiveData.asFlow()
erstellt jetzt eincallbackFlow
, anstatt die eigeneChannel
-Implementierung zu verwenden, um Thread-Sicherheit und Kontextbeibehaltung zu gewährleisten. (I4a8b2, b/200596935)- Die
asLiveData
-Funktion vonFlowLiveData
behält jetzt den ursprünglichen Wert einesStateFlow
bei, wenn das neueLiveData
-Objekt erstellt wird. (I3f530, b/157380488) - Lifecycle
2.5.1
: Bei benutzerdefinierten Implementierungen vonAndroidViewModelFactory
wird jetzt die Funktioncreate(modelClass)
korrekt aufgerufen, wenn der zustandsbehaftete Konstruktor mitLifecycle
2.4 oder höher verwendet wird (I5b315, b/238011621).
Version 2.6.0-alpha01
29. Juni 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha01
wird veröffentlicht. Version 2.6.0-alpha01 enthält diese Commits.
Neue Funktionen
- Es wurde eine neue Erweiterung für
StateFlow
undFlow
voncollectAsStateWithLifecycle
hinzugefügt, die Daten aus Abläufen erfasst und den aktuellen Wert als Compose-Status auf lebenszyklusbewusste Weise darstellt. Der Flow wird erfasst und die neue Emission wird auf den Wert des Status festgelegt, wenn der Lebenszyklus mindestens in einem bestimmtenLifecycle.State
ist. Wenn der Lebenszyklus unter diesenLifecycle.State
fällt, wird die Erfassung von Flows beendet und der Wert des Status wird nicht aktualisiert. (I1856e, b/230557927)
Version 2.5
Version 2.5.1
27. Juli 2022
androidx.lifecycle:lifecycle-*:2.5.1
wird veröffentlicht. Version 2.5.1 enthält diese Commits.
Fehlerkorrekturen
- Bei benutzerdefinierten Implementierungen von
AndroidViewModelFactory
wird jetzt die Funktioncreate(modelClass)
korrekt aufgerufen, wenn der zustandsbehaftete KonstruktorAndroidViewModelFactory
mitLifecycle
2.4+ verwendet wird. (I5b315, b/238011621)
Version 2.5.0
29. Juni 2022
androidx.lifecycle:lifecycle-*:2.5.0
wird veröffentlicht. Version 2.5.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.4.0
SavedStateHandle
bietet jetzt einegetStateFlow()
API, die eine Kotlin-StateFlow
für die Überwachung von Wertänderungen zurückgibt. Das ist eine Alternative zur Verwendung vonLiveData
.ViewModel CreationExtras: Wenn Sie eine benutzerdefinierte
ViewModelProvider.Factory
schreiben, müssen Sie nicht mehrAndroidViewModelFactory
oderAbstractSavedStateViewModelFactory
erweitern, um Zugriff auf eineApplication
bzw.SavedStateHandle
zu erhalten. Stattdessen werden diese Felder jederViewModelProvider.Factory
-Unterklasse alsCreationExtras
über die neue Überladung voncreate
bereitgestellt:create(Class<T>, CreationExtras)
. Diese Extras werden automatisch von Ihrer Aktivität oder Ihrem Fragment bereitgestellt, wenn Sie Activity1.5.0
bzw. Fragment1.5.0
verwenden.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
bietet jetzt eineviewModelFactory
Kotlin-DSL, mit der Sie IhreViewModelProvider.Factory
in Form von einem oder mehreren Lambda-Initialisierern definieren können. Dabei wird für jedeViewModel
-Klasse, die von Ihrer benutzerdefinierten Factory unterstützt wird, ein Lambda-Initialisierer verwendet undCreationExtras
als primäre Datenquelle genutzt.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
bietet jetzt eineviewModel()
API, die eine Lambda-Factory zum Erstellen einerViewModel
-Instanz verwendet, ohne dass eine benutzerdefinierteViewModelProvider.Factory
erstellt werden muss.// 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: Das
lifecycle-viewmodel-compose
-Artefakt enthält jetzt neue experimentelle APIs inSavedStateHandle.saveable
, dierememberSaveable
-ähnliches Verhalten ermöglichen, das durchSavedStateHandle
eines `ViewModel` unterstützt wird.class ListScreenViewModel(handle: SavedStateHandle): ViewModel() { // This value survives both configuration changes and process death and recreation val editMode by handle.saveable { mutableStateOf(false) } }
Es wurde eine
addCloseable()
-API und eine neue Konstruktorüberladung hinzugefügt, mit der Sie derViewModel
ein oder mehrereCloseable
-Objekte hinzufügen können, die geschlossen werden, wenn dieViewModel
gelöscht wird. Dazu ist keine manuelle Arbeit inonCleared()
erforderlich.Wenn Sie beispielsweise einen Coroutine-Scope erstellen möchten, den Sie in ein ViewModel einfügen, aber über Tests steuern können, erstellen Sie eine
CoroutineScope
, dieCloseable
implementiert:class CloseableCoroutineScope( context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate ) : Closeable, CoroutineScope { override val coroutineContext: CoroutineContext = context override fun close() { coroutineContext.cancel() } }
Dieser kann dann im Konstruktor von
ViewModel
verwendet werden, wobei die Lebensdauer vonviewModelScope
beibehalten wird:class TestScopeViewModel( val customScope: CloseableCoroutineScope = CloseableCoroutineScope() ) : ViewModel(customScope) { // You can now use customScope in the same way as viewModelScope }
Geändertes Verhalten
- Wenn Sie versuchen, die
Lifecycle.State
vonINITIALIZED
nachDESTROYED
zu verschieben, wird jetzt immer eineIllegalStateException
ausgelöst, unabhängig davon, ob derLifecycle
ein angehängtes Observer-Objekt hat. LifecycleRegistry
löscht jetzt die Beobachter, wenn der StatusDESTROYED
erreicht wird.
Version 2.5.0-rc02
15. Juni 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc02
wird veröffentlicht. Version 2.5.0-rc02 enthält diese Commits.
Fehlerkorrekturen
ViewModelProvider
stürzt nicht mehr ab, wenn frühere Versionen von compileOnly-Lifecycle-Abhängigkeiten mit Versionen ab 2.5 gemischt werden. (I81a66, b/230454566)
Version 2.5.0-rc01
11. Mai 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc01
wird veröffentlicht. Version 2.5.0-rc01 enthält diese Commits.
Fehlerkorrekturen
MediatorLiveData.addSource()
löst jetzt eineNullPointerException
aus, wenn einenull
-Quelle übergeben wird, anstatt dienull
-Quelle an Beobachter weiterzugeben.(Ibd0fb, b/123085232)
Version 2.5.0-beta01
20. April 2022
androidx.lifecycle:lifecycle-*:2.5.0-beta01
wird veröffentlicht. Version 2.5.0-beta01 enthält diese Commits.
API-Änderungen
SavedStateHandle.saveable
-Property-Delegates hinzugefügt, um Property-Namen als Schlüssel zum Speichern des Status inSavedStateHandle
zu verwenden (I8bb86, b/225014345)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem das Einbetten eines
NavHost
in ein anderesNavHost
auf einem nicht primären Tab der unteren Navigation zu einemIllegalStateException
führte, wenn mehrere Backstacks verwendet wurden. (I11bd5, b/228865698)
Version 2.5.0-alpha06
6. April 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha06
wird veröffentlicht. Version 2.5.0-alpha06 enthält diese Commits.
Neue Funktionen
- Experimentelle
MutableState
-Überladung zuSavedStateHandle.saveable
hinzufügen, um Parität mitrememberSaveable
zu erreichen (I38cfe, b/224565154)
API-Änderungen
CreationExtras
ist jetzt abstrakt statt versiegelt. (Ib8a7a)
Fehlerkorrekturen
- Ein
IllegalStateException: Already attached to lifecycleOwner
-Fehler, der durchSavedStateHandleController
verursacht wurde, wurde behoben. (I7ea47, b/215406268)
Version 2.5.0-alpha05
23. März 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha05
wird veröffentlicht. Version 2.5.0-alpha05 enthält diese Commits.
Neue Funktionen
- Das Modul
lifecycle-viewmodel-compose
bietet jetztSavedStateHandleSaver
, eine experimentelle API, die dafür sorgt, dass Werte in einemSavedStateHandle
korrekt in denselben gespeicherten Instanzstatus integriert werden, denrememberSaveable
verwendet. (Ia88b7, b/195689777)
API-Änderungen
- Ein Kompatibilitätsproblem mit Lifecycle 2.3 und neueren Lifecycle-Versionen in Java wurde behoben. (I52c8a, b/219545060)
Fehlerkorrekturen
SavedStateViewFactory
unterstützt jetzt die Verwendung vonCreationExtras
, auch wenn es mit einemSavedStateRegistryOwner
initialisiert wurde. Wenn Extras angegeben werden, werden die initialisierten Argumente ignoriert. (I6c43b, b/224844583)
Version 2.5.0-alpha04
9. März 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha04
wird veröffentlicht. Version 2.5.0-alpha04 enthält diese Commits.
API-Änderungen
SavedStateHandle
bietet jetzt einegetStateFlow()
API, die eine Kotlin-StateFlow
für die Überwachung von Wertänderungen als Alternative zur Verwendung vonLiveData
zurückgibt. (Iad3ab, b/178037961)
Version 2.5.0-alpha03
23. Februar 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha03
wird veröffentlicht. Version 2.5.0-alpha03 enthält diese Commits.
Neue Funktionen
- Es wurde eine
addCloseable()
API und eine neue Konstruktorüberladung hinzugefügt, mit der Sie derViewModel
ein oder mehrereCloseable
-Objekte hinzufügen können, die geschlossen werden, wenn dieViewModel
gelöscht wird. Dazu ist kein manueller Aufwand inonCleared()
erforderlich. (I55ea0) lifecycle-viewmodel
bietet jetzt eineInitializerViewModelFactory
, mit der Sie Lambda zum Verarbeiten bestimmterViewModel
-Klassen hinzufügen können. Dabei wirdCreationExtras
als primäre Datenquelle verwendet. (If58fc, b/216687549)lifecycle-viewmodel-compose
bietet jetzt eineviewModel()
API, die eine Lambda-Factory zum Erstellen einerViewModel
-Instanz verwendet, ohne dass eine benutzerdefinierteViewModelProvider.Factory
erstellt werden muss. (I97fbb, b/216688927)
API-Änderungen
- Sie können jetzt ein
ViewModel
mitCreationExtras
überlifecycle-viewmodel-compose
erstellen. (I08887, b/216688927)
Geändertes Verhalten
- Wenn Sie versuchen, die
Lifecycle.State
vonINITIALIZED
nachDESTROYED
zu verschieben, wird jetzt immer eineIllegalStateException
ausgelöst, unabhängig davon, ob derLifecycle
ein angehängtes Observer-Objekt hat. (I7c390, b/177924329) LifecycleRegistry
löscht jetzt die Beobachter, wenn der StatusDESTROYED
erreicht wird. (I4f8dd, b/142925860)
Version 2.5.0-alpha02
9. Februar 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha02
wird veröffentlicht. Version 2.5.0-alpha02 enthält diese Commits.
API-Änderungen
SavedStateHandle
undSavedStateViewModelFactory
wurden in Kotlin konvertiert. Dadurch wurde die Nullable-Eigenschaft der Generics in beiden Klassen verbessert. (Ib6ce2, b/216168263, I9647a, b/177667711)- Der Funktionsparameter
LiveData
switchMap
kann jetzt eine Nullable-Ausgabe haben. (I40396, b/132923666) - Die
LiveData
-ktx-Erweiterungen sind jetzt mit@CheckResult
annotiert, um zu erzwingen, dass das Ergebnis beim Aufrufen dieser Funktionen verwendet wird. (Ia0f05, b/207325134)
Geändertes Verhalten
- In
SavedStateHandle
wird jetzt der defaultValue richtig gespeichert, wenn kein Wert für den angegebenen Schlüssel vorhanden ist. (I1c6ce, b/178510877)
Fehlerkorrekturen
- Aus Lifecycle
2.4.1
:lifecycle-process
wurde aktualisiert, um von Startup 1.1.1 abhängig zu sein. So wird sichergestellt, dass Korrekturen, die verhindern, dassProcessLifecycleInitializer
eineStartupException
auslöst, standardmäßig verfügbar sind. (Ib01df, b/216490724) - Es gibt jetzt eine verbesserte Fehlermeldung, wenn benutzerdefinierte
AndroidViewModel
-Klassen Parameter in der falschen Reihenfolge haben und versucht wird, eineViewModel
zu erstellen. (I340f7, b/177667711) - Sie können jetzt ein Ansichtsmodell über
CreationExtras
mitAndroidViewModelFactory
erstellen, ohne eine Anwendung festzulegen. (I6ebef, b/217271656)
Version 2.5.0-alpha01
26. Januar 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha01
wird veröffentlicht. Version 2.5.0-alpha01 enthält diese Commits.
ViewModel CreationExtras
Mit dieser Version schaffen wir die Grundlage für eine Umstrukturierung der Erstellung von ViewModel
. Anstelle einer starren Reihe von Unterklassen von ViewModelProvider.Factory
, die jeweils zusätzliche Funktionen hinzufügen (z. B. einen Application
-Konstruktorparameter über AndroidViewModelFactory
, einen SavedStateHandle
-Konstruktorparameter über SavedStateViewModelFactory
und AbstractSavedStateViewModelFactory
usw.), setzen wir jetzt auf zustandslose Factorys, die auf einem neuen Konzept basieren: CreationExtras
. (Ia7343, b/188691010, b/188541057)
Durch diese Änderung werden in ViewModelProvider
keine direkten Aufrufe mehr an die vorherige create(Class<T>)
-Methode von ViewModelProvider.Factory
gesendet. Stattdessen wird ein neuer Overload von create
aufgerufen: create(Class<T>, CreationExtras)
. Das bedeutet, dass jede direkte Implementierung der ViewModelProvider.Factory
-Instanz jetzt Zugriff auf die einzelnen neuen CreationExtras
hat:
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY
: DieserString
bietet Zugriff auf den benutzerdefinierten Schlüssel, den Sie anViewModelProvider.get()
übergeben haben.ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY
bietet Zugriff auf die KlasseApplication
.SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY
bietet Zugriff auf dieSavedStateRegistryOwner
, die zum Erstellen dieses ViewModels verwendet wird.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY
bietet Zugriff auf dieViewModelStoreOwner
, die zum Erstellen dieses ViewModels verwendet wird.SavedStateHandleSupport.DEFAULT_ARGS_KEY
bietet Zugriff auf dieBundle
von Argumenten, die zum Erstellen einesSavedStateHandle
verwendet werden sollen.
Diese Extras werden standardmäßig bereitgestellt, wenn Sie Activity 1.5.0-alpha01
, Fragment 1.5.0-alpha01
und Navigation 2.5.0-alpha01
verwenden. Wenn Sie eine frühere Version dieser Bibliotheken verwenden, ist CreationExtras
leer. Alle vorhandenen Unterklassen von ViewModelProvider.Factory
wurden neu geschrieben, um sowohl den alten Erstellungspfad, der von früheren Versionen dieser Bibliotheken verwendet wurde, als auch den CreationExtras
-Pfad zu unterstützen, der künftig verwendet wird.
Mit diesen CreationExtras
können Sie ein ViewModelProvider.Factory
erstellen, das nur die Informationen an die einzelnen ViewModel
weitergibt, die Sie benötigen. Dabei ist keine strenge Hierarchie von Factory-Unterklassen erforderlich:
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
}
}
Wir verwenden die Kotlin-Erweiterungsfunktion createSavedStateHandle()
für CreationExtras
aus SavedStateHandleSupport
, um ein SavedStateHandle
nur für das eine ViewModel zu erstellen, das es benötigt. (Ia6654, b/188541057)
Benutzerdefinierte CreationExtras
können bereitgestellt werden, indem Sie getDefaultViewModelCreationExtras()
in Ihrem ComponentActivity
oder Fragment
überschreiben. Dadurch sind sie für Ihr benutzerdefiniertes ViewModelProvider.Factory
als integrierte Form der unterstützten Einfügung verfügbar. Diese Extras werden automatisch für Ihre benutzerdefinierte Factory verfügbar gemacht, wenn sie direkt mit ViewModelProvider
verwendet werden oder wenn die Kotlin-Eigenschaftserweiterungen by viewModels()
und by activityViewModels()
verwendet werden. (I79f2b, b/207012584, b/207012585, b/207012490)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem der Standardwert, der für ein
SavedStateHandle
angegeben wurde, nach dem Beenden und erneuten Erstellen des Prozesses wieder angezeigt wurde, auch wenn er speziell aus demSavedStateHandle
entfernt wurde. Daher werden inSavedStateHandle
keine Standardwerte und wiederhergestellten Werte mehr zusammengeführt. Stattdessen werden nur die wiederhergestellten Werte als Quelle der Wahrheit verwendet. (I53a4b)
Version 2.4
Version 2.4.1
9. Februar 2022
androidx.lifecycle:lifecycle-*:2.4.1
wird veröffentlicht. Version 2.4.1 enthält diese Commits.
Fehlerkorrekturen
- Zurückportiert von Lifecycle
2.5.0-alpha01
: Es wurde ein Problem behoben, bei dem der für einSavedStateHandle
angegebene Standardwert nach dem Beenden und erneuten Erstellen des Prozesses wieder angezeigt wurde, auch wenn er speziell aus demSavedStateHandle
entfernt wurde. Daher werden inSavedStateHandle
keine Standardwerte und wiederhergestellten Werte mehr zusammengeführt. Stattdessen werden nur die wiederhergestellten Werte als Quelle der Wahrheit verwendet. (I53a4b) lifecycle-process
hängt jetzt von Androidx Startup 1.1.1 ab. Damit wurde ein Regressionsfehler behoben, bei dem die Verwendung vonProcessLifecycleInitializer
zu einemStartupException
führte. (b/216490724)
Version 2.4.0
27. Oktober 2021
androidx.lifecycle:lifecycle-*:2.4.0
wird veröffentlicht. Version 2.4.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.3.0
@OnLifecycleEvent
wurde eingestellt. Verwenden Sie stattdessenLifecycleEventObserver
oderDefaultLifecycleObserver
.- Die
androidx.lifecycle:lifecycle-viewmodel-compose
-Mediathek wurde hinzugefügt. Es bietetviewModel()
-Composable undLocalViewModelStoreOwner
.- Quellcode-gefährdende Änderung:
ViewModelProvider
wurde in Kotlin neu geschrieben. Die MethodeViewModelProvider.Factory.create
lässt keine Nullable-Generics mehr zu.
- Quellcode-gefährdende Änderung:
androidx.lifecycle:lifecycle-runtime-ktx
wurden neue Coroutines-APIs hinzugefügt:Lifecycle.repeatOnLifecycle
, API, die einen Codeblock in einer Coroutine ausführt, wenn sich der Lebenszyklus mindestens in einem bestimmten Status befindet. Der Block wird abgebrochen und neu gestartet, wenn der Lebenszyklus in den Zielstatus wechselt und wieder daraus heraus.Flow.flowWithLifecycle
: API, die Werte aus dem Upstream-Flow ausgibt, wenn sich der Lebenszyklus mindestens in einem bestimmten Status befindet.DefaultLifecycleObserver
wurde vonlifecycle.lifecycle-common-java8
nachlifecycle.lifecycle-common
verschoben.lifecycle.lifecycle-common-java8
bietet keine zusätzlichen Funktionen mehr, die überlifecycle.lifecycle-common
hinausgehen. Die Abhängigkeit davon kann also durchlifecycle.lifecycle-common
ersetzt werden.- Nicht-Coroutine-APIs aus
lifecycle-viewmodel-ktx
wurden in das Modullifecycle-viewmodel
verschoben. lifecycle-process
verwendet jetztandroidx.startup
, um dieProcessLifecycleOwner
zu initialisieren.Bisher wurde dies von
androidx.lifecycle.ProcessLifecycleOwnerInitializer
erledigt.Wenn Sie
tools:node="remove"
in der Vergangenheit zum Initialisieren des Prozesslebenszyklus verwendet haben, müssen Sie stattdessen Folgendes tun.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>
(oder)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Version 2.4.0-rc01
29. September 2021
androidx.lifecycle:lifecycle-*:2.4.0-rc01
wird ohne Änderungen gegenüber Lifecycle 2.4.0-beta01 veröffentlicht. Version 2.4.0-rc01 enthält diese Commits.
Version 2.4.0-beta01
15. September 2021
androidx.lifecycle:lifecycle-*:2.4.0-beta01
wird veröffentlicht. Version 2.4.0-beta01 enthält diese Commits.
API-Änderungen
@OnLifecycleEvent
wurde eingestellt. Verwenden Sie stattdessenLifecycleEventObserver
oderDefaultLifecycleObserver
. (I5a8fa)- DefaultLifecycleObserver wurde von
androidx.lifecycle.lifecycle-common-java8
nachandroidx.lifecycle.lifecycle-common
verschoben.androidx.lifecycle.lifecycle-common-java8
bietet keine zusätzlichen Funktionen mehr, die überandroidx.lifecycle.lifecycle-common
hinausgehen. Die Abhängigkeit davon kann also durchandroidx.lifecycle.lifecycle-common
ersetzt werden. (I021aa) - Nicht-Coroutine-APIs aus
lifecycle-viewmodel-ktx
wurden in das Modullifecycle-viewmodel
verschoben. (I6d5b2)
Externe Beiträge
- Vielen Dank an dmitrilc für die Korrektur eines Tippfehlers in der Dokumentation zu
ViewModel
. (#221)
Version 2.4.0-alpha03
4. August 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha03
wird veröffentlicht. Version 2.4.0-alpha03 enthält diese Commits.
API-Änderungen
- Quellcode-Breaking Change: ViewModelProvider wurde in Kotlin neu geschrieben.
Die Methode
ViewModelProvider.Factory.create
lässt keine generischen Nullable-Typen mehr zu. (I9b9f6)
Geändertes Verhalten
- Der
Lifecycle.repeatOnLifecycle
:block
-Callback wird jetzt immer seriell aufgerufen, wenn die Ausführung wiederholt wird. (Ibab33)
Externe Beiträge
- Vielen Dank an chao2zhang für die Korrektur der Code-Snippets in der
repeatOnLifecycle
-Dokumentation. 205.
Version 2.4.0-alpha02
16. Juni 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha02
wird veröffentlicht. Version 2.4.0-alpha02 enthält diese Commits.
Neue Funktionen
- Der Lint-Prüfung
lifecycle-runtime-ktx
wurde eine neueRepeatOnLifecycleWrongUsage
-Prüfung hinzugefügt, die erkennt, wennrepeateOnLifecycle
fälschlicherweise inonStart()
oderonResume()
verwendet wird. (706078, b/187887400)
API-Änderungen
- Die
LifecycleOwner.addRepeatingJob
API wurde zugunsten vonLifecycle.repeatOnLifecycle
entfernt, da diese API strukturierte Nebenläufigkeit unterstützt und einfacher zu verstehen ist. (I4a3a8) - Machen Sie
ProcessLifecycleInitializer
öffentlich, damit andereandroidx.startup.Initializer
s sie als Abhängigkeiten verwenden können. (I94c31)
Fehlerkorrekturen
- Ein Problem mit dem Lint-Check
NullSafeMutableLiveData
wurde behoben, wenn das Feld Modifizierer hat. (#147, b/183696616) - Ein weiteres Problem mit dem
NullSafeMutableLiveData
-Lint-Check bei der Verwendung von Generics wurde behoben. (#161, b/184830263)
Externe Beiträge
- Vielen Dank an maxsav für die Verbesserung der
NullSafeMutableLiveData
-Lint-Prüfung. (#147, b/183696616) - Vielen Dank an kozaxinan für die Verbesserung der
NullSafeMutableLiveData
-Lint-Prüfung. (#161, b/184830263)
Version 2.4.0-alpha01
24. März 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha01
wird veröffentlicht. Version 2.4.0-alpha01 enthält diese Commits.
Geändertes Verhalten
lifecycle-process
verwendet jetztandroidx.startup
, um dieProcessLifecycleOwner
zu initialisieren.Bisher wurde dies von
androidx.lifecycle.ProcessLifecycleOwnerInitializer
erledigt.Wenn Sie
tools:node="remove"
in der Vergangenheit zum Initialisieren des Prozesslebenszyklus verwendet haben, müssen Sie stattdessen Folgendes tun.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>
(oder)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
API-Änderungen
- Die
Flow.flowWithLifecycle
API wurde hinzugefügt, die Werte aus dem Upstream-Flow ausgibt, wenn sich der Lebenszyklus mit derLifecycle.repeatOnLifecycle
API mindestens in einem bestimmten Zustand befindet. Dies ist eine Alternative zur ebenfalls neuenLifecycleOwner.addRepeatinJob
API. (I0f4cd)
Fehlerkorrekturen
- Ab Lifecycle 2.3.1: Die Lint-Regel
NonNullableMutableLiveData
kann jetzt ordnungsgemäß zwischen Feldvariablen mit unterschiedlicher Nullable-Eigenschaft unterscheiden. (b/169249668)
Lifecycle Viewmodel Compose Version 1.0.0
Version 1.0.0-alpha07
16. Juni 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07
wird veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.
Breaking API Changes
viewModel()
akzeptiert jetzt ein optionalesViewModelStoreOwner
, was die Zusammenarbeit mit anderen Inhabern als demLocalViewModelStoreOwner
erleichtert. Sie können jetzt beispielsweiseviewModel(navBackStackEntry)
verwenden, um ein ViewModel abzurufen, das einem bestimmten Navigationsdiagramm zugeordnet ist. (I2628d, b/188693123)
Version 1.0.0-alpha06
2. Juni 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06
wird veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.
Aktualisiert, um mit Compose-Version 1.0.0-beta08
kompatibel zu sein.
Version 1.0.0-alpha05
18. Mai 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05
wird veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.
Neue Funktionen
- Aktualisiert, um mit Compose-Version
1.0.0-beta07
kompatibel zu sein.
Fehlerkorrekturen
- Die AndroidManifest-Dateien aus „ui-test-manifest“ und „ui-tooling-data“ sind jetzt mit Android 12 kompatibel (I6f9de, b/184718994).
Version 1.0.0-alpha04
7. April 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04
wird veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.
Änderungen an Abhängigkeiten
- In dieser Version können
androidx.hilt:hilt-navigation-compose
undandroidx.navigation:navigation-compose
Abhängigkeiten aufandroidx.compose.compiler:compiler:1.0.0-beta04
undandroidx.compose.runtime:runtime:1.0.0-beta04
synchronisieren. Für Version 1.0.0 müssen Compiler und Laufzeit übereinstimmen.
Version 1.0.0-alpha03
10. März 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03
wird veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.
API-Änderungen
LocalViewModelStoreOwner.current
gibt jetzt eine nullableViewModelStoreOwner
zurück, um besser zu bestimmen, ob eineViewModelStoreOwner
in der aktuellen Komposition verfügbar ist. APIs, für die einViewModelStoreOwner
erforderlich ist, z. B.viewModel()
undNavHost
, lösen weiterhin eine Ausnahme aus, wenn keinViewModelStoreOwner
festgelegt ist. (Idf39a)
Lifecycle-Viewmodel-Compose Version 1.0.0-alpha02
24. Februar 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02
wird veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.
API-Änderungen
LocalViewModelStoreOwner
hat jetztprovides
-Funktionen, die mitCompositionLocalProvider
verwendet werden können und dieasProvidableCompositionLocal()
API ersetzen. (I45d24)
Lifecycle-Viewmodel-Compose Version 1.0.0-alpha01
10. Februar 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
wird veröffentlicht. Version 1.0.0-alpha01 enthält diese Commits.
Neue Funktionen
- Die zusammensetzbare Funktion
viewModel()
undLocalViewModelStoreOwner
wurden vonandroidx.compose.ui.viewinterop
in dieses Artefakt imandroidx.lifecycle.viewmodel.compose
-Paket verschoben. (I7a374)
Version 2.3.1
Lifecycle-Version 2.3.1
24. März 2021
androidx.lifecycle:lifecycle-*:2.3.1
wird veröffentlicht. Version 2.3.1 enthält diese Commits.
Fehlerkorrekturen
- Die Lint-Regel
NonNullableMutableLiveData
kann jetzt korrekt zwischen Feldvariablen mit unterschiedlicher Nullable-Eigenschaft unterscheiden. (b/169249668)
Version 2.3.0
Version 2.3.0
10. Februar 2021
androidx.lifecycle:lifecycle-*:2.3.0
wird veröffentlicht. Version 2.3.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.2.0
SavedStateHandle
-Unterstützung für nicht serialisierbare Klassen:SavedStateHandle
unterstützt jetzt die Lazy-Serialisierung. Sie könnensetSavedStateProvider()
für einen bestimmten Schlüssel aufrufen und so einSavedStateProvider
bereitstellen, das einen Callback zusaveState()
erhält, wennSavedStateHandle
aufgefordert wird, seinen Status zu speichern. Weitere Informationen finden Sie unter Nicht serialisierbare Klassen speichern.- Durchsetzung des Lebenszyklusverhaltens:
- LifecycleRegistry erzwingt jetzt
DESTROYED
als Endstatus. LifecycleRegistry
prüft jetzt, ob seine Methoden im Hauptthread aufgerufen werden. Das war schon immer eine Anforderung für Lebenszyklen von Aktivitäten, Fragmenten usw. Das Hinzufügen von Beobachtern aus Nicht-Main-Threads führte zu schwer zu erfassenden Abstürzen zur Laufzeit. BeiLifecycleRegistry
-Objekten, die zu Ihren eigenen Komponenten gehören, können Sie die Prüfungen explizit deaktivieren, indem SieLifecycleRegistry.createUnsafe(...)
verwenden. Sie müssen dann jedoch dafür sorgen, dass eine ordnungsgemäße Synchronisierung erfolgt, wenn auf diesesLifecycleRegistry
über verschiedene Threads zugegriffen wird.
- LifecycleRegistry erzwingt jetzt
- Helfer für Lebenszyklusstatus und Ereignisse: Der Klasse
Lifecycle.Event
wurden statische Hilfsmethoden fürdownFrom(State)
,downTo(State)
,upFrom(State)
undupTo(State)
hinzugefügt, um dieEvent
anhand einerState
und der Übergangsrichtung zu generieren. Die MethodegetTargetState()
wurde hinzugefügt, die denState
bereitstellt, zu dem der Lebenszyklus direkt nach demEvent
übergeht. withStateAtLeast
: Es wurdenLifecycle.withStateAtLeast
-APIs hinzugefügt, die auf einen Lebenszyklusstatus warten und einen nicht unterbrechenden Codeblock synchron zum Zeitpunkt der Statusänderung ausführen und dann mit dem Ergebnis fortfahren. Diese APIs unterscheiden sich von den vorhandenenwhen*
-Methoden, da sie das Ausführen von unterbrechendem Code nicht zulassen und keinen benutzerdefinierten Dispatcher verwenden. (aosp/1326081)ViewTree
-APIs: Mit einer neuenViewTreeLifecycleOwner.get(View)
- undViewTreeViewModelStoreOwner.get(View)
-API können Sie die enthaltendenLifecycleOwner
bzw.ViewModelStoreOwner
für eine bestimmteView
-Instanz abrufen. Sie müssen auf Activity1.2.0
und Fragment1.3.0
sowie AppCompat 1.3.0-alpha01 oder höher aktualisieren, damit die Daten richtig ausgegeben werden. Die Kotlin-ErweiterungenfindViewTreeLifecycleOwner
undfindViewTreeViewModelStoreOwner
sind inlifecycle-runtime-ktx
bzw.lifecycle-viewmodel-ktx
verfügbar.LiveData.observe()
– Einstellung der Kotlin-Erweiterung: DieLiveData.observe()
-Kotlin-Erweiterung, die für die Verwendung der Lambda-Syntax erforderlich ist, wird jetzt eingestellt, da sie bei Verwendung von Kotlin 1.4 nicht mehr benötigt wird.
Version 2.3.0-rc01
16. Dezember 2020
androidx.lifecycle:lifecycle-*:2.3.0-rc01
wird veröffentlicht. Version 2.3.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Die Methode
keys()
vonSavedStateHandle
ist jetzt vor und nach dem Speichern des Status konsistent. Sie enthält jetzt zusätzlich zu den mitset()
undgetLiveData()
verwendeten Schlüsseln auch die zuvor mitsetSavedStateProvider()
verwendeten Schlüssel. (aosp/1517919, b/174713653)
Externe Beiträge
- Die APIs zum Anhalten von lebenszyklusbezogenen Coroutinen verarbeiten jetzt Aufrufe von
yield()
besser. Vielen Dank, Nicklas Ansman Giertz! (aosp/1430830, b/168777346)
Version 2.3.0-beta01
1. Oktober 2020
androidx.lifecycle:lifecycle-*:2.3.0-beta01
wird veröffentlicht. Version 2.3.0-beta01 enthält diese Commits.
API-Änderungen
- Die
LiveData.observe()
-Kotlin-Erweiterung, die für die Verwendung der Lambda-Syntax erforderlich ist, ist jetzt veraltet, da sie bei Verwendung von Kotlin 1.4 nicht mehr benötigt wird. (I40d3f)
Fehlerkorrekturen
- Upgrade von androidx auf Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Änderungen an der Dokumentation
- Der
liveData
-Builder und dieasLiveData()
-Dokumentation wurden aktualisiert und enthalten jetzt Details zum Ändern der angegebenen Zeitüberschreitungswerte. (aosp/1122324)
Version 2.3.0-alpha07
19. August 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha07
wird veröffentlicht. Version 2.3.0-alpha07 enthält diese Commits.
Fehlerkorrekturen
- Ein Absturzproblem beim
NullSafeMutableLiveData
-Lint-Check wurde behoben. (aosp/1395367)
Version 2.3.0-alpha06
22. Juli 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha06
wird veröffentlicht. Version 2.3.0-alpha06 enthält diese Commits.
Neue Funktionen
- Statische Hilfsmethoden von
downFrom(State)
,downTo(State)
,upFrom(State)
undupTo(State)
wurden zuLifecycle.Event
hinzugefügt, um dieEvent
anhand einerState
und der Übergangsrichtung zu generieren. Die MethodegetTargetState()
wurde hinzugefügt, die denState
bereitstellt, zu dem der Lebenszyklus direkt nach demEvent
übergeht. (I00887) - Es wurden
Lifecycle.withStateAtLeast
-APIs hinzugefügt, die auf einen Lebenszyklusstatus warten und einen nicht unterbrechenden Codeblock synchron zum Zeitpunkt der Statusänderung ausführen und dann mit dem Ergebnis fortfahren. Diese APIs unterscheiden sich von den vorhandenenwhen*
-Methoden, da sie das Ausführen von unterbrechendem Code nicht zulassen und keinen benutzerdefinierten Dispatcher verwenden. (aosp/1326081)
Geändertes Verhalten
- LifecycleRegistry erzwingt jetzt
DESTROYED
als Endstatus. (I00887) LifecycleRegistry
prüft jetzt, ob seine Methoden im Hauptthread aufgerufen werden. Das war schon immer eine Anforderung für Lebenszyklen von Aktivitäten, Fragmenten usw. Das Hinzufügen von Beobachtern aus Nicht-Main-Threads führte zu schwer zu erfassenden Abstürzen zur Laufzeit. BeiLifecycleRegistry
-Objekten, die zu Ihren eigenen Komponenten gehören, können Sie die Prüfungen explizit deaktivieren, indem SieLifecycleRegistry.createUnsafe(...)
verwenden. Sie müssen dann jedoch dafür sorgen, dass eine ordnungsgemäße Synchronisierung erfolgt, wenn auf diesesLifecycleRegistry
über verschiedene Threads zugegriffen wird (Ie7280, b/137392809).
Fehlerkorrekturen
- Ein Fehler wurde behoben, der zum Absturz von
NullSafeMutableLiveData
führte. (b/159987480) - Ein
ObsoleteLintCustomCheck
für Lint-Prüfungen, die mitlifecycle-livedata-core-ktx
(insbesondereNullSafeMutableLiveData
) gebündelt sind, wurde behoben. (b/158699265)
Version 2.3.0-alpha05
24. Juni 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha05
wird veröffentlicht. Version 2.3.0-alpha05 enthält diese Commits.
Fehlerkorrekturen
LiveData
verarbeitet jetzt Reentrant-Fälle besser und vermeidet doppelte Aufrufe vononActive()
oderonInactive()
. (b/157840298)- Ein Problem wurde behoben, bei dem Lint-Prüfungen bei Verwendung von Android Studio 4.1 Canary 6 oder höher nicht ausgeführt wurden. (aosp/1331903)
Version 2.3.0-alpha04
10. Juni 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha04
wird veröffentlicht. Version 2.3.0-alpha04 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, der zum Absturz des
NonNullableMutableLiveData
-Lint-Checks führte. (b/157294666) - Der
NonNullableMutableLiveData
-Lint-Check deckt jetzt deutlich mehr Fälle ab, in denen einnull
-Wert für einMutableLiveData
mit einem nicht leeren Typparameter festgelegt wurde. (b/156002218)
Version 2.3.0-alpha03
20. Mai 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha03
werden veröffentlicht. Version 2.3.0-alpha03 enthält diese Commits.
Neue Funktionen
SavedStateHandle
unterstützt jetzt die Lazy-Serialisierung. Sie könnensetSavedStateProvider()
für einen bestimmten Schlüssel aufrufen und so einSavedStateProvider
bereitstellen, das einen Callback zusaveState()
erhält, wennSavedStateHandle
aufgefordert wird, seinen Status zu speichern. (b/155106862)- Mit einer neuen
ViewTreeViewModelStoreOwner.get(View)
-API können Sie das enthaltendeViewModelStoreOwner
für eineView
-Instanz abrufen. Sie müssen auf Activity1.2.0-alpha05
, Fragment1.3.0-alpha05
und AppCompat1.3.0-alpha01
aktualisieren, damit die Daten korrekt ausgegeben werden.findViewModelStoreOwner()
wurde einefindViewModelStoreOwner()
-Kotlin-Erweiterung hinzugefügt.lifecycle-viewmodel-ktx
(aosp/1295522)
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das die in Lifecycle
2.3.0-alpha01
veröffentlichtenMutableLiveData
-Lint-Prüfungen nicht zusammen mit demlifecycle-livedata-core-ktx
-Artefakt veröffentlicht wurden. (b/155323109)
Version 2.3.0-alpha02
29. April 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha02
wird veröffentlicht. Version 2.3.0-alpha02 enthält diese Commits.
API-Änderungen
- Mit
SavedStateViewModelFactory
können Sie jetzt einen Nullwert fürApplication
an den Konstruktor übergeben, um Fälle besser zu unterstützen, in denen kein Wert verfügbar ist und keine Unterstützung fürAndroidViewModel
erforderlich ist. (aosp/1285740)
Fehlerkorrekturen
- Die Kaltstartleistung wurde verbessert, indem Klassenprüfungsfehler auf Geräten mit API 28 und niedriger vermieden werden. (aosp/1282118)
Version 2.3.0-alpha01
4. März 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha01
wird veröffentlicht. Version 2.3.0-alpha01 enthält diese Commits.
Neue Funktionen
- Mit einer neuen
ViewTreeLifecycleOwner.get(View)
-API können Sie das enthaltendeLifecycleOwner
für eineView
-Instanz abrufen. Sie müssen ein Upgrade auf Activity1.2.0-alpha01
und Fragment1.3.0-alpha01
durchführen, damit diese Daten richtig erfasst werden. EinefindViewTreeLifecycleOwner
-Kotlin-Erweiterung ist inlifecycle-runtime-ktx
verfügbar. (aosp/1182361, aosp/1182956) - Es wurde eine neue Lint-Prüfung hinzugefügt, die Sie warnt, wenn Sie einen
null
-Wert für einMutableLiveData
festlegen, das in Kotlin als „nicht null“ definiert wurde. Diese Option ist verfügbar, wenn Sie die Artefaktelivedata-core-ktx
oderlivedata-ktx
verwenden. (aosp/1154723, aosp/1159092) - Es ist ein neues
lifecycle-runtime-testing
-Artefakt verfügbar, das einTestLifecycleOwner
bereitstellt, dasLifecycleOwner
implementiert und ein threadsicheres, veränderlichesLifecycle
bereitstellt. (aosp/1242438)
Fehlerkorrekturen
- Das
lifecycle-runtime
-Artefakt hat jetzt einen eindeutigen Paketnamen. (aosp/1187196)
Version 2.2.0
ViewModel-Savedstate Version 2.2.0
5. Februar 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0
wird veröffentlicht. Version 2.2.0 enthält diese Commits.
Lifecycle ViewModel SavedState hat jetzt dieselbe Version wie andere Lifecycle-Artefakte. Das Verhalten von 2.2.0
ist identisch mit dem Verhalten von 1.0.0
.
Version 2.2.0
22. Januar 2020
androidx.lifecycle:lifecycle-*:2.2.0
wird veröffentlicht. Version 2.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.1.0
- Lifecycle-Coroutine-Integration: Das neue
lifecycle-runtime-ktx
-Artefakt bietet eine Integration zwischen Lifecycle und Kotlin-Coroutinen. Dielifecycle-livedata-ktx
wurde ebenfalls erweitert, um die Vorteile von Coroutinen zu nutzen. Weitere Informationen finden Sie unter Kotlin-Coroutinen mit Architecture Components verwenden. - Einstellung von
ViewModelProviders.of()
:ViewModelProviders.of()
wurde eingestellt. Sie können einFragment
- oderFragmentActivity
-Objekt an den neuenViewModelProvider(ViewModelStoreOwner)
-Konstruktor übergeben, um dieselbe Funktionalität wie bei der Verwendung von Fragment1.2.0
zu erzielen. lifecycle-extensions
-Artefakt wird eingestellt: Mit der oben genannten Einstellung vonViewModelProviders.of()
wird mit diesem Release die letzte API inlifecycle-extensions
eingestellt. Dieses Artefakt sollte jetzt als vollständig eingestellt betrachtet werden. Wir empfehlen dringend, je nach den benötigten Lifecycle-Artefaktenlifecycle-service
(wenn SieLifecycleService
verwenden) undlifecycle-process
(wenn SieProcessLifecycleOwner
verwenden) anstelle vonlifecycle-extensions
zu verwenden, da es keine zukünftige2.3.0
-Version vonlifecycle-extensions
geben wird.- Gradle Incremental Annotation Processor: Der Annotation Processor von Lifecycle ist standardmäßig inkrementell.
Wenn Ihre App in der Programmiersprache Java 8 geschrieben ist, können Sie stattdessen
DefautLifecycleObserver
verwenden. Wenn sie in der Programmiersprache Java 7 geschrieben ist, können SieLifecycleEventObserver
verwenden.
Version 2.2.0-rc03
4. Dezember 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc03
wird veröffentlicht. Version 2.2.0-rc03 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, der auftrat, wenn ein simulierter
ViewModel
inViewModelStore
gespeichert und später mit der Standardfactory abgefragt wurde. - Die Verwendung von
Dispatchers.Main.immediate
inlaunchWhenCreated
und ähnlichen Methoden wurde korrigiert, sodass sie während des entsprechenden Lebenszyklus-Events synchron aufgerufen werden. (aosp/1156203)
Externe Beiträge
- Vielen Dank an Anders Järleberg für den Beitrag zur Fehlerbehebung. (aosp/1156203)
- Vielen Dank an Vsevolod Tolstopyatov von Jetbrains für die Überprüfung einer Implementierung der Inline-Ausführung.
Änderungen an Abhängigkeiten
- Lifecycle Extensions hängt jetzt von Fragment
1.2.0-rc03
ab.
Version 2.2.0-rc02
7. November 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc02
wird veröffentlicht. Version 2.2.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler in der ProGuard-Einrichtung der Bibliothek wurde behoben, der Geräte mit API 28 oder höher betraf, wenn das Ziel-API-Level unter 29 lag. (b/142778206)
Version 2.2.0-rc01
23. Oktober 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc01
wird veröffentlicht. Version 2.2.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem
launchWhenCreated
und zugehörige Methoden aufgrund der Verwendung vonDispatchers.Main
anstelle vonDispatchers.Main.immediate
einen Frame später als die zugehörige Methode für den Lebenszyklus ausgeführt wurden. (aosp/1145596)
Externe Beiträge
- Vielen Dank an Nicklas Ansman für den Beitrag zur Fehlerbehebung. (aosp/1145596)
Version 2.2.0-beta01
9. Oktober 2019
androidx.lifecycle:lifecycle-*:2.2.0-beta01
wird veröffentlicht. Version 2.2.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Regressionsfehler behoben, der in Lifecycle 2.2.0-alpha05 eingeführt wurde und die Reihenfolge von
ProcessLifecycleOwner
undLifecycleOwner
der Aktivität betrifft, die auf Android 10-Geräten in den Status „gestartet“ und „fortgesetzt“ wechselt. (aosp/1128132) - Ein in Lifecycle
2.2.0-alpha05
eingeführter Fehler wurde behoben, der bei Verwendung der Versionen2.0.0
oder2.1.0
vonlifecycle-process
zu einemNullPointerException
führte. (b/141536990)
Version 2.2.0-alpha05
18. September 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha05
wird veröffentlicht. Version 2.2.0-alpha05 enthält diese Commits.
Fehlerkorrekturen
- Es wurde eine Race-Bedingung im Coroutine-LiveData-Builder behoben. b/140249349
Version 2.2.0-alpha04
5. September 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha04
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
lifecycleScope
,whenCreated
,whenStarted
,whenResumed
,viewModelScope
und die zugrunde liegende Implementierung vonliveData
verwenden jetztDispatchers.Main.immediate
anstelle vonDispatchers.Main
. (b/139740492)
Externe Beiträge
- Vielen Dank an Nicklas Ansman für die Unterstützung bei der Umstellung auf
Dispatchers.Main.immediate
. (aosp/1106073)
Version 2.2.0-alpha03
7. August 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha03
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Implementierungen von
ViewModelStoreOwner
können jetzt optionalHasDefaultViewModelProviderFactory
implementieren, um einen Standardwert fürViewModelProvider.Factory
bereitzustellen. Dies wurde für Aktivität1.1.0-alpha02
, Fragment1.2.0-alpha02
und Navigation2.2.0-alpha01
durchgeführt. (aosp/1092370, b/135716331)
API-Änderungen
ViewModelProviders.of()
wurde eingestellt. Sie können einFragment
- oderFragmentActivity
-Objekt an den neuenViewModelProvider(ViewModelStoreOwner)
-Konstruktor übergeben, um dieselbe Funktionalität zu erreichen. (aosp/1009889)
Version 2.2.0-alpha02
2. Juli 2019
androidx.lifecycle:*:2.2.0-alpha02
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
LiveDataScope.initialValue
wurde durchLiveDataScope.latestValue
ersetzt, um den aktuellen ausgegebenen Wert des BlocksliveData
zu erfassen.- Dem
liveData
-Builder wurde eine neue Überladung hinzugefügt, die den Parametertimeout
vom TypDuration
empfängt.
Version 2.2.0-alpha01
7. Mai 2019
androidx.lifecycle:*:2.2.0-alpha01
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- In dieser Version werden neue Funktionen hinzugefügt, die die Unterstützung von Kotlin-Coroutinen für Lifecycle und LiveData ermöglichen. Eine detaillierte Dokumentation dazu finden Sie hier.
ViewModel-SavedState Version 1.0.0
Version 1.0.0
22. Januar 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0
wird veröffentlicht. Version 1.0.0 enthält diese Commits.
Wichtige Funktionen in Version 1.0.0
- Die neue Klasse SavedStateHandle wurde hinzugefügt. Dadurch können Ihre
ViewModel
-Klassen auf den gespeicherten Status zugreifen und dazu beitragen. Dieses Objekt kann im Konstruktor der KlasseViewModel
empfangen werden. Die von Fragmenten und AppCompatActivity standardmäßig bereitgestellten Factorys fügenSavedStateHandle
automatisch ein. - AbstractSavedStateViewModelFactory wurde hinzugefügt. Damit können Sie benutzerdefinierte Factorys für Ihre
ViewModel
erstellen und ihnen Zugriff aufSavedStateHandle
gewähren.
ViewModel-Savedstate Version 1.0.0-rc03
4. Dezember 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03
wird veröffentlicht. Version 1.0.0-rc03 enthält diese Commits.
Änderungen an Abhängigkeiten
- Lifecycle ViewModel SavedState hängt jetzt von Lifecycle
2.2.0-rc03
ab.
Viewmodel-Savedstate Version 1.0.0-rc02
7. November 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02
wird veröffentlicht. Version 1.0.0-rc02 enthält diese Commits.
Änderungen an Abhängigkeiten
- Hängt jetzt vom Lebenszyklus
2.2.0-rc02
ab.
ViewModel-SavedState Version 1.0.0-rc01
23. Oktober 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01
wird ohne Änderungen gegenüber 1.0.0-beta01
veröffentlicht. Version 1.0.0-rc01 enthält diese Commits.
ViewModel-Savedstate Version 1.0.0-beta01
9. Oktober 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01
wird veröffentlicht. Version 1.0.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem beim ersten Zugriff auf ein SavedState-ViewModel in
Activity.onActivityResult()
einIllegalStateException
auftrat. (b/139093676) - Ein
IllegalStateException
bei der Verwendung vonAbstractSavedStateViewModelFactory
wurde behoben. (b/141225984)
ViewModel-SavedState Version 1.0.0-alpha05
18. September 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05
wird veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.
API-Änderungen
SavedStateViewModelFactory
erbt nicht mehr vonAbstractSavedStateViewModelFactory
undSavedStateHandle
wird nur für ViewModels erstellt, die es angefordert haben (aosp/1113593).
ViewModel-SavedState Version 1.0.0-alpha03
7. August 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Aktuelle Änderungen
lifecycle-viewmodel-savedstate
ist nicht mehr vonfragment
abhängig und die zugehörigen KonstruktorenSavedStateViewModelFactory(Fragment)
undSavedStateViewModelFactory(FragmentActivity)
wurden entfernt. Stattdessen istSavedStateViewModelFactory
jetzt die Standard-Factory für Activity1.1.0-alpha02
, Fragment1.2.0-alpha02
und Navigation2.2.0-alpha01
. (b/135716331)
ViewModel-SavedState Version 1.0.0-alpha02
2. Juli 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Es wurde eine
SavedStateHandle.getLiveData()
-Überladung hinzugefügt, die einen Standardwert akzeptiert.
API-Änderungen
SavedStateVMFactory
wird inSavedStateViewModelFactory
umbenannt.AbstractSavedStateVMFactory
wird inAbstractSavedStateViewModelFactory
umbenannt.
ViewModel-Savedstate Version 1.0.0-alpha01
13. März 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01
wird veröffentlicht. Das vollständige Commit-Log für diese erste Version finden Sie hier.
Neue Funktionen
ViewModels
kann jetzt zum gespeicherten Status beitragen. Dazu verwenden Sie die neu eingeführte FactorySavedStateVMFactory
des ViewModels und Ihr ViewModel sollte einen Konstruktor haben, der dasSavedStateHandle
-Objekt als Parameter empfängt.
Version 2.1.0
Wichtige Änderungen seit Version 2.0.0
LifecycleEventObserver
für die Fälle hinzugefügt, in denen ein Stream von Lebenszyklusereignissen erforderlich ist. Es handelt sich um eine öffentliche API und nicht um eine verborgeneGenericLifecycleObserver
-Klasse.- Es wurden KTX-Erweiterungen für
LiveData.observe
-Methoden undTransformations.*
-Methoden hinzugefügt. Transformations.distinctUntilChanged
wurde hinzugefügt. Damit wird ein neues LiveData-Objekt erstellt, das erst dann einen Wert ausgibt, wenn sich der QuellwertLiveData
geändert hat.- Unterstützung für Coroutinen in ViewModels wurde durch Hinzufügen der Erweiterungseigenschaft
ViewModel.viewModelScope
hinzugefügt.
Version 2.1.0
5. September 2019
androidx.lifecycle:lifecycle-*:2.1.0
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Version 2.1.0-rc01
2. Juli 2019
androidx.lifecycle:*:2.1.0-rc01
wird ohne Änderungen gegenüber androidx.lifecycle:*:2.1.0-beta01
veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Version 2.1.0-beta01
7. Mai 2019
androidx.lifecycle:*:2.1.0-beta01
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Die Lebenszyklen sind in die Betaphase übergegangen: APIs, die in früheren Alphas eingeführt wurden, z. B.
liveData
-Erweiterungsfunktionen für Transformationen und Beobachtungen,ViewModel
-Initialisierung mit Eigenschaftsdelegierung und andere, sind stabilisiert und werden sich nicht ändern.
Version 2.1.0-alpha04
3. April 2019
androidx.lifecycle:*:2.1.0-alpha04
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
- Grundlegende Änderung: Die zugrunde liegende API für
by viewModels()
undby activityViewModels()
wurde geändert, um direktViewModelStore
anstelle von nurViewModelStoreOwner
zu unterstützen. (aosp/932932)
Version 2.1.0-alpha03
13. März 2019
androidx.lifecycle:*:2.1.0-alpha03
wird veröffentlicht. Eine vollständige Liste der in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
ViewModelProvider.KeyedFactory
wurde entfernt. Die zweite Schnittstelle zusätzlich zuViewModelProvider.Factory
war nicht gut mit neuen Funktionen wie der Attributdelegierung in Kotlinby viewmodels {}
kompatibel. (aosp/914133)
Version 2.1.0-alpha02
30. Januar 2019
androidx.lifecycle 2.1.0-alpha02
wird veröffentlicht.
API-Änderungen
LifecycleRegistry
enthält jetzt die MethodesetCurrentState()
, die die jetzt verworfene MethodesetState()
ersetzt. (aosp/880715)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Mock-
ViewModel
-Instanzen abgestürzt sind, wenn das enthaltendeViewModelStore
gelöscht wurde. b/122273087
Version 2.1.0-alpha01
17. Dezember 2018
androidx.lifecycle 2.1.0-alpha01
wird veröffentlicht.
Neue Funktionen
LifecycleEventObserver
für die Fälle hinzugefügt, in denen ein Stream von Lebenszyklusereignissen erforderlich ist. Es handelt sich um eine öffentliche API und nicht um eine verborgeneGenericLifecycleObserver
-Klasse.- Es wurden KTX-Erweiterungen für
LiveData.observe
-Methoden undTransformations.*
-Methoden hinzugefügt. - Die Methode
Transformations.distinctUntilChanged
wurde hinzugefügt. Es wird ein neuesLiveData
-Objekt erstellt, das erst dann einen Wert ausgibt, wenn sich der Quell-LiveData-Wert geändert hat. - Coroutine-Unterstützung in ViewModels: Die Erweiterungseigenschaft
ViewModel.viewModelScope
wurde hinzugefügt. ViewModelProvider.KeyedFactory
wurde hinzugefügt, eine Factory für ViewModels, diekey
undClass
in der Methodecreate
empfängt.
Version 2.0.0
Version 2.0.0
21. September 2018
Der Lebenszyklus 2.0.0
wird mit einem Fehlerkorrektur aus 2.0.0-rc01
in ViewModel veröffentlicht.
Fehlerkorrekturen
- Es wurde eine ProGuard-Regel für ViewModels korrigiert, durch die Konstruktoren fälschlicherweise entfernt wurden. b/112230489
Version 2.0.0-beta01
2. Juli 2018
Fehlerkorrekturen
- Die ProGuard-Regel für LifecycleObserver wurde korrigiert, sodass nur Implementierungen und keine untergeordneten Schnittstellen beibehalten werden. b/71389427
- Die ProGuard-Regeln für ViewModels wurden korrigiert, um die Verschleierung und das Verkleinern zu ermöglichen.
Versionen vor AndroidX
Für die Pre-AndroidX-Versionen von Lifecycle, die folgen, müssen Sie diese Abhängigkeiten einfügen:
dependencies {
def lifecycle_version = "1.1.1"
// ViewModel and LiveData
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
// alternatively - just ViewModel
implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
// alternatively - just LiveData
implementation "android.arch.lifecycle:livedata:$lifecycle_version"
// alternatively - Lifecycles only (no ViewModel or LiveData).
// Support library depends on this lightweight import
implementation "android.arch.lifecycle:runtime:$lifecycle_version"
annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
// alternately - if using Java8, use the following instead of compiler
implementation "android.arch.lifecycle:common-java8:$lifecycle_version"
// optional - ReactiveStreams support for LiveData
implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"
// optional - Test helpers for LiveData
testImplementation "android.arch.core:core-testing:$lifecycle_version"
}
Version 1.1.1
21. März 2018
Es gibt nur eine kleine Änderung: android.arch.core.util.Function
wird von arch:runtime
nach arch:common
verschoben. Dadurch kann sie ohne die Laufzeitabhängigkeit verwendet werden, z.B. in paging:common
unten.
lifecycle:common
ist eine Abhängigkeit von lifecycle:runtime
. Diese Änderung wirkt sich also nicht direkt auf lifecycle:runtime
aus, sondern nur auf Module, die direkt von lifecycle:common
abhängen, wie Paging.
Version 1.1.0
22. Januar 2018
Änderungen an der Verpackung
Es sind jetzt neue, viel kleinere Abhängigkeiten verfügbar:
android.arch.lifecycle:livedata:1.1.0
android.arch.lifecycle:viewmodel:1.1.0
API-Änderungen
- Die eingestellten
LifecycleActivity
undLifecycleFragment
wurden jetzt entfernt. Verwenden Sie stattdessenFragmentActivity
,AppCompatActivity
oderFragment
. @NonNull
-Annotationen wurdenViewModelProviders
undViewModelStores
hinzugefügt- Der
ViewModelProviders
-Konstruktor wurde eingestellt. Verwenden Sie stattdessen die statischen Methoden. ViewModelProviders.DefaultFactory
wurde eingestellt. Verwenden Sie stattdessenViewModelProvider.AndroidViewModelFactory
.- Die statische Methode
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
wurde hinzugefügt, um eine statischeFactory
abzurufen, die sich für die Erstellung vonViewModel
- undAndroidViewModel
-Instanzen eignet.