Lebenszyklus
In dieser Tabelle sind alle Artefakte in der Gruppe androidx.lifecycle aufgeführt.
| Artefakt | Stabile Version | Releasekandidat | Betarelease | Alpha-Release | 
|---|---|---|---|---|
| lifecycle-* | 2.9.4 | - | 2.10.0-beta01 | - | 
| lifecycle-viewmodel-navigation3 | - | - | 2.10.0-beta01 | - | 
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.4" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" // ViewModel utilities for Compose implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" // Lifecycle utilities for Compose implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // ViewModel integration with Navigation3 implementation "androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0-beta01" // 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.4" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version") // ViewModel utilities for Compose implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version") // Lifecycle utilities for Compose implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // ViewModel integration with Navigation3 implementation("androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0-beta01") // 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.4" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // Annotation processor annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.9.4" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // Annotation processor annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
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 stimmen, indem Sie auf die Schaltfläche mit dem Stern klicken.
Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.
Version 2.10
Version 2.10.0-beta01
22. Oktober 2025
androidx.lifecycle:lifecycle-*:2.10.0-beta01 ist veröffentlicht. Version 2.10.0-beta01 enthält diese Commits.
API-Änderungen
- ViewModelStoreNavEntryDecoratorDefaultwurde in- ViewModelStoreNavEntryDecoratorDefaultsumbenannt. (I6d27b, b/444447434)
Fehlerkorrekturen
- rememberLifecycleOwnerstürzt nicht mehr ab, wenn der Eigentümer ein- Lifecycle.Event.ON_DESTROY-Ereignis erhält, bevor er zu- Lifeycle.State.CREATEDwechselt. (I6f98e, b/444594991)
Version 2.10.0-alpha05
8. Oktober 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha05 ist veröffentlicht. Version 2.10.0-alpha05 enthält diese Commits.
API-Änderungen
- Die removeViewModelStoreOnPopCallback()ist jetzt Teil einesViewModelStoreNavEntryDecoratorDefault-Objekts, über das andere Plattformen und Implementierungen den Standard aufrufen können. (Ia1f23, b/444447434)
- ViewModelStoreNavEntryDecoratorwurde von einer Funktion zu einer Klasse umgestaltet, um die Funktionalität als Factory für- NavEntryDecoratorbesser widerzuspiegeln. Der- shouldRemoveViewModelStore-Parameter des Decorators wurde in- removeViewModelStoreOnPopumbenannt, um zu verdeutlichen, dass dieser Callback nur aufgerufen wird, wenn ein Eintrag aus- backStackentfernt wird. (Iefdc5, b/444447434)
Version 2.10.0-alpha04
24. September 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha04 ist veröffentlicht. Version 2.10.0-alpha04 enthält diese Commits.
API-Änderungen
- Refaktorieren Sie die zusammensetzbare Funktion LifecycleOwnerinrememberLifecycleOwner. Die Funktion gibt jetzt direkt denLifecycleOwnerzurück. Verwenden SieCompositionLocalProvider, um diesen Inhaber für eine untergeordnete Komposition anzugeben. (Ic57f0, b/444446629)
- KMP-Stubs zu lifecycle-viewmodel-navigation3 hinzufügen, damit JetBrains Forks bereitstellen kann, die diese Ziele ausfüllen und somit CMP unterstützen. (I44a4c)
Version 2.10.0-alpha03
27. August 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha03 ist veröffentlicht. Version 2.10.0-alpha03 enthält diese Commits.
API-Änderungen
- Aktualisieren Sie Compose auf Version 1.9.0. (I2b9de)
Version 2.10.0-alpha02
13. August 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha02 ist veröffentlicht. Version 2.10.0-alpha02 enthält diese Commits.
Neue Funktionen
- Mit der zusammensetzbaren Funktion - LifecycleOwnerkann jetzt ein eigenständiger Root-Lebenszyklus erstellt werden. Wenn Sie- parent = nullexplizit festlegen, funktioniert der neue Lebenszyklus unabhängig von einem Host (z. B.- Activity,- Fragmentoder- NavBackStackEntry). Er wird gestartet, sobald die Composable in die Komposition eintritt, und automatisch beendet, wenn sie die Komposition verlässt. (I8dfbe, b/433659048)- @Composable fun IndependentComponent() { // Create a standalone lifecycle, not tied to the parent Activity/Fragment. LifecycleOwner(parent = null) { val rootLifecycle = LocalLifecycleOwner.current.lifecycle } }
API-Änderungen
- Im zusammensetzbaren LifecycleOwnerwurde der ParameterparentLifecycleOwnerinparentumbenannt. (I080bc)
Fehlerkorrekturen
- Die LifecycleOwner-Composable verschiebt ihren Lebenszyklus jetzt korrekt zuDESTROYED, wenn sie entfernt wird. So werden potenzielle Lecks für externen Code verhindert, der einen Verweis auf den Lebenszyklus enthält. (I9e5b7, b/433659048)
- Die Standard-minSdk-Version wird von API 21 auf API 23 umgestellt (Ibdfca, b/380448311, b/435705964, b/435705223).
Externe Beiträge
- Entfernen Sie unnötige interne unterstützende Felder aus LifecycleOwner. Vielen Dank an Jake Wharton für den Beitrag. (Ideddb)
Version 2.10.0-alpha01
30. Juli 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha01 ist veröffentlicht. Version 2.10.0-alpha01 enthält diese Commits.
Neue Funktionen
- Fügen Sie eine zusammensetzbare Funktion - LifecycleOwnerhinzu, um direkt in der Benutzeroberfläche Lebenszyklen mit Bereich zu erstellen. Dies ist nützlich für Komponenten, die ihren eigenen Lebenszyklus unabhängig verwalten müssen. Ein Beispiel dafür, wie Navigation3 dieses neue Composable einbindet, finden Sie unter aosp/3708610. (76cbf7)- @Composable fun MyComposable() { LifecycleOwner( maxLifecycle = RESUMED, parentLifecycleOwner = LocalLifecycleOwner.current, ) { val childLifecycleOwner = LocalLifecycleOwner.current } }
API-Änderungen
- Fügen Sie eine Builder-Factory-Funktion für CreationExtrashinzu, um eine bequemere und idiomatische Kotlin API bereitzustellen. (Iab2bd)
- Native Unterstützung für Nullable-Typen in SavedStateHandle.savedhinzugefügt, wodurch das Speichern und Wiederherstellen von Nullable-Attributen vereinfacht wird. (I54d69, b/421325690)
- Markieren Sie SavedStateHandle-Konstruktoren als@VisibleForTesting. (Iff0e0, b/408002794)
Version 2.9
Version 2.9.4
17. September 2025
androidx.lifecycle:lifecycle-*:2.9.4 ist veröffentlicht. Version 2.9.4 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem das Compose Compiler-Plug-in nicht angewendet wurde, was dazu führte, dass Lifecycle KMP-Artefakte beschädigt waren. (Ie95bc, b/443096483, b/443965665)
Version 2.9.3
27. August 2025
androidx.lifecycle:lifecycle-*:2.9.3 ist veröffentlicht. Version 2.9.3 enthält diese Commits.
Neue Funktionen
- Fügen Sie den Lifecycle-*-compose-Artefakten neue Kotlin Multiplatform-Ziele (KMP) hinzu. Lifecycle unterstützt jetzt insgesamt die folgenden Plattformen: JVM (Android und Desktop), Native (Linux, iOS, watchOS, macOS, MinGW) und Web (JavaScript, WasmJS). (I0a0e4)
Fehlerkorrekturen
- androidx.annotationauf Version 1.9.1 aktualisieren (Ic9e4f, b/397701294)
Version 2.9.2
16. Juli 2025
androidx.lifecycle:lifecycle-*:2.9.2 ist veröffentlicht. Version 2.9.2 enthält diese Commits.
Fehlerkorrekturen
- Den Lifecycle-Artefakten wurden neue Kotlin Multiplatform-Ziele (KMP) hinzugefügt. Lifecycle unterstützt jetzt insgesamt die folgenden Plattformen: JVM (Android und Desktop), Native (Linux, iOS, watchOS, macOS, MinGW) und Web (JavaScript, WasmJS). Den *-compose-Artefakten wurden keine neuen KMP-Ziele hinzugefügt, da dies vom stabilen Release von Compose 1.9 abhängt. (I01cb8).
Abhängigkeitsupdates
- Der Lebenszyklus hängt jetzt von Annotation 1.9.1ab, um die Unterstützung für die neuen KMP-Ziele (Ic9e4f, b/397701294) zu ermöglichen.
Version 2.9.1
4. Juni 2025
androidx.lifecycle:lifecycle-*:2.9.1 ist veröffentlicht. Version 2.9.1 enthält diese Commits.
Fehlerkorrekturen
- Problem beheben, dass SavedStateHandle.remove(key)den StatusSavedStateHandle.getMutableStateFlow(key)nicht löscht. (d5f939, b/418746333)
Version 2.9.0
7. Mai 2025
androidx.lifecycle:lifecycle-*:2.9.0 ist 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 vonViewModelsbietet. Es unterstütztonClearedundSavedStateHandlesowie das Testen von Prozessende und ‑neustart überrecreate().
- Fügen Sie getMutableStateFlowzuSavedStateHandlehinzu, umMutableStateFlowzurückzugeben. Diese neue Funktion ist nur für Schlüssel verfügbar und kann nicht mitgetLiveDataverwendet werden. Wenn Sie versuchen, mit beiden auf denselben Status zuzugreifen, wird eine Ausnahme ausgelöst.
- CreationExtrasenthält jetzt kartenähnliche Operatorüberladungen, die eine idiomatische Bearbeitung von Inhalten in Kotlin ermöglichen. Sie ermöglicht die Verwendung von- in,- +=und- +mit- CreationExtras.
Unterstützung für KotlinX-Serialisierung
- Mit der Unterstützung von KotlinX Serialization, die in SavedState - 1.3.0hinzugefügt wurde, haben wir- savedeingeführt, einen Lazy-Property-Delegate, mit dem sich- @Serializable-Klassen ganz einfach in einem- SavedStateHandlespeichern und automatisch nach dem Beenden und erneuten Erstellen des Prozesses wiederherstellen lassen. Der- saved-Delegate ist lazy und ruft die- init-Lambda-Funktion erst auf oder speichert erst dann etwas in- SavedStateHandle, 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-testingist jetzt KMP-kompatibel, einschließlich APIs wieTestLifecycleOwner.
- Das Modul lifecycle-viewmodel-savedstateist jetzt KMP-kompatibel, einschließlich APIs wieSavedStateHandle.
- androidx.compose.ui.platform.LocalLifecycleOwnerist jetzt im gemeinsamen Quellsatz verfügbar.
- NewInstanceFactoryist jetzt für JVM-Desktop- und Android-Ziele verfügbar.
Geändertes Verhalten
- Der Status Lifecycle.DESTROYEDist ein Endstatus. Jeder Versuch, einLifecycledaraus in einen anderen Status zu verschieben, führt jetzt zu einemIllegalStateException.
- SavedStateHandleenthält keine- SavedStateProvider.saveState()mehr, bei denen der zurückgegebene- Bundleleer ist.
Version 2.9.0-rc01
23. April 2025
androidx.lifecycle:lifecycle-*:2.9.0-rc01 ist veröffentlicht. Version 2.9.0-rc01 enthält diese Commits.
Lint-Warnung zur API-Kompatibilität
- JetBrains hat KaCallableMemberCallvon einer Klasse in eine Schnittstelle geändert, was die binäre Kompatibilität beeinträchtigt. Dies kann zu Abstürzen führen, wenn sich die AGP-Version Ihres Projekts von der Version unterscheidet, die zum Kompilieren von Lint-Prüfungen verwendet wird. Diese Änderung wurde in aosp/3577172 vorgenommen, fehlte aber in den Versionshinweisen. Wir holen das hier nach. Empfohlene Lösung:Aktualisieren Sie auf die aktuelle stabile AGP-Version. Wenn Sie nicht vollständig aktualisieren können, verwenden Sieandroid.experimental.lint.version, um Lint-Prüfungen an Ihre AGP-Version anzupassen. Weitere Informationen finden Sie unter Verhaltensänderungen in der Compose-Laufzeit.
Version 2.9.0-beta01
9. April 2025
androidx.lifecycle:lifecycle-*:2.9.0-beta01 ist veröffentlicht. Version 2.9.0-beta01 enthält diese Commits.
API-Änderungen
- Lifecycle ViewModel Composeverwendet 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 Composehä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 ist veröffentlicht. Version 2.9.0-alpha12 enthält diese Commits.
API-Änderungen
- Fügen Sie ViewModelProvider.getauf allen unterstützten KMP-Plattformen die Annotation@MainThreadhinzu. (I7e8dd, b/397736115)
- Benennen Sie SavedState*DelegatesinSavedState*Delegateum. (I8589b, b/399629301)
Version 2.9.0-alpha11
26. Februar 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha11 ist veröffentlicht. Version 2.9.0-alpha11 enthält diese Commits.
API-Änderungen
- SavedStateConfig-Parameter zu- saved()-Delegaten hinzufügen (I39b3a)
Version 2.9.0-alpha10
12. Februar 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha10 ist veröffentlicht. Version 2.9.0-alpha10 enthält diese Commits.
API-Änderungen
- Verschiebe MutableStateSerializervonlifecycle-viewmodel-composenachsavedstate-compose. (I4f690, b/378895074)
Externe Beiträge
- Es wird ein neues Lint-Problem für den Aufruf von Lifecycle::currentStatein der Komposition hinzugefügt. Stattdessen wird die Verwendung voncurrentStateAsalue().valueempfohlen, 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 ist veröffentlicht. Version 2.9.0-alpha09 enthält diese Commits.
Neue Funktionen
- MutableStateSerializerzum Serialisieren von- androidx.compose.runtime.MutableStatehinzugefügt. (Idfc48, b/378895074)
API-Änderungen
- Überladene SavedStateHandle.saved()-Delegatfunktionen durch Standardparameter ersetzen (Icd1c1)
- AbstractSavedStateViewModelFactoryist veraltet, da für jedes- ViewModelein- SavedStateHandleerstellt wird, was unnötigen Overhead verursacht. Verwenden Sie stattdessen- ViewModelProvider.Factorymit- CreationExtras.createSavedStateHandle, um- ViewModeleffizienter zu erstellen. (Ia920b, b/388590327)
Version 2.9.0-alpha08
11. Dezember 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha08 ist veröffentlicht. Version 2.9.0-alpha08 enthält diese Commits.
Neue Funktionen
- Fügen Sie ViewModelScenario.recreatehinzu, um einen Systemprozess-Tod zu simulieren, bei dem die zu testendeViewModelund alle zugehörigen Komponenten neu erstellt werden. (Id6a69, b/381063087)
- LifecycleOwner- und- ViewModelStoreOwner-Instanzen, die über die entsprechenden- findViewTree-APIs abgerufen werden, können jetzt über disjunkte übergeordnete Elemente einer Ansicht, z. B. eine- ViewOverlay, aufgelöst werden. Weitere Informationen zu disjunkten Ansichtseltern finden Sie in den Versionshinweisen von Core oder in der Dokumentation unter- ViewTree.setViewTreeDisjointParent. (I800f4)
API-Änderungen
- Die Benennung und Paketorganisation müssen konsistenter mit SavedStateRegistryOwnerDelegatesein (I8c135, b/376026744).
Fehlerkorrekturen
- In dieser Bibliothek werden jetzt JSpecify-Annotationen für Nullsicherheit 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 ist veröffentlicht. Version 2.9.0-alpha07 enthält diese Commits.
Kompatibilität mit Kotlin Multiplatform
- Der Lebenszyklus ViewModel SavedStateist jetzt mit KMP kompatibel. So können SieSavedStateHandlein 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-alpha05hinzugefügt wurde, haben wir- savedeingeführt, einen Lazy-Property-Delegate, mit dem sich- @Serializable-Klassen ganz einfach in einem- SavedStateHandlespeichern und automatisch nach dem Beenden und erneuten Erstellen des Prozesses wiederherstellen lassen. Der- saved-Delegate ist lazy und ruft die- init-Lambda-Funktion erst auf oder speichert erst dann etwas in- SavedStateHandle, 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
- Addiere getMutableStateFlowzuSavedStateHandle, umMutableStateFlowzurückzugeben. Diese neue Funktion ist nur für Schlüssel verfügbar und kann nicht mitgetLiveDataverwendet 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 ist veröffentlicht. Version 2.9.0-alpha06 enthält diese Commits.
Geändertes Verhalten
- Der Status Lifecycle.DESTROYEDist ein Endstatus. Jeder Versuch, einLifecycledaraus in einen anderen Status zu verschieben, führt jetzt zu einemIllegalStateException. (I116c4, b/370577987)
- SavedStateHandleenthält keine- SavedStateProvider.saveState()mehr, bei denen der zurückgegebene- Bundleleer ist. (I910b5, b/370577987)
Fehlerkorrekturen
- Lifecycle.eventFlowwird jetzt korrekt abgeschlossen, wenn- Lifecycle- DESTROYEDist (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 ist veröffentlicht. Version 2.9.0-alpha04 enthält diese Commits.
Kotlin Multiplatform
- Das Modul lifecycle-viewmodel-savedstateist jetzt für KMP konfiguriert, um APIs wieSavedStateHandlevorzubereiten, 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 ist veröffentlicht. Version 2.9.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Ab Lifecycle 2.8.6: Der Lint-FehlerNullSafeMutableLiveDatabietet eine verbesserte Unterstützung für Smart Casts, wodurch Fehlalarme vermieden werden. (85fed6, b/181042665)
Abhängigkeitsupdates
- Lebenszyklus 2.8.6: Die Compose-Laufzeit für den Lebenszyklus hängt jetzt von der Compose-Laufzeit1.7.1ab.
- Die Laufzeit des Lebenszyklus hängt jetzt von ProfileInstaller 1.4.0ab.
Version 2.9.0-alpha02
4. September 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha02 ist veröffentlicht. Version 2.9.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Lebenszyklus 2.8.5: Aktualisieren Sie dieandroidx.lifecycle.ReportFragmentProGuard-Regeln, um die Verschleierung zuzulassen . (ff898e1)
Externe Beiträge
- Verschiebe androidx.compose.ui.platform.LocalLifecycleOwnerin den gemeinsamen Quellsatz (KMP). Vielen Dank an Ivan Matkov von JetBrains für seinen 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 ist veröffentlicht. Version 2.9.0-alpha01 enthält diese Commits.
Kotlin Multiplatform
- lifecycle-testingist 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 ViewModelmitViewModelProviderist 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)
- CreationExtrasenthält jetzt kartenähnliche Operatorüberladungen, die eine idiomatische Bearbeitung von Inhalten in Kotlin ermöglichen. Sie ermöglicht die Verwendung von- in,- +=und- +mit- CreationExtras. (Ib4353)
- CreationExtrasimplementiert jetzt die Methoden- equals,- hashCodeund- toString. (Ib4353)
- NewInstanceFactoryist jetzt für JVM-Desktop- und Android-Ziele verfügbar. (d3d0892)
- Inline-Erweiterungseigenschaft zum sicheren Bereitstellen der zugrunde liegenden Anwendung in Kotlin-Version 2.0 (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 verwendet wird (z. B. R8-Version 3.3), und für alle Builds, wenn AGP 8.1 oder höher verwendet wird (z. B. D8-Version 8.1). Clients, die AGP nicht verwenden, wird empfohlen, auf D8-Version 8.1 oder höher zu aktualisieren. Weitere Details finden Sie in diesem Artikel. (If6b4c, b/345472586)
Version 2.8
Version 2.8.7
30. Oktober 2024
androidx.lifecycle:lifecycle-*:2.8.7 ist veröffentlicht. Version 2.8.7 enthält diese Commits.
API-Änderungen
- androidx.compose.ui.platform.LocalLifecycleOwnerist 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 ist veröffentlicht. Version 2.8.6 enthält diese Commits.
Fehlerkorrekturen
- Der NullSafeMutableLiveData-Lint-Fehler bietet eine verbesserte Unterstützung für Smart Casts, wodurch Fehlalarme vermieden werden. (85fed6, b/181042665)
Abhängigkeitsupdates
- Lifecycle Runtime Compose hängt jetzt von Compose Runtime 1.7.1ab.
Version 2.8.5
4. September 2024
androidx.lifecycle:lifecycle-*:2.8.5 ist veröffentlicht. Version 2.8.5 enthält diese Commits.
Fehlerkorrekturen
- Aktualisieren Sie die androidx.lifecycle.ReportFragmentProGuard-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 ist 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 in- LiveDatafestgelegt ist (z. B. bei Verwendung von- take(1)). (I9c566)
- Der Abschluss von Lifecycle*Effectist jetzt idempotent. Das bedeutet: WennonStopOrDisposeaufgrund des beendeten Lebenszyklus aufgerufen wurde, wird es bei der Bereinigung nicht ein zweites Mal aufgerufen, es sei denn, der Lebenszyklus wird wieder aufSTARTEDgesetzt. (I5f607, b/352364595)
Version 2.8.3
1. Juli 2024
androidx.lifecycle:lifecycle-*:2.8.3 ist 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 der Code-Minifizierung behoben. (aosp/3133056, b/346808608)
Version 2.8.2
12. Juni 2024
androidx.lifecycle:lifecycle-*:2.8.2 ist 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 älter behoben: Sie können jetzt Lifecycle 2.8.2 mit jeder Version von Compose ohne Workarounds verwenden. (aosp/3105647, b/336842920)
- ViewModelProviderstürzt nicht mehr ab, wenn frühere Versionen von- compileOnly-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 ist veröffentlicht. Version 2.8.1 enthält diese Commits.
Fehlerkorrekturen
- lifecycle-viewmodel-composehat jetzt nur noch eine gemeinsame Abhängigkeit von- compose-runtime. Die gemeinsame Abhängigkeit von- compose-uiwurde entfernt. Das Android-Artefakt behält aus Kompatibilitätsgründen seine- compose-uibei. (aosp/3079334, b/339562627)
- Bei der ViewModel-Integration vonsaveablemit Attributdelegaten wird jetzt der Klassenname als Teil des automatisch generierten Schlüssels verwendet. So werden Konflikte vermieden, wenn mehrere Klassen dieselbeSavedStateHandleverwenden. (aosp/3063463)
Version 2.8.0
14. Mai 2024
androidx.lifecycle:lifecycle-*:2.8.0 ist veröffentlicht. Version 2.8.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.7.0
- LocalLifecycleOwnerwurde von der Compose-Benutzeroberfläche zu- lifecycle-runtime-composeverschoben, damit die Compose-basierten Hilfs-APIs außerhalb der Compose-Benutzeroberfläche verwendet werden können.
- Das lifecycle-runtime-compose-Artefakt enthält jetzt die APIsdropUnlessResumedunddropUnlessStarted, mit denen Sie Klick- oder andere Ereignisse verwerfen können, die auch dann auftreten, wennLifecycleOwnerunter den angegebenenLifecycle.Statefä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.viewModelScopeist jetzt ein überschreibbarer Konstruktorparameter. So können Sie Ihren eigenen Dispatcher und- SupervisorJob()einfügen oder den Standardwert mit- backgroundScopeüberschreiben, das in- runTestverfü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) }
- ViewModelwurde in Kotlin neu geschrieben und verwendet jetzt- AutoClosableanstelle von- Closeable. Es unterstützt jetzt das Hinzufügen von- AutoCloseable-Objekten mit einem- key, über das sie mit- getCloseable()abgerufen werden können.
- Das Aufrufen von - LifecycleStartEffectund- LifecycleResumeEffectohne Schlüssel führt jetzt zu einem Fehler. Dies entspricht der Konvention der- DisposableEffectAPI, die von diesen APIs gespiegelt wird.
- LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)wurde zugunsten von- LiveData.toPublisher(lifecycleOwner)verworfen.
- Die - lifecycle-livedata-core-ktx-Kotlin-Erweiterungen wurden in das- lifecycle-livedata-core-Modul verschoben.
- Der - NullSafeMutableLiveDatawurde ü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 mit Kotlin Multiplatform kompatiblen Artefakten enthalten.
Betroffene Artefakte:
- In lifecycle-commonwerden die meisten APIs zucommonverschoben und neben Android werden auch JVM und iOS unterstützt.
- In lifecycle-runtimewerden die meisten APIs zucommonverschoben und neben Android werden auch JVM und iOS unterstützt.
- lifecycle-runtime-ktxist jetzt leer, da alle APIs in- lifecycle-runtimeverschoben wurden.
- Mit lifecycle-runtime-composewerden alle APIs zucommonmigriert und ein Android-Artefakt ausgeliefert, das der Multiplattformunterstützung vonandroidx.composeentspricht.
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.NewInstanceFactoryund- ViewModelProvider.AndroidViewModelFactorysind nur auf Android-Geräten verfügbar.- Benutzerdefinierte Factorys sollten von ViewModelProvider.Factoryabgeleitet werden und diecreate-Methode verwenden, die einCreationExtrasakzeptiert, oder dieviewModelFactory-Kotlin-DSL.
 
- Benutzerdefinierte Factorys sollten von 
- Die Verwendung von ViewModelProviderohne 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.
- viewModelScopewird auf Plattformen, auf denen- Dispatchers.Mainnicht verfügbar ist, auf- EmptyCoroutineContextzurückgesetzt (z.B. Linux).
Betroffene Artefakte:
- In lifecycle-viewmodelwerden die meisten APIs zucommonverschoben und neben Android werden auch JVM und iOS unterstützt.
- lifecycle-viewmodel-ktxist jetzt leer, da alle APIs in- lifecycle-viewmodelverschoben wurden.
- Mit lifecycle-viewmodel-composewerden alle APIs zucommonmigriert und ein Android-Artefakt ausgeliefert, das der Multiplattformunterstützung vonandroidx.composeentspricht.
Geändertes Verhalten
- InitializerViewModelFactory(einschließlich der Builder-Funktion- viewModelFactory) löst jetzt eine- IllegalArgumentExceptionaus, wenn bereits eine- initializermit demselben- clazz: KClass<VM : ViewModel>hinzugefügt wurde. (Ic3a36)
Bekannte Probleme
- Für lifecycle-*:2.8.0ist mindestens die Compose-Version 1.7.0-alpha05 erforderlich (b/336842920).
Version 2.8.0-rc01
1. Mai 2024
androidx.lifecycle:lifecycle-*:2.8.0-rc01 ist 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 Ordnungswechsel beim Löschen von AutoCloseable-Instanzen behoben, die an ein ViewModel angehängt sind. Die vorherige ReihenfolgeaddCloseable(String, AutoCloseable), dannaddClosable(AutoCloseable)und dannonCleared()wurde wiederhergestellt. (aosp/3041632)
- Das Standardverhalten beim Erstellen von viewModelScopefü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 ist 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 zucommonverschoben und es wird ein Android-Artefakt ausgeliefert, das der Multiplatform-Unterstützung fürandroidx.composeentspricht. (If7a71, I4f4a0, b/331769623)
Version 2.8.0-alpha04
3. April 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha04 ist 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 zucommonverschoben und es wird ein Android-Artefakt ausgeliefert, das der Multiplatform-Unterstützung vonandroidx.composeentspricht. Um dieser Änderung Rechnung zu tragen, akzeptiert die zusammensetzbare MethodeviewModeljetzt zusätzlich zu einemjava.lang.Classauch einKClass. (b/330323282)
Fehlerkorrekturen
- Der NullSafeMutableLiveDatawurde ü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 ist veröffentlicht. Version 2.8.0-alpha03 enthält diese Commits.
Neue Funktionen
- ViewModel.viewModelScopeist jetzt ein überschreibbarer Konstruktorparameter. So können Sie Ihren eigenen Dispatcher und- SupervisorJob()einfügen oder den Standardwert mit- backgroundScopeüberschreiben, das in- runTestverfü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.NewInstanceFactoryund- ViewModelProvider.AndroidViewModelFactorysind nur auf Android-Geräten verfügbar.- Benutzerdefinierte Factorys sollten von ViewModelProvider.Factoryabgeleitet werden und diecreate-Methode verwenden, die einCreationExtrasakzeptiert, oder dieviewModelFactory-Kotlin-DSL.
 
- Benutzerdefinierte Factorys sollten von 
- Die Verwendung von ViewModelProviderohne 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.
- viewModelScopewird auf Plattformen, auf denen- Dispatchers.Mainnicht verfügbar ist, auf- EmptyCoroutineContextzurückgesetzt (z.B. Linux).
Geändertes Verhalten
- InitializerViewModelFactory(einschließlich der Builder-Funktion- viewModelFactory) löst jetzt eine- IllegalArgumentExceptionaus, wenn bereits eine- initializermit demselben- clazz: KClass<VM : ViewModel>hinzugefügt wurde. (Ic3a36)
Fehlerkorrekturen
- ViewModel.getCloseableverarbeitet jetzt doppelte Schlüssel: Wenn dem- keybereits eine- AutoCloseable-Ressource zugeordnet ist, wird die alte Ressource ersetzt und sofort geschlossen. (Ibeb67)
- Der Zugriff auf die viewModelScopeeinesViewModelist jetzt threadsicher. (If4766, b/322407038)
Externe Beiträge
- LocalLifecycleOwnerwurde 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 ist veröffentlicht. Version 2.8.0-alpha02 enthält diese Commits.
Neue Funktionen
- Die APIs dropUnlessResumedunddropUnlessStartedwurden hinzugefügt. Damit können Sie Klick- oder andere Ereignisse verwerfen, die auch dann auftreten, wennLifecycleOwnerunter den angegebenenLifecycle.Statefä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) }(Icba83, b/317230685)
Kotlin-Conversions
- ViewModelwurde jetzt in Kotlin geschrieben (I16f26, b/214568825)
- Die lifecycle-viewmodel-ktx-Kotlin-Erweiterungen wurden jetzt in das Basis-Lifecycle-Modul verschoben. (Id787b, b/274800183)
- Die lifecycle-runtime-ktx-Kotlin-Erweiterungen wurden jetzt in das Basis-Lifecycle-Modul verschoben. (Ic3686, b/274800183)
- Die lifecycle-livedata-core-ktx-Kotlin-Erweiterungen wurden jetzt 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.EventundLifecycleRegistrysind jetzt in mit Kotlin Multiplatform kompatiblen Artefakten enthalten. (b/317249252)
API-Änderungen
- Das Aufrufen von LifecycleStartEffectundLifecycleResumeEffectohne Schlüssel führt jetzt zu einem Fehler. Dies entspricht der Konvention derDisposableEffectAPI, die von diesen APIs gespiegelt wird. (Ib0e0c, b/323518079)
- ViewModelverwendet jetzt- AutoCloseableanstelle von- Closeable. Das ist eine abwärtskompatible Änderung. (I27f8e, b/214568825)
- LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)wurde zugunsten von- LiveData.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 ist veröffentlicht. Version 2.8.0-alpha01 enthält diese Commits.
Neue Funktionen
- In ViewModelkönnen jetztCloseable-Objekte mit einemkeyhinzugefügt werden, ü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 ist veröffentlicht. Version 2.7.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.6.0
- TestLifecycleOwnerenthält jetzt die Funktion- setCurrentState()zum Anhalten, die dafür sorgt, dass die Statusänderung und alle- LifecycleObserver-Callbacks abgeschlossen werden, bevor die Funktion zurückgegeben wird. Anders als beim direkten Festlegen des Attributs- currentStatewird hier nicht- runBlockingverwendet. Daher kann es sicher in einer Coroutine wie der von- runTestbereitgestellten verwendet werden.
- Die LiveData-Erweiterungen vonmapundswitchMapspiegeln jetzt das Verhalten vondistinctUntilChangedwider: Wenn für dieLiveDataeinvaluefestgelegt ist, wird diemap-/switchMap-Funktion sofort aufgerufen, um dasvalueder zurückgegebenenLiveDatazu füllen. So wird sichergestellt, dass der Anfangswert im Rahmen der ersten Komposition festgelegt wird (bei Verwendung vonobserveAsState()), das Beobachtungsverhalten wird jedoch nicht geändert. Aktualisierungen von Werten aus der QuelleLiveDatawerden erst angewendet, wenn Sie mit der Beobachtung vonLiveDatabeginnen.
- In dieser Version wurde ein Problem behoben, bei dem SavedStateHandlebenutzerdefinierteParcelable-Klassen nach dem Beenden und erneuten Erstellen des Prozesses nicht richtig wiederhergestellt hat. Da durch das Android-Framework Typinformationen verloren gehen, erfordern Arrays benutzerdefinierter Parcelables zusätzlichen Aufwand (manuelles Erstellen eines typisierten Arrays des richtigen Typs). In der Dokumentation zuget,getLiveDataundgetStateFlowwird diese Einschränkung jetzt ausdrücklich erwähnt.
- Die mit LifecycleObserververknü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 LifecycleEventObserverkönnen Sie jetzt einFlowvonLifecycle.Eventüber die ErweiterungsmethodeLifecycle.asFlow()beobachten.
- Jetpack Compose-Nutzer können jetzt LifecycleEventEffectverwenden, um Compose-Nebeneffekte basierend aufLifecycle.Eventauszuführen.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
  LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
    viewModel.refreshData()
  }
  // …
}
- Jetpack Compose-Nutzer können LifecycleStartEffectundLifecycleResumeEffectverwenden, um Ereignispaare zu verarbeiten, z. B. „gestartet“ bis „beendet“ und „fortgesetzt“ bis „pausiert“. Diese API entspricht der inDisposableEffectund 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.Statekann jetzt über das AttributLifecycle.currentStateFlowbeobachtet werden, das einStateFlowzurückgibt, wobeivalueder aktuelleLifecycle.Stateist.
- Jetpack Compose-Nutzer können die Lifecycle.currentStateAsState()-Erweiterung verwenden, umLifecycle.Statedirekt als Compose-Stateverfü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 ist veröffentlicht. Version 2.7.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem SavedStateHandlebenutzerdefinierteParcelable-Klassen nach dem Beenden und erneuten Erstellen des Prozesses nicht richtig wiederhergestellt hat. Da durch das Android-Framework Typinformationen verloren gehen, erfordern Arrays benutzerdefinierter Parcelables zusätzlichen Aufwand (manuelles Erstellen eines typisierten Arrays des richtigen Typs). In der Dokumentation zuget,getLiveDataundgetStateFlowwird diese Einschränkung jetzt ausdrücklich erwähnt. (I0b55a)
Version 2.7.0-rc01
15. November 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc01 ist veröffentlicht. Version 2.7.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- LifecycleStartEffectund- LifecycleResumeEffectverwerfen und erstellen den Effektblock jetzt korrekt neu, wenn- LifecycleOwnergeändert wird. (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 ist veröffentlicht. Version 2.7.0-alpha03 enthält diese Commits.
Neue Funktionen
- lifecycle-runtime-testingenthält jetzt einen neuen Lint-Check, um zu verhindern, dass die- Lifecycle.Statevon- TestLifecycleOwnermithilfe des Felds- currentStateinnerhalb einer Coroutine festgelegt wird. Der Lint-Check schlägt jetzt das Aussetzen von- setCurrentStatevor, wodurch- Lifecycle.Stateohne Blockierung festgelegt werden kann. (Icf728, b/297880630)
Fehlerkorrekturen
- Es wurde ein Problem mit LiveData.switchMapbehoben, 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 ist veröffentlicht. Version 2.7.0-alpha02 enthält diese Commits.
Neue Funktionen
- TestLifecycleOwnerenthält jetzt die Funktion zum Anhalten- setCurrentState(), damit Nutzer- TestLifecycleOwnerin einer Coroutine wie einer von- runTestbereitgestellten Coroutine verwenden können. (I329de, b/259344129)
API-Änderungen
- Alle Dateien aus den lifecycle-livedata-ktx-Modulen wurden in das Hauptmodullifecycle-livedataverschoben. (I10c6f, b/274800183)
Geändertes Verhalten
- Die Erweiterungen LiveData.map()undLiveData.switchMap()legen jetzt dievalueder zurückgegebenenLiveDatafest, wenn für die vorherigeLiveDataein Wert festgelegt wurde. So wird sichergestellt, dass die resultierende LiveData in Jetpack Compose bei der ersten Komposition den richtigen Status hat. (I91d2b, b/269479952)
- Die ViewModeladdCloseable()schließt jetzt sofort dieCloseable, wenn dieViewModelbereits einen Aufruf anonCleared()erhalten hat. (I4712e, b/280294730)
Fehlerkorrekturen
- Lifecycle 2.6.2: Ein Problem wurde behoben, bei demSavedStateHandlenach dem Beenden des Prozesses nicht korrekt wiederhergestellt wurde, wenn der Status wiederhergestellt wurde,save()aufgerufen wurde, ohne den Status tatsächlich im übergeordnetenSavedStateRegistryzu speichern, und der Status dann noch einmal wiederhergestellt wurde. Dadurch wird die Interaktion zwischenrememberSaveableundNavHostvon Navigation Compose behoben. (aosp/2729289)
Version 2.7.0-alpha01
26. Juli 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha01 ist veröffentlicht. Version 2.7.0-alpha01 enthält diese Commits.
API-Änderungen
- Lifecycle.Statekann jetzt über- Lifecycle.currentStateFlowin Compose beobachtet werden. Dabei wird ein- StateFlowzurückgegeben, wobei- valuedas aktuelle- Lifecycle.Stateist. (Ib212d, b/209684871)
- Lifecycle.Events können jetzt als- Flowmit- Lifecycle.asFlow().beobachtet werden (If2c0f, b/176311030).
- Die LifecycleResumeEffectAPI wurde hinzugefügt, um Compose-SideEffects basierend aufLifecycle.Event.ON_RESUME- undLifecycle.Event.ON_PAUSE-Ereignis-Callbacks auszuführen. (I60386, b/235529345)
- Die LifecycleStartEffectAPI wurde hinzugefügt, um Compose-SideEffects basierend aufLifecycle.Event.ON_START- undLifecycle.Event.ON_STOP-Event-Callbacks auszuführen. (I5a8d1, b/235529345)
- Die LifecycleEventEffectAPI wurde hinzugefügt, um Compose-SideEffects basierend aufLifecycle.Eventauszuführen. (Ic9794, b/235529345)
- Die Lifecycle.collectAsState()-Erweiterung wurde hinzugefügt, umLifecycle.Statedirekt als ComposeStateverfügbar zu machen. Dies entsprichtlifecycle.currentStateFlow.collectAsState()und ist eine kürzere Alternative. (I11015, b/235529345)
Fehlerkorrekturen
- Die LiveData.distinctUntilChanged()-Erweiterung legt jetzt dievaluedes zurückgegebenenLiveDatafest, wenn für das vorherigeLiveDataein Wert festgelegt wurde. Das ändert nichts am Beobachtungsverhalten. Aktualisierte Werte aus der QuelleLiveDatawerden erst angewendet, wenn Sie die vondistinctUntilChanged()zurückgegebeneLiveDatabeobachten. (Ib482f)
- Die mit LifecycleObserververknü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 ist veröffentlicht. Version 2.6.2 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem SavedStateHandlenach dem Beenden des Prozesses nicht korrekt wiederhergestellt wurde, wenn der Status wiederhergestellt wurde,save()aufgerufen wurde, ohne den Status tatsächlich im übergeordnetenSavedStateRegistryzu speichern, und der Status dann noch einmal wiederhergestellt wurde. Dadurch wird die Interaktion zwischenrememberSaveableundNavHostvon Navigation Compose behoben. (aosp/2729289)
Version 2.6.1
22. März 2023
androidx.lifecycle:lifecycle-*:2.6.1 ist veröffentlicht. Version 2.6.1 enthält diese Commits.
Abhängigkeitsupdates
- lifecycle-viewmodel-savedstateist jetzt von SavedState- 1.2.1abhängig. (cd7251)
- Der Lebenszyklus hängt jetzt von ProfileInstaller 1.3.0ab. (f9d30b)
Version 2.6.0
8. März 2023
androidx.lifecycle:lifecycle-*:2.6.0 ist veröffentlicht. Version 2.6.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.5.0
- LiveDataenthält jetzt die neue Eigenschaft- isInitialized, die angibt, ob jemals ein expliziter Wert für- LiveDatafestgelegt wurde. So können Sie unterscheiden, ob- liveData.value- nullzurückgibt, weil noch nie ein Wert festgelegt wurde, oder ob ein expliziter- null-Wert zurückgegeben wird.
- MediatorLiveDataenthält jetzt einen Konstruktor zum Festlegen eines Anfangswerts.
- Es wurde eine neue Erweiterung für StateFlowundFlowvoncollectAsStateWithLifecycle()hinzugefügt, die Daten aus Abläufen erfasst und den aktuellen Wert auf lebenszyklusbewusste Weise als Compose-Status darstellt.
- Die Methoden Lifecycle.launchWhenXundLifecycle.whenXwurden eingestellt, da die Verwendung eines pausierenden Dispatchers in einigen Fällen zu verschwendeten Ressourcen führen kann. Es wird empfohlen,Lifecycle.repeatOnLifecyclezu 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 Null-Zulässigkeit der Methode onChangedeines in Kotlin erstelltenObserverentspricht jetzt der Null-Zulässigkeit des generischen Typs. WennObserver.onChanged()einen Nullable-Typ akzeptieren soll, müssen SieObservermit einem Nullable-Typ instanziieren.
- Diese Klassen wurden ebenfalls in Kotlin konvertiert, sind aber weiterhin quellcodekompatibel: DefaultLifecycleObserver,LifecycleEventObserver,Lifecycle,LifecycleRegistry,LifecycleObserver,ViewModelStore,AndroidViewModel,AbstractSavedStateViewModelFactory,LifecycleService,ServiceLifecycleDispatcherundProcessLifecycleOwner.
Version 2.6.0-rc01
22. Februar 2023
androidx.lifecycle:lifecycle-*:2.6.0-rc01 ist veröffentlicht. Version 2.6.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Die LiveData.distinctUntilChanged()-Erweiterung legt jetzt dievaluedes zurückgegebenenLiveDatafest, wenn für das vorherigeLiveDataein Wert festgelegt wurde. Das ändert nichts am Beobachtungsverhalten. Aktualisierte Werte aus der QuelleLiveDatawerden erst angewendet, wenn Sie die vondistinctUntilChanged()zurückgegebeneLiveDatabeobachten. (Ib482f)
Version 2.6.0-beta01
8. Februar 2023
androidx.lifecycle:lifecycle-*:2.6.0-beta01 ist veröffentlicht. Version 2.6.0-beta01 enthält diese Commits.
Kotlin-Conversions
- LifecycleOwnerwurde jetzt in Kotlin geschrieben. Dies ist eine quelleninkompatible Änderung für in Kotlin geschriebene Klassen. Sie müssen jetzt die- lifecycle-Property überschreiben, anstatt die vorherige- getLifecycle()-Funktion zu implementieren. (I75b4b, b/240298691)
- ViewModelStoreOwnerist jetzt in Kotlin. Dies ist eine quelleninkompatible Änderung für in Kotlin geschriebene Klassen. Sie müssen jetzt die- viewModelStore-Property überschreiben, anstatt die vorherige- getViewModelStore()-Funktion zu implementieren. (I86409, b/240298691)
- Die Kotlin-Erweiterung für LifecycleOwner, die das FeldlifecycleScopebereitstellt, wurde vom Artefaktlifecycle-runtime-ktxzum Artefaktlifecycle-commonverschoben. (I41d78, b/240298691)
- Die Kotlin-Erweiterung für Lifecycle, die das FeldcoroutineScopebereitstellt, wurde vom Artefaktlifecycle-runtime-ktxzum Artefaktlifecycle-commonverschoben. (Iabb91, b/240298691)
Version 2.6.0-alpha05
25. Januar 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha05 ist veröffentlicht. Version 2.6.0-alpha05 enthält diese Commits.
Kotlin-Conversions
- Transformationswurde jetzt in Kotlin geschrieben. Dies ist eine quellinkompatible Änderung für Klassen, die in Kotlin geschrieben wurden und in denen Syntax wie- Transformations.mapdirekt verwendet wurde. Kotlin-Code muss jetzt die Kotlin-Erweiterungsmethodensyntax verwenden, die zuvor nur bei Verwendung von- lifecycle-livedata-ktxverfügbar war. Wenn Sie die Programmiersprache Java verwenden, sind die Versionen dieser Methoden, die eine- androidx.arch.core.util.Function-Methode verwenden, eingestellt und werden durch die Versionen ersetzt, die eine Kotlin-- Function1verwenden. Diese Änderung beeinträchtigt die binäre Kompatibilität nicht. (I8e14f)
- ViewTreeViewModelStoreOwnerwurde jetzt in Kotlin geschrieben. Dies ist eine quelleninkompatible Änderung für Klassen, die in Kotlin geschrieben wurden. Sie müssen jetzt die Kotlin-Erweiterungsmethoden für- Viewvon- androidx.lifecycle.setViewTreeViewModelStoreOwnerund- androidx.lifecycle.findViewTreeViewModelStoreOwnerdirekt 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 HasDefaultViewModelProviderFactory-Schnittstelle ist jetzt in Kotlin geschrieben. Dies ist eine quelleninkompatible Änderung für in Kotlin geschriebene Klassen. Sie müssen jetzt die AttributedefaultViewModelProviderFactoryunddefaultViewModelCreationExtrasüberschreiben, anstatt die entsprechenden Funktionen zu implementieren. (Iaed9c, b/240298691)
- Observerwurde jetzt in Kotlin geschrieben. Die Methode- onChanged()verwendet jetzt den Namen- valuefür ihren Parameter. (Iffef2, I4995e, b/240298691)
- AndroidViewModel,- AbstractSavedStateViewModelFactory,- LifecycleService,- ServiceLifecycleDispatcherund- ProcessLifecycleOwnersind 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 ist veröffentlicht. Version 2.6.0-alpha04 enthält diese Commits.
Neue Funktionen
- LiveDataenthält jetzt die neue Eigenschaft- isInitialized, die angibt, ob jemals ein expliziter Wert für- LiveDatafestgelegt wurde. So können Sie unterscheiden, ob- liveData.value- nullzurückgibt, weil noch nie ein Wert festgelegt wurde, oder ob ein expliziter- null-Wert zurückgegeben wird. (Ibd018)
API-Änderungen
- Die collectAsStateWithLifecycle()-APIs vonlifecycle-runtime-composehaben nicht mehr den Status „Experimentell“. (I09d42, b/258835424)
- Die Methoden Lifecycle.launchWhenXundLifecycle.whenXwurden eingestellt, da die Verwendung eines pausierenden Dispatchers in einigen Fällen zu verschwendeten Ressourcen führen kann. Es wird empfohlen,Lifecycle.repeatOnLifecyclezu verwenden. (Iafc54, b/248302832)
Kotlin-Conversions
- ViewTreeLifecycleOwnerwurde jetzt in Kotlin geschrieben. Dies ist eine quelleninkompatible Änderung für Klassen, die in Kotlin geschrieben wurden. Sie müssen jetzt die Kotlin-Erweiterungsmethoden für- Viewvon- androidx.lifecycle.setViewTreeLifecycleOwnerund- androidx.lifecycle.findViewTreeLifecycleOwnerdirekt importieren und verwenden, um einen zuvor festgelegten Inhaber festzulegen und zu finden. Dadurch wird die vorherige Kotlin-Erweiterung in- lifecycle-runtime-ktxersetzt. Dies ist binärkompatibel und bleibt für Implementierungen, die in der Programmiersprache Java geschrieben wurden, quellkompatibel. (I8a77a, I5234e, b/240298691)
- LiveDataReactiveStreamswurde jetzt in Kotlin geschrieben. Die Kotlin-Erweiterungen, die sich zuvor in- lifecycle-reactivestreams-ktxbefanden, wurden in das- lifecycle-reactivestreams-Modul verschoben und sind die primäre Oberfläche für in Kotlin geschriebenen Code. Dies ist eine quelleninkompatible Ä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,- LifecycleObserverund- ViewModelStoresind jetzt in Kotlin geschrieben (Iadffd, I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691).
Fehlerkorrekturen
- SavedStateHandlestürzt nicht mehr mit einem- ClassCastExceptionab, wenn- get()mit dem falschen Klassentyp aufgerufen wird. (I6ae7c)
Version 2.6.0-alpha03
24. Oktober 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha03 ist 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 ist veröffentlicht. Version 2.6.0-alpha02 enthält diese Commits.
API-Änderungen
- MediatorLiveDataenthä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/242871265
- FlowLiveData.asFlow()erstellt jetzt ein- callbackFlow, anstatt die eigene- Channel-Implementierung zu verwenden, um Thread-Sicherheit und Kontextbeibehaltung zu gewährleisten. (I4a8b2, b/200596935)
- Die asLiveData-Funktion vonFlowLiveDatabehält jetzt den ursprünglichen Wert einesStateFlowbei, wenn das neueLiveData-Objekt erstellt wird. (I3f530, b/157380488)
- Lifecycle 2.5.1: Bei benutzerdefinierten Implementierungen vonAndroidViewModelFactorywird jetzt die Funktioncreate(modelClass)korrekt aufgerufen, wenn der zustandsbehaftete Konstruktor mitLifecycle2.4 oder höher verwendet wird (I5b315, b/238011621).
Version 2.6.0-alpha01
29. Juni 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha01 ist veröffentlicht. Version 2.6.0-alpha01 enthält diese Commits.
Neue Funktionen
- Es wurde eine neue Erweiterung für StateFlowundFlowvoncollectAsStateWithLifecyclehinzugefü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.Stateist. Wenn der Lebenszyklus unter diesenLifecycle.Statefä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 ist veröffentlicht. Version 2.5.1 enthält diese Commits.
Fehlerkorrekturen
- Bei benutzerdefinierten Implementierungen von AndroidViewModelFactorywird jetzt die Funktioncreate(modelClass)korrekt aufgerufen, wenn der zustandsbehaftete KonstruktorAndroidViewModelFactorymitLifecycle2.4+ verwendet wird. (I5b315, b/238011621)
Version 2.5.0
29. Juni 2022
androidx.lifecycle:lifecycle-*:2.5.0 ist veröffentlicht. Version 2.5.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.4.0
- SavedStateHandlebietet jetzt eine- getStateFlow()API, die eine Kotlin-- StateFlowfür die Überwachung von Wertänderungen zurückgibt. Das ist eine Alternative zur Verwendung von- LiveData.
- ViewModel CreationExtras: Wenn Sie eine benutzerdefinierte - ViewModelProvider.Factoryschreiben, müssen Sie nicht mehr- AndroidViewModelFactoryoder- AbstractSavedStateViewModelFactoryerweitern, um Zugriff auf eine- Applicationbzw.- SavedStateHandlezu erhalten. Stattdessen werden diese Felder jeder- ViewModelProvider.Factory-Unterklasse als- CreationExtrasüber die neue Überladung von- createbereitgestellt:- create(Class<T>, CreationExtras). Diese Extras werden automatisch von Ihrer Aktivität oder Ihrem Fragment bereitgestellt, wenn Sie Activity- 1.5.0bzw. Fragment- 1.5.0verwenden.- 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-viewmodelbietet jetzt eine- viewModelFactoryKotlin DSL, mit der Sie Ihre- ViewModelProvider.Factoryin Form von einem oder mehreren Lambda-Initialisierern definieren können. Dabei wird für jede- ViewModel-Klasse, die von Ihrer benutzerdefinierten Factory unterstützt wird, ein Lambda-Initialisierer verwendet und- CreationExtrasals 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-composebietet jetzt eine- viewModel()API, die eine Lambda-Factory zum Erstellen einer- ViewModel-Instanz verwendet, ohne dass eine benutzerdefinierte- ViewModelProvider.Factoryerstellt 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 in- SavedStateHandle.saveable, die- rememberSaveable-ähnliches Verhalten ermöglichen, das durch- SavedStateHandleeines `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 der- ViewModelein oder mehrere- Closeable-Objekte hinzufügen können, die geschlossen werden, wenn die- ViewModelgelöscht wird. Dazu ist keine manuelle Arbeit in- onCleared()erforderlich.- Wenn Sie beispielsweise einen Coroutine-Scope erstellen möchten, den Sie in ein ViewModel einfügen, aber über Tests steuern können, können Sie eine - CoroutineScopeerstellen, die- Closeableimplementiert:- 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 - ViewModelverwendet werden, wobei die Lebensdauer von- viewModelScopebeibehalten 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.StatevonINITIALIZEDnachDESTROYEDzu verschieben, wird jetzt immer eineIllegalStateExceptionausgelöst, unabhängig davon, ob derLifecycleein angehängtes Observer-Objekt hat.
- LifecycleRegistrylöscht jetzt die Beobachter, wenn der Status- DESTROYEDerreicht wird.
Version 2.5.0-rc02
15. Juni 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc02 ist veröffentlicht. Version 2.5.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- ViewModelProviderstü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 ist veröffentlicht. Version 2.5.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Bei MediatorLiveData.addSource()wird jetzt eineNullPointerExceptionausgegeben, 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 ist 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 in- SavedStateHandlezu verwenden (I8bb86, b/225014345)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem das Einbetten eines NavHostin ein anderesNavHostauf einem nicht primären Tab der unteren Navigation bei Verwendung mehrerer Backstacks zu einemIllegalStateExceptionführte. (I11bd5, b/228865698)
Version 2.5.0-alpha06
6. April 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha06 ist veröffentlicht. Version 2.5.0-alpha06 enthält diese Commits.
Neue Funktionen
- Experimentelle MutableState-Überladung zuSavedStateHandle.saveablehinzufügen, um Parität mitrememberSaveablezu erreichen (I38cfe, b/224565154)
API-Änderungen
- CreationExtrasist jetzt abstrakt statt versiegelt. (Ib8a7a)
Fehlerkorrekturen
- Ein IllegalStateException: Already attached to lifecycleOwner-Fehler, der durchSavedStateHandleControllerverursacht wurde, wurde behoben. (I7ea47, b/215406268)
Version 2.5.0-alpha05
23. März 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha05 ist veröffentlicht. Version 2.5.0-alpha05 enthält diese Commits.
Neue Funktionen
- Das Modul lifecycle-viewmodel-composebietet jetztSavedStateHandleSaver, eine experimentelle API, die dafür sorgt, dass Werte in einemSavedStateHandlekorrekt in denselben gespeicherten Instanzstatus integriert werden, denrememberSaveableverwendet. (Ia88b7, b/195689777)
API-Änderungen
- Ein Kompatibilitätsproblem mit Lifecycle 2.3 und neueren Lifecycle-Versionen in Java wurde behoben. (I52c8a, b/219545060)
Fehlerkorrekturen
- SavedStateViewFactoryunterstützt jetzt die Verwendung von- CreationExtras, auch wenn es mit einem- SavedStateRegistryOwnerinitialisiert 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 ist veröffentlicht. Version 2.5.0-alpha04 enthält diese Commits.
API-Änderungen
- SavedStateHandlebietet jetzt eine- getStateFlow()API, die eine Kotlin-- StateFlowfür die Überwachung von Wertänderungen als Alternative zur Verwendung von- LiveDatazurückgibt. (Iad3ab, b/178037961)
Version 2.5.0-alpha03
23. Februar 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha03 ist 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 derViewModelein oder mehrereCloseable-Objekte hinzufügen können, die geschlossen werden, wenn dieViewModelgelöscht wird. Dies ist ohne manuellen Aufwand inonCleared()möglich. (I55ea0)
- lifecycle-viewmodelbietet jetzt eine- InitializerViewModelFactory, mit der Sie Lambda zum Verarbeiten bestimmter- ViewModel-Klassen hinzufügen können. Dabei wird- CreationExtrasals primäre Datenquelle verwendet. (If58fc, b/216687549)
- lifecycle-viewmodel-composebietet jetzt eine- viewModel()API, die eine Lambda-Factory zum Erstellen einer- ViewModel-Instanz verwendet, ohne dass eine benutzerdefinierte- ViewModelProvider.Factoryerstellt werden muss. (I97fbb, b/216688927)
API-Änderungen
- Sie können jetzt ein ViewModelmitCreationExtrasüberlifecycle-viewmodel-composeerstellen. (I08887, b/216688927)
Geändertes Verhalten
- Wenn Sie versuchen, die Lifecycle.StatevonINITIALIZEDnachDESTROYEDzu verschieben, wird jetzt immer eineIllegalStateExceptionausgelöst, unabhängig davon, ob derLifecycleein angehängtes Observer-Objekt hat. (I7c390, b/177924329)
- LifecycleRegistrylöschen jetzt ihre Beobachter, wenn sie den Status- DESTROYEDerreichen. (I4f8dd, b/142925860)
Version 2.5.0-alpha02
9. Februar 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha02 ist veröffentlicht. Version 2.5.0-alpha02 enthält diese Commits.
API-Änderungen
- SavedStateHandleund- SavedStateViewModelFactorywurden in Kotlin konvertiert. Dadurch wurde die Nullable-Eigenschaft der Generics in beiden Klassen verbessert. (Ib6ce2, b/216168263, I9647a, b/177667711)
- Der Funktionsparameter LiveDataswitchMapkann jetzt eine Nullable-Ausgabe haben. (I40396, b/132923666)
- Die LiveData-ktx-Erweiterungen sind jetzt mit@CheckResultannotiert, um zu erzwingen, dass das Ergebnis beim Aufrufen dieser Funktionen verwendet wird. (Ia0f05, b/207325134)
Geändertes Verhalten
- In SavedStateHandlewird 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-processwurde aktualisiert, um von Startup 1.1.1 abhängig zu sein. So sind Korrekturen, die verhindern, dassProcessLifecycleInitializereineStartupExceptionauslöst, standardmäßig verfügbar. (Ib01df, b/216490724)
- Es gibt jetzt eine verbesserte Fehlermeldung, wenn benutzerdefinierte AndroidViewModel-Klassen Parameter in der falschen Reihenfolge haben und versucht wird, eineViewModelzu erstellen. (I340f7, b/177667711)
- Sie können jetzt ein Ansichtsmodell über CreationExtrasmitAndroidViewModelFactoryerstellen, ohne eine Anwendung festzulegen. (I6ebef, b/217271656)
Version 2.5.0-alpha01
26. Januar 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha01 ist 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, CreationExtras, basieren. (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 Überladungsvorgang 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: Dieser- Stringbietet Zugriff auf den benutzerdefinierten Schlüssel, den Sie an- ViewModelProvider.get()übergeben haben.
- ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEYbietet Zugriff auf die Klasse- Application.
- SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEYbietet Zugriff auf die- SavedStateRegistryOwner, die zum Erstellen dieses ViewModels verwendet wird.
- SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEYbietet Zugriff auf die- ViewModelStoreOwner, die zum Erstellen dieses ViewModels verwendet wird.
- SavedStateHandleSupport.DEFAULT_ARGS_KEYbietet Zugriff auf die- Bundlevon Argumenten, die zum Erstellen eines- SavedStateHandleverwendet 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 in Zukunft 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 SavedStateHandleangegeben wurde, nach dem Beenden und Neuerstellen des Prozesses wieder angezeigt wurde, auch wenn er speziell aus demSavedStateHandleentfernt wurde. Daher werden inSavedStateHandlekeine 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 ist 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 einSavedStateHandleangegebene Standardwert nach dem Beenden und erneuten Erstellen des Prozesses wieder angezeigt wurde, auch wenn er speziell aus demSavedStateHandleentfernt wurde. Daher werden inSavedStateHandlekeine Standardwerte und wiederhergestellten Werte mehr zusammengeführt. Stattdessen werden nur die wiederhergestellten Werte als Quelle der Wahrheit verwendet. (I53a4b)
- lifecycle-processhängt jetzt von Androidx Startup 1.1.1 ab. Damit wurde ein Regressionsfehler behoben, bei dem die Verwendung von- ProcessLifecycleInitializereinen- StartupExceptionverursachte. (b/216490724)
Version 2.4.0
27. Oktober 2021
androidx.lifecycle:lifecycle-*:2.4.0 ist veröffentlicht. Version 2.4.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.3.0
- @OnLifecycleEventwurde eingestellt. Verwenden Sie stattdessen- LifecycleEventObserveroder- DefaultLifecycleObserver.
- Die androidx.lifecycle:lifecycle-viewmodel-compose-Mediathek wurde hinzugefügt. Es bietetviewModel()-Composable undLocalViewModelStoreOwner.- Quellcode-gefährdende Änderung: ViewModelProviderwurde in Kotlin neu geschrieben. Die MethodeViewModelProvider.Factory.createlässt keine Nullable-Generics mehr zu.
 
- Quellcode-gefährdende Änderung: 
- androidx.lifecycle:lifecycle-runtime-ktxwurden 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. Die Sperre wird aufgehoben und neu gestartet, wenn der Lebenszyklus in den Zielstatus wechselt und wieder daraus entfernt wird.
- Flow.flowWithLifecycle: API, die Werte aus dem Upstream-Flow ausgibt, wenn sich der Lebenszyklus mindestens in einem bestimmten Zustand befindet.
- DefaultLifecycleObserverwurde von- lifecycle.lifecycle-common-java8nach- lifecycle.lifecycle-commonverschoben.- lifecycle.lifecycle-common-java8bietet keine zusätzlichen Funktionen mehr, die über- lifecycle.lifecycle-commonhinausgehen. Die Abhängigkeit davon kann also durch- lifecycle.lifecycle-commonersetzt werden.
- Nicht-Coroutine-APIs aus lifecycle-viewmodel-ktxwurden in das Modullifecycle-viewmodelverschoben.
- lifecycle-processverwendet jetzt- androidx.startup, um die- ProcessLifecycleOwnerzu initialisieren.- Bisher wurde dies von - androidx.lifecycle.ProcessLifecycleOwnerInitializererledigt.- 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 ist veröffentlicht. Version 2.4.0-beta01 enthält diese Commits.
API-Änderungen
- @OnLifecycleEventwurde eingestellt. Verwenden Sie stattdessen- LifecycleEventObserveroder- DefaultLifecycleObserver. (I5a8fa)
- „DefaultLifecycleObserver“ wurde von androidx.lifecycle.lifecycle-common-java8nachandroidx.lifecycle.lifecycle-commonverschoben.androidx.lifecycle.lifecycle-common-java8bietet keine zusätzlichen Funktionen mehr, die überandroidx.lifecycle.lifecycle-commonhinausgehen. Die Abhängigkeit davon kann also durchandroidx.lifecycle.lifecycle-commonersetzt werden. (I021aa)
- Nicht-Coroutine-APIs aus lifecycle-viewmodel-ktxwurden in das Modullifecycle-viewmodelverschoben. (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 ist veröffentlicht. Version 2.4.0-alpha03 enthält diese Commits.
API-Änderungen
- Quellcode-inkompatible Änderung: ViewModelProvider wurde in Kotlin neu geschrieben.
  Die Methode ViewModelProvider.Factory.createlässt keine generischen Typen zu, die Nullwerte zulassen. (I9b9f6)
Geändertes Verhalten
- Der Lifecycle.repeatOnLifecycle:blockwird 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 ist veröffentlicht. Version 2.4.0-alpha02 enthält diese Commits.
Neue Funktionen
- Der Lint-Prüfung lifecycle-runtime-ktxwurde eine neueRepeatOnLifecycleWrongUsage-Prüfung hinzugefügt, die erkennt, wennrepeateOnLifecyclefälschlicherweise inonStart()oderonResume()verwendet wird. (706078, b/187887400)
API-Änderungen
- Die LifecycleOwner.addRepeatingJobAPI wurde zugunsten vonLifecycle.repeatOnLifecycleentfernt, da diese API strukturierte Nebenläufigkeit unterstützt und einfacher zu verstehen ist. (I4a3a8)
- Machen Sie ProcessLifecycleInitializeröffentlich, damit andereandroidx.startup.Initializers sie als Abhängigkeiten verwenden können. (I94c31)
Fehlerkorrekturen
- Ein Problem mit der NullSafeMutableLiveData-Lint-Prüfung 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 des NullSafeMutableLiveData-Lint-Checks. (#161, b/184830263)
Version 2.4.0-alpha01
24. März 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha01 ist veröffentlicht. Version 2.4.0-alpha01 enthält diese Commits.
Geändertes Verhalten
- lifecycle-processverwendet jetzt- androidx.startup, um die- ProcessLifecycleOwnerzu initialisieren.- Bisher wurde dies von - androidx.lifecycle.ProcessLifecycleOwnerInitializererledigt.- 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.flowWithLifecycleAPI wurde hinzugefügt, die Werte aus dem Upstream-Flow ausgibt, wenn sich der Lebenszyklus mit derLifecycle.repeatOnLifecycleAPI mindestens in einem bestimmten Zustand befindet. Dies ist eine Alternative zur ebenfalls neuenLifecycleOwner.addRepeatinJobAPI. (I0f4cd)
Fehlerkorrekturen
- Ab Lifecycle 2.3.1: Die Lint-Regel NonNullableMutableLiveDatakann 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 ist veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.
Breaking API Changes
- viewModel()akzeptiert jetzt ein optionales- ViewModelStoreOwner, was die Zusammenarbeit mit anderen Inhabern als dem- LocalViewModelStoreOwnererleichtert. Sie können jetzt beispielsweise- viewModel(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 ist 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 ist veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.
Neue Funktionen
- Aktualisiert, um mit Compose-Version 1.0.0-beta07kompatibel 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 ist veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.
Änderungen an Abhängigkeiten
- In dieser Version können androidx.hilt:hilt-navigation-composeundandroidx.navigation:navigation-composeAbhängigkeiten aufandroidx.compose.compiler:compiler:1.0.0-beta04undandroidx.compose.runtime:runtime:1.0.0-beta04synchronisieren. 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 ist veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.
API-Änderungen
- LocalViewModelStoreOwner.currentgibt jetzt eine nullable- ViewModelStoreOwnerzurück, um besser zu bestimmen, ob eine- ViewModelStoreOwnerin der aktuellen Komposition verfügbar ist. Für APIs, für die ein- ViewModelStoreOwnererforderlich ist, z. B.- viewModel()und- NavHost, wird weiterhin eine Ausnahme ausgelöst, wenn kein- ViewModelStoreOwnerfestgelegt ist. (Idf39a)
Lifecycle-Viewmodel-Compose Version 1.0.0-alpha02
24. Februar 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02 ist veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.
API-Änderungen
- LocalViewModelStoreOwnerhat jetzt- provides-Funktionen, die mit- CompositionLocalProviderverwendet werden können und die- asProvidableCompositionLocal()API ersetzen. (I45d24)
Lifecycle-Viewmodel-Compose Version 1.0.0-alpha01
10. Februar 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 ist veröffentlicht. Version 1.0.0-alpha01 enthält diese Commits.
Neue Funktionen
- Die zusammensetzbare Funktion viewModel()undLocalViewModelStoreOwnerwurden vonandroidx.compose.ui.viewinteropin 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 ist veröffentlicht. Version 2.3.1 enthält diese Commits.
Fehlerkorrekturen
- Die Lint-Regel NonNullableMutableLiveDatakann 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 ist 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:- SavedStateHandleunterstützt jetzt die Lazy-Serialisierung. Sie können- setSavedStateProvider()für einen bestimmten Schlüssel aufrufen und so ein- SavedStateProviderbereitstellen, das einen Callback zu- saveState()erhält, wenn- SavedStateHandleaufgefordert wird, seinen Status zu speichern. Weitere Informationen finden Sie unter Nicht serialisierbare Klassen speichern.
- Durchsetzung des Lebenszyklusverhaltens:
- In LifecycleRegistry wird jetzt DESTROYEDals Endstatus erzwungen.
- LifecycleRegistryprü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 Laufzeitabstürzen. Bei- LifecycleRegistry-Objekten, die zu Ihren eigenen Komponenten gehören, können Sie die Prüfungen explizit deaktivieren, indem Sie- LifecycleRegistry.createUnsafe(...)verwenden. Sie müssen dann jedoch dafür sorgen, dass eine ordnungsgemäße Synchronisierung erfolgt, wenn auf dieses- LifecycleRegistryüber verschiedene Threads zugegriffen wird.
 
- In LifecycleRegistry wird jetzt 
- Helfer für Lebenszyklusstatus und Ereignisse: Der Klasse Lifecycle.Eventwurden statische Hilfsmethoden fürdownFrom(State),downTo(State),upFrom(State)undupTo(State)hinzugefügt, um dieEventanhand einerStateund der Übergangsrichtung zu generieren. Die MethodegetTargetState()wurde hinzugefügt, die denStatebereitstellt, zu dem der Lebenszyklus direkt nach demEventübergeht.
- withStateAtLeast: 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 vorhandenen- when*-Methoden, da sie das Ausführen von unterbrechendem Code nicht zulassen und keinen benutzerdefinierten Dispatcher verwenden. (aosp/1326081)
- ViewTree-APIs: Mit einer neuen- ViewTreeLifecycleOwner.get(View)- und- ViewTreeViewModelStoreOwner.get(View)-API können Sie die enthaltenden- LifecycleOwnerbzw.- ViewModelStoreOwnerfür eine- View-Instanz abrufen. Sie müssen auf Activity- 1.2.0und Fragment- 1.3.0sowie AppCompat 1.3.0-alpha01 oder höher aktualisieren, damit die Daten korrekt ausgegeben werden. Die Kotlin-Erweiterungen- findViewTreeLifecycleOwnerund- findViewTreeViewModelStoreOwnersind in- lifecycle-runtime-ktxbzw.- lifecycle-viewmodel-ktxverfügbar.
- LiveData.observe()-Kotlin-Erweiterung wird eingestellt: Die- LiveData.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 ist veröffentlicht. Version 2.3.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Die Methode keys()vonSavedStateHandleist 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 ist 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 ist 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 ist 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.Eventhinzugefügt, um dasEventanhand einesStateund einer Übergangsrichtung zu generieren. Die MethodegetTargetState()wurde hinzugefügt, die denStatebereitstellt, 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
- In LifecycleRegistry wird jetzt DESTROYEDals Endstatus erzwungen. (I00887)
- LifecycleRegistryprü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 Laufzeitabstürzen. Bei- LifecycleRegistry-Objekten, die zu Ihren eigenen Komponenten gehören, können Sie die Prüfungen explizit deaktivieren, indem Sie- LifecycleRegistry.createUnsafe(...)verwenden. Sie müssen dann jedoch dafür sorgen, dass eine ordnungsgemäße Synchronisierung erfolgt, wenn von verschiedenen Threads auf dieses- LifecycleRegistryzugegriffen wird (Ie7280, b/137392809).
Fehlerkorrekturen
- Ein Fehler wurde behoben, der zum Absturz von NullSafeMutableLiveDataführte. (b/159987480)
- Ein ObsoleteLintCustomCheckfü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 ist veröffentlicht. Version 2.3.0-alpha05 enthält diese Commits.
Fehlerkorrekturen
- LiveDataverarbeitet jetzt Reentrant-Fälle besser und vermeidet doppelte Aufrufe von- onActive()oder- onInactive(). (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 ist 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 einMutableLiveDatamit 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
- SavedStateHandleunterstützt jetzt die Lazy-Serialisierung. Sie können- setSavedStateProvider()für einen bestimmten Schlüssel aufrufen und so ein- SavedStateProviderbereitstellen, das einen Callback zu- saveState()erhält, wenn- SavedStateHandleaufgefordert wird, seinen Status zu speichern. (b/155106862)
- Mit einer neuen ViewTreeViewModelStoreOwner.get(View)-API können Sie das enthaltendeViewModelStoreOwnerfür eineView-Instanz abrufen. Sie müssen auf Activity1.2.0-alpha05, Fragment1.3.0-alpha05und AppCompat1.3.0-alpha01aktualisieren, 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-alpha01verö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 ist veröffentlicht. Version 2.3.0-alpha02 enthält diese Commits.
API-Änderungen
- Mit SavedStateViewModelFactorykönnen Sie jetzt ein Null-Applicationan den Konstruktor übergeben, um Fälle besser zu unterstützen, in denen keinApplicationverfügbar ist und keine Unterstützung fürAndroidViewModelerforderlich 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 ist veröffentlicht. Version 2.3.0-alpha01 enthält diese Commits.
Neue Funktionen
- Mit einer neuen ViewTreeLifecycleOwner.get(View)-API können Sie das enthaltendeLifecycleOwnerfür eineView-Instanz abrufen. Sie müssen ein Upgrade auf Activity1.2.0-alpha01und Fragment1.3.0-alpha01durchführen, damit diese Daten richtig erfasst werden. EinefindViewTreeLifecycleOwner-Kotlin-Erweiterung ist inlifecycle-runtime-ktxverfügbar. (aosp/1182361, aosp/1182956)
- Es wurde eine neue Lint-Prüfung hinzugefügt, die Sie warnt, wenn Sie einen null-Wert für einMutableLiveDatafestlegen, das in Kotlin als „nicht null“ definiert wurde. Diese Option ist verfügbar, wenn Sie dielivedata-core-ktx- oderlivedata-ktx-Artefakte verwenden. (aosp/1154723, aosp/1159092)
- Es ist ein neues lifecycle-runtime-testing-Artefakt verfügbar, das eineTestLifecycleOwnerbereitstellt, dieLifecycleOwnerimplementiert und eine threadsichere mutableLifecyclebietet. (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 ist 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 ist 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-ktxwurde ebenfalls erweitert, um 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 einFragmentoderFragmentActivityan den neuenViewModelProvider(ViewModelStoreOwner)-Konstruktor übergeben, um dieselbe Funktionalität zu erzielen, wenn Sie Fragment1.2.0verwenden.
- lifecycle-extensions-Artefakt wird eingestellt: Mit der oben genannten Einstellung von- ViewModelProviders.of()wird in diesem Release die letzte API in- lifecycle-extensionseingestellt. Dieses Artefakt sollte jetzt als vollständig eingestellt betrachtet werden. Wir empfehlen dringend, je nach den benötigten Lifecycle-Artefakten- lifecycle-service(wenn Sie- LifecycleServiceverwenden) und- lifecycle-process(wenn Sie- ProcessLifecycleOwnerverwenden) anstelle von- lifecycle-extensionszu verwenden, da es keine zukünftige- 2.3.0-Version von- lifecycle-extensionsgeben 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 DefautLifecycleObserververwenden. Wenn sie in der Programmiersprache Java 7 geschrieben ist, können SieLifecycleEventObserververwenden.
Version 2.2.0-rc03
4. Dezember 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc03 ist veröffentlicht.  Version 2.2.0-rc03 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, der auftrat, wenn ein simuliertes ViewModelinViewModelStoregespeichert und später mit der Standardfactory abgefragt wurde.
- Die Verwendung von Dispatchers.Main.immediateinlaunchWhenCreatedund ä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-rc03ab.
Version 2.2.0-rc02
7. November 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc02 ist 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 die Ziel-API unter 29 lag. (b/142778206)
Version 2.2.0-rc01
23. Oktober 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc01 ist veröffentlicht.  Version 2.2.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem launchWhenCreatedund zugehörige Methoden aufgrund der Verwendung vonDispatchers.Mainanstelle vonDispatchers.Main.immediateeinen Frame später als die zugehörige Lebenszyklusmethode 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 ist 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 ProcessLifecycleOwnerundLifecycleOwnerder Aktivität betrifft, die auf Android 10-Geräten in den Status „gestartet“ und „fortgesetzt“ wechselt. (aosp/1128132)
- Ein in Lifecycle 2.2.0-alpha05eingeführter Fehler wurde behoben, der bei Verwendung der Versionen2.0.0oder2.1.0vonlifecycle-processzu einemNullPointerExceptionführte. (b/141536990)
Version 2.2.0-alpha05
18. September 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha05 ist 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 ist veröffentlicht.  Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- lifecycleScope,- whenCreated,- whenStarted,- whenResumed,- viewModelScopeund die zugrunde liegende Implementierung von- liveDataverwenden jetzt- Dispatchers.Main.immediateanstelle von- Dispatchers.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 ist veröffentlicht.  Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Implementierungen von ViewModelStoreOwnerkönnen jetzt optionalHasDefaultViewModelProviderFactoryimplementieren, um einen Standard-ViewModelProvider.Factorybereitzustellen. Dies wurde für Aktivität1.1.0-alpha02, Fragment1.2.0-alpha02und Navigation2.2.0-alpha01durchgeführt. (aosp/1092370, b/135716331)
API-Änderungen
- ViewModelProviders.of()wurde eingestellt. Sie können ein- Fragment- oder- FragmentActivity-Objekt an den neuen- ViewModelProvider(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 ist veröffentlicht.  Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
- LiveDataScope.initialValuewurde durch- LiveDataScope.latestValueersetzt, um den aktuellen ausgegebenen Wert des Blocks- liveDatazu erfassen.
- Dem liveData-Builder wurde eine neue Überladung hinzugefügt, die dentimeout-Parameter als TypDurationempfängt.
Version 2.2.0-alpha01
7. Mai 2019
androidx.lifecycle:*:2.2.0-alpha01 ist 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 ist 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 KlasseViewModelempfangen werden. Die von Fragmenten und AppCompatActivity standardmäßig bereitgestellten Factorys fügenSavedStateHandleautomatisch ein.
- AbstractSavedStateViewModelFactory wurde hinzugefügt. Damit können Sie benutzerdefinierte Factorys für Ihre ViewModelerstellen und ihnen Zugriff aufSavedStateHandlegewähren.
ViewModel-Savedstate Version 1.0.0-rc03
4. Dezember 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03 ist 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-rc03ab.
Viewmodel-Savedstate Version 1.0.0-rc02
7. November 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02 ist veröffentlicht.  Version 1.0.0-rc02 enthält diese Commits.
Änderungen an Abhängigkeiten
- Hängt jetzt vom Lebenszyklus 2.2.0-rc02ab.
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 ist 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()einIllegalStateExceptionauftrat. (b/139093676)
- Ein IllegalStateExceptionbei der Verwendung vonAbstractSavedStateViewModelFactorywurde behoben. (b/141225984)
ViewModel-SavedState Version 1.0.0-alpha05
18. September 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05 ist veröffentlicht.  Version 1.0.0-alpha05 enthält diese Commits.
API-Änderungen
- SavedStateViewModelFactorywird nicht mehr von- AbstractSavedStateViewModelFactoryabgeleitet und- SavedStateHandlewird 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 ist veröffentlicht.  Die in dieser Version enthaltenen Commits finden Sie hier.
Aktuelle Änderungen
- lifecycle-viewmodel-savedstateist nicht mehr von- fragmentabhängig und die zugehörigen Konstruktoren- SavedStateViewModelFactory(Fragment)und- SavedStateViewModelFactory(FragmentActivity)wurden entfernt. Stattdessen ist- SavedStateViewModelFactoryjetzt die Standard-Factory für Activity- 1.1.0-alpha02, Fragment- 1.2.0-alpha02und Navigation- 2.2.0-alpha01. (b/135716331)
ViewModel-SavedState Version 1.0.0-alpha02
2. Juli 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02 ist 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
- SavedStateVMFactorywird in- SavedStateViewModelFactoryumbenannt.
- AbstractSavedStateVMFactorywird in- AbstractSavedStateViewModelFactoryumbenannt.
ViewModel-Savedstate Version 1.0.0-alpha01
13. März 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01 ist veröffentlicht.  Das vollständige Commit-Log für diese erste Version finden Sie hier.
Neue Funktionen
- ViewModelskann jetzt zum gespeicherten Status beitragen. Dazu verwenden Sie die neu eingeführte Factory- SavedStateVMFactorydes ViewModels und Ihr ViewModel sollte einen Konstruktor haben, der das- SavedStateHandle-Objekt als Parameter empfängt.
Version 2.1.0
Wichtige Änderungen seit Version 2.0.0
- LifecycleEventObserverfü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 verborgene- GenericLifecycleObserver-Klasse.
- Es wurden KTX-Erweiterungen für LiveData.observe-Methoden undTransformations.*-Methoden hinzugefügt.
- Transformations.distinctUntilChangedwurde hinzugefügt. Damit wird ein neues LiveData-Objekt erstellt, das erst dann einen Wert ausgibt, wenn sich der Quellwert- LiveDatageändert hat.
- Unterstützung für Coroutinen in ViewModels wurde durch Hinzufügen der Erweiterungseigenschaft ViewModel.viewModelScopehinzugefügt.
Version 2.1.0
5. September 2019
androidx.lifecycle:lifecycle-*:2.1.0 ist 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 ist 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, dieViewModel-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 ist veröffentlicht.  Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
- Grundlegende Änderung: Die zugrunde liegende API hinter by viewModels()undby activityViewModels()wurde geändert, um direktViewModelStoreanstelle von nurViewModelStoreOwnerzu unterstützen. (aosp/932932)
Version 2.1.0-alpha03
13. März 2019
androidx.lifecycle:*:2.1.0-alpha03 ist veröffentlicht.  Eine vollständige Liste der in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
- ViewModelProvider.KeyedFactorywurde entfernt. Die zweite Schnittstelle zusätzlich zu- ViewModelProvider.Factoryließ sich nicht gut mit neuen Funktionen wie der Attributdelegierung in Kotlin- by viewmodels {}kombinieren. (aosp/914133)
Version 2.1.0-alpha02
30. Januar 2019
androidx.lifecycle 2.1.0-alpha02 ist veröffentlicht.
API-Änderungen
- LifecycleRegistryenthält jetzt die Methode- setCurrentState(), die die jetzt verworfene Methode- setState()ersetzt. (aosp/880715)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Mock-ViewModel-Instanzen abgestürzt sind, wenn das enthaltendeViewModelStoregelöscht wurde. b/122273087
Version 2.1.0-alpha01
17. Dezember 2018
androidx.lifecycle 2.1.0-alpha01 ist veröffentlicht.
Neue Funktionen
- LifecycleEventObserverfü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 verborgene- GenericLifecycleObserver-Klasse.
- Es wurden KTX-Erweiterungen für LiveData.observe-Methoden undTransformations.*-Methoden hinzugefügt.
- Die Methode Transformations.distinctUntilChangedwurde 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.viewModelScopewurde hinzugefügt.
- ViewModelProvider.KeyedFactorywurde hinzugefügt, eine Factory für ViewModels, die- keyund- Classin der Methode- createempfä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 „ViewModel“ 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 LifecycleActivityundLifecycleFragmentwurden jetzt entfernt. Verwenden Sie stattdessenFragmentActivity,AppCompatActivityoderFragment.
- @NonNull-Annotationen wurden- ViewModelProvidersund- ViewModelStoreshinzugefügt
- Der ViewModelProviders-Konstruktor wurde eingestellt. Verwenden Sie stattdessen die statischen Methoden.
- ViewModelProviders.DefaultFactorywurde eingestellt. Verwenden Sie stattdessen- ViewModelProvider.AndroidViewModelFactory.
- Die statische Methode ViewModelProvider.AndroidViewModelFactory.getInstance(Application)wurde hinzugefügt, um eine statischeFactoryabzurufen, die sich für die Erstellung vonViewModel- undAndroidViewModel-Instanzen eignet.
