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 inViewModelStoreNavEntryDecoratorDefaultsumbenannt. (I6d27b, b/444447434)
Fehlerkorrekturen
rememberLifecycleOwnerstürzt nicht mehr ab, wenn der Eigentümer einLifecycle.Event.ON_DESTROY-Ereignis erhält, bevor er zuLifeycle.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ürNavEntryDecoratorbesser widerzuspiegeln. DershouldRemoveViewModelStore-Parameter des Decorators wurde inremoveViewModelStoreOnPopumbenannt, um zu verdeutlichen, dass dieser Callback nur aufgerufen wird, wenn ein Eintrag ausbackStackentfernt 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 Sieparent = nullexplizit festlegen, funktioniert der neue Lebenszyklus unabhängig von einem Host (z. B.Activity,FragmentoderNavBackStackEntry). 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 vonin,+=und+mitCreationExtras.
Unterstützung für KotlinX-Serialisierung
Mit der Unterstützung von KotlinX Serialization, die in SavedState
1.3.0hinzugefügt wurde, haben wirsavedeingeführt, einen Lazy-Property-Delegate, mit dem sich@Serializable-Klassen ganz einfach in einemSavedStateHandlespeichern und automatisch nach dem Beenden und erneuten Erstellen des Prozesses wiederherstellen lassen. Dersaved-Delegate ist lazy und ruft dieinit-Lambda-Funktion erst auf oder speichert erst dann etwas inSavedStateHandle, wenn darauf zugegriffen wird.@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
Kotlin Multiplatform
- Das Modul
lifecycle-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 keineSavedStateProvider.saveState()mehr, bei denen der zurückgegebeneBundleleer 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 zusaved()-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 vonandroidx.compose.runtime.MutableStatehinzugefügt. (Idfc48, b/378895074)
API-Änderungen
- Überladene
SavedStateHandle.saved()-Delegatfunktionen durch Standardparameter ersetzen (Icd1c1) AbstractSavedStateViewModelFactoryist veraltet, da für jedesViewModeleinSavedStateHandleerstellt wird, was unnötigen Overhead verursacht. Verwenden Sie stattdessenViewModelProvider.FactorymitCreationExtras.createSavedStateHandle, umViewModeleffizienter 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- undViewModelStoreOwner-Instanzen, die über die entsprechendenfindViewTree-APIs abgerufen werden, können jetzt über disjunkte übergeordnete Elemente einer Ansicht, z. B. eineViewOverlay, aufgelöst werden. Weitere Informationen zu disjunkten Ansichtseltern finden Sie in den Versionshinweisen von Core oder in der Dokumentation unterViewTree.setViewTreeDisjointParent. (I800f4)
API-Änderungen
- Die Benennung und Paketorganisation müssen konsistenter mit
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 wirsavedeingeführt, einen Lazy-Property-Delegate, mit dem sich@Serializable-Klassen ganz einfach in einemSavedStateHandlespeichern und automatisch nach dem Beenden und erneuten Erstellen des Prozesses wiederherstellen lassen. Dersaved-Delegate ist lazy und ruft dieinit-Lambda-Funktion erst auf oder speichert erst dann etwas inSavedStateHandle, wenn darauf zugegriffen wird. (I47a88, b/376026744)@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
API-Änderungen
- 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 keineSavedStateProvider.saveState()mehr, bei denen der zurückgegebeneBundleleer ist. (I910b5, b/370577987)
Fehlerkorrekturen
Lifecycle.eventFlowwird jetzt korrekt abgeschlossen, wennLifecycleDESTROYEDist (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 vonin,+=und+mitCreationExtras. (Ib4353)CreationExtrasimplementiert jetzt die Methodenequals,hashCodeundtoString. (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 inLiveDatafestgelegt ist (z. B. bei Verwendung vontake(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 voncompileOnly-Lifecycle-Abhängigkeiten mit Versionen ab 2.8 kombiniert werden. Dadurch werden Probleme mit Bibliotheken wie LeakCanary behoben. (I80383, b/341792251)
Version 2.8.1
29. Mai 2024
androidx.lifecycle:lifecycle-*:2.8.1 ist veröffentlicht. Version 2.8.1 enthält diese Commits.
Fehlerkorrekturen
lifecycle-viewmodel-composehat jetzt nur noch eine gemeinsame Abhängigkeit voncompose-runtime. Die gemeinsame Abhängigkeit voncompose-uiwurde entfernt. Das Android-Artefakt behält aus Kompatibilitätsgründen seinecompose-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 zulifecycle-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 undSupervisorJob()einfügen oder den Standardwert mitbackgroundScopeüberschreiben, das inrunTestverfü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 jetztAutoClosableanstelle vonCloseable. Es unterstützt jetzt das Hinzufügen vonAutoCloseable-Objekten mit einemkey, über das sie mitgetCloseable()abgerufen werden können.Das Aufrufen von
LifecycleStartEffectundLifecycleResumeEffectohne Schlüssel führt jetzt zu einem Fehler. Dies entspricht der Konvention derDisposableEffectAPI, die von diesen APIs gespiegelt wird.LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)wurde zugunsten vonLiveData.toPublisher(lifecycleOwner)verworfen.Die
lifecycle-livedata-core-ktx-Kotlin-Erweiterungen wurden in daslifecycle-livedata-core-Modul verschoben.Der
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 inlifecycle-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.NewInstanceFactoryundViewModelProvider.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 denenDispatchers.Mainnicht verfügbar ist, aufEmptyCoroutineContextzurü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 inlifecycle-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-FunktionviewModelFactory) löst jetzt eineIllegalArgumentExceptionaus, wenn bereits eineinitializermit demselbenclazz: 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 undSupervisorJob()einfügen oder den Standardwert mitbackgroundScopeüberschreiben, das inrunTestverfü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.NewInstanceFactoryundViewModelProvider.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 denenDispatchers.Mainnicht verfügbar ist, aufEmptyCoroutineContextzurückgesetzt (z.B. Linux).
Geändertes Verhalten
InitializerViewModelFactory(einschließlich der Builder-FunktionviewModelFactory) löst jetzt eineIllegalArgumentExceptionaus, wenn bereits eineinitializermit demselbenclazz: KClass<VM : ViewModel>hinzugefügt wurde. (Ic3a36)
Fehlerkorrekturen
ViewModel.getCloseableverarbeitet jetzt doppelte Schlüssel: Wenn demkeybereits eineAutoCloseable-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 jetztAutoCloseableanstelle vonCloseable. Das ist eine abwärtskompatible Änderung. (I27f8e, b/214568825)LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)wurde zugunsten vonLiveData.toPublisher(lifecycleOwner)verworfen. (Iabe29, b/262623005)
Externe Beiträge
- Vielen Dank an Ivan Matkov von Jetbrains für seine Unterstützung bei der Umstellung von Lifecycle auf Kotlin Multiplatform. (aosp/2926690, I0c5ac, If445d)
Version 2.8.0-alpha01
24. Januar 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha01 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 FunktionsetCurrentState()zum Anhalten, die dafür sorgt, dass die Statusänderung und alleLifecycleObserver-Callbacks abgeschlossen werden, bevor die Funktion zurückgegeben wird. Anders als beim direkten Festlegen des AttributscurrentStatewird hier nichtrunBlockingverwendet. Daher kann es sicher in einer Coroutine wie der vonrunTestbereitgestellten 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
LifecycleStartEffectundLifecycleResumeEffectverwerfen und erstellen den Effektblock jetzt korrekt neu, wennLifecycleOwnergeä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 dieLifecycle.StatevonTestLifecycleOwnermithilfe des FeldscurrentStateinnerhalb einer Coroutine festgelegt wird. Der Lint-Check schlägt jetzt das Aussetzen vonsetCurrentStatevor, wodurchLifecycle.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 AnhaltensetCurrentState(), damit NutzerTestLifecycleOwnerin einer Coroutine wie einer vonrunTestbereitgestellten 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 überLifecycle.currentStateFlowin Compose beobachtet werden. Dabei wird einStateFlowzurückgegeben, wobeivaluedas aktuelleLifecycle.Stateist. (Ib212d, b/209684871)Lifecycle.Events können jetzt alsFlowmitLifecycle.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 SavedState1.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 EigenschaftisInitialized, die angibt, ob jemals ein expliziter Wert fürLiveDatafestgelegt wurde. So können Sie unterscheiden, obliveData.valuenullzurückgibt, weil noch nie ein Wert festgelegt wurde, oder ob ein expliziternull-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 dielifecycle-Property überschreiben, anstatt die vorherigegetLifecycle()-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 dieviewModelStore-Property überschreiben, anstatt die vorherigegetViewModelStore()-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 wieTransformations.mapdirekt verwendet wurde. Kotlin-Code muss jetzt die Kotlin-Erweiterungsmethodensyntax verwenden, die zuvor nur bei Verwendung vonlifecycle-livedata-ktxverfügbar war. Wenn Sie die Programmiersprache Java verwenden, sind die Versionen dieser Methoden, die eineandroidx.arch.core.util.Function-Methode verwenden, eingestellt und werden durch die Versionen ersetzt, die eine Kotlin-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ürViewvonandroidx.lifecycle.setViewTreeViewModelStoreOwnerundandroidx.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 MethodeonChanged()verwendet jetzt den Namenvaluefür ihren Parameter. (Iffef2, I4995e, b/240298691)AndroidViewModel,AbstractSavedStateViewModelFactory,LifecycleService,ServiceLifecycleDispatcherundProcessLifecycleOwnersind 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 EigenschaftisInitialized, die angibt, ob jemals ein expliziter Wert fürLiveDatafestgelegt wurde. So können Sie unterscheiden, obliveData.valuenullzurückgibt, weil noch nie ein Wert festgelegt wurde, oder ob ein expliziternull-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ürViewvonandroidx.lifecycle.setViewTreeLifecycleOwnerundandroidx.lifecycle.findViewTreeLifecycleOwnerdirekt importieren und verwenden, um einen zuvor festgelegten Inhaber festzulegen und zu finden. Dadurch wird die vorherige Kotlin-Erweiterung inlifecycle-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 inlifecycle-reactivestreams-ktxbefanden, wurden in daslifecycle-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,LifecycleObserverundViewModelStoresind jetzt in Kotlin geschrieben (Iadffd, I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691).
Fehlerkorrekturen
SavedStateHandlestürzt nicht mehr mit einemClassCastExceptionab, wennget()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/242871265FlowLiveData.asFlow()erstellt jetzt eincallbackFlow, anstatt die eigeneChannel-Implementierung zu verwenden, um Thread-Sicherheit und Kontextbeibehaltung zu gewährleisten. (I4a8b2, b/200596935)- Die
asLiveData-Funktion 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 einegetStateFlow()API, die eine Kotlin-StateFlowfür die Überwachung von Wertänderungen zurückgibt. Das ist eine Alternative zur Verwendung vonLiveData.ViewModel CreationExtras: Wenn Sie eine benutzerdefinierte
ViewModelProvider.Factoryschreiben, müssen Sie nicht mehrAndroidViewModelFactoryoderAbstractSavedStateViewModelFactoryerweitern, um Zugriff auf eineApplicationbzw.SavedStateHandlezu erhalten. Stattdessen werden diese Felder jederViewModelProvider.Factory-Unterklasse alsCreationExtrasüber die neue Überladung voncreatebereitgestellt:create(Class<T>, CreationExtras). Diese Extras werden automatisch von Ihrer Aktivität oder Ihrem Fragment bereitgestellt, wenn Sie Activity1.5.0bzw. Fragment1.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 eineviewModelFactoryKotlin DSL, mit der Sie IhreViewModelProvider.Factoryin Form von einem oder mehreren Lambda-Initialisierern definieren können. Dabei wird für jedeViewModel-Klasse, die von Ihrer benutzerdefinierten Factory unterstützt wird, ein Lambda-Initialisierer verwendet undCreationExtrasals 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 eineviewModel()API, die eine Lambda-Factory zum Erstellen einerViewModel-Instanz verwendet, ohne dass eine benutzerdefinierteViewModelProvider.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 inSavedStateHandle.saveable, dierememberSaveable-ähnliches Verhalten ermöglichen, das durchSavedStateHandleeines `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 derViewModelein oder mehrereCloseable-Objekte hinzufügen können, die geschlossen werden, wenn dieViewModelgelöscht wird. Dazu ist keine manuelle Arbeit inonCleared()erforderlich.Wenn Sie beispielsweise einen Coroutine-Scope erstellen möchten, den Sie in ein ViewModel einfügen, aber über Tests steuern können, können Sie eine
CoroutineScopeerstellen, dieCloseableimplementiert: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 vonviewModelScopebeibehalten 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 StatusDESTROYEDerreicht 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 inSavedStateHandlezu 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 vonCreationExtras, auch wenn es mit einemSavedStateRegistryOwnerinitialisiert 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 einegetStateFlow()API, die eine Kotlin-StateFlowfür die Überwachung von Wertänderungen als Alternative zur Verwendung vonLiveDatazurü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 eineInitializerViewModelFactory, mit der Sie Lambda zum Verarbeiten bestimmterViewModel-Klassen hinzufügen können. Dabei wirdCreationExtrasals primäre Datenquelle verwendet. (If58fc, b/216687549)lifecycle-viewmodel-composebietet jetzt eineviewModel()API, die eine Lambda-Factory zum Erstellen einerViewModel-Instanz verwendet, ohne dass eine benutzerdefinierteViewModelProvider.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 StatusDESTROYEDerreichen. (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
SavedStateHandleundSavedStateViewModelFactorywurden 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: DieserStringbietet Zugriff auf den benutzerdefinierten Schlüssel, den Sie anViewModelProvider.get()übergeben haben.ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEYbietet Zugriff auf die KlasseApplication.SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEYbietet Zugriff auf dieSavedStateRegistryOwner, die zum Erstellen dieses ViewModels verwendet wird.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEYbietet Zugriff auf dieViewModelStoreOwner, die zum Erstellen dieses ViewModels verwendet wird.SavedStateHandleSupport.DEFAULT_ARGS_KEYbietet Zugriff auf dieBundlevon Argumenten, die zum Erstellen einesSavedStateHandleverwendet 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 vonProcessLifecycleInitializereinenStartupExceptionverursachte. (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 stattdessenLifecycleEventObserveroderDefaultLifecycleObserver.- 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 vonlifecycle.lifecycle-common-java8nachlifecycle.lifecycle-commonverschoben.lifecycle.lifecycle-common-java8bietet keine zusätzlichen Funktionen mehr, die überlifecycle.lifecycle-commonhinausgehen. Die Abhängigkeit davon kann also durchlifecycle.lifecycle-commonersetzt werden.- Nicht-Coroutine-APIs aus
lifecycle-viewmodel-ktxwurden in das Modullifecycle-viewmodelverschoben. lifecycle-processverwendet jetztandroidx.startup, um dieProcessLifecycleOwnerzu 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 stattdessenLifecycleEventObserveroderDefaultLifecycleObserver. (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 jetztandroidx.startup, um dieProcessLifecycleOwnerzu 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 optionalesViewModelStoreOwner, was die Zusammenarbeit mit anderen Inhabern als demLocalViewModelStoreOwnererleichtert. Sie können jetzt beispielsweiseviewModel(navBackStackEntry)verwenden, um ein ViewModel abzurufen, das einem bestimmten Navigationsdiagramm zugeordnet ist. (I2628d, b/188693123)
Version 1.0.0-alpha06
2. Juni 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06 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 nullableViewModelStoreOwnerzurück, um besser zu bestimmen, ob eineViewModelStoreOwnerin der aktuellen Komposition verfügbar ist. Für APIs, für die einViewModelStoreOwnererforderlich ist, z. B.viewModel()undNavHost, wird weiterhin eine Ausnahme ausgelöst, wenn keinViewModelStoreOwnerfestgelegt 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 jetztprovides-Funktionen, die mitCompositionLocalProviderverwendet werden können und dieasProvidableCompositionLocal()API ersetzen. (I45d24)
Lifecycle-Viewmodel-Compose Version 1.0.0-alpha01
10. Februar 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 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önnensetSavedStateProvider()für einen bestimmten Schlüssel aufrufen und so einSavedStateProviderbereitstellen, das einen Callback zusaveState()erhält, wennSavedStateHandleaufgefordert 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. BeiLifecycleRegistry-Objekten, die zu Ihren eigenen Komponenten gehören, können Sie die Prüfungen explizit deaktivieren, indem SieLifecycleRegistry.createUnsafe(...)verwenden. Sie müssen dann jedoch dafür sorgen, dass eine ordnungsgemäße Synchronisierung erfolgt, wenn auf diesesLifecycleRegistryüber verschiedene Threads zugegriffen wird.
- 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 wurdenLifecycle.withStateAtLeast-APIs hinzugefügt, die auf einen Lebenszyklusstatus warten und einen nicht unterbrechenden Codeblock synchron zum Zeitpunkt der Statusänderung ausführen und dann mit dem Ergebnis fortfahren. Diese APIs unterscheiden sich von den vorhandenenwhen*-Methoden, da sie das Ausführen von unterbrechendem Code nicht zulassen und keinen benutzerdefinierten Dispatcher verwenden. (aosp/1326081)ViewTree-APIs: Mit einer neuenViewTreeLifecycleOwner.get(View)- undViewTreeViewModelStoreOwner.get(View)-API können Sie die enthaltendenLifecycleOwnerbzw.ViewModelStoreOwnerfür eineView-Instanz abrufen. Sie müssen auf Activity1.2.0und Fragment1.3.0sowie AppCompat 1.3.0-alpha01 oder höher aktualisieren, damit die Daten korrekt ausgegeben werden. Die Kotlin-ErweiterungenfindViewTreeLifecycleOwnerundfindViewTreeViewModelStoreOwnersind inlifecycle-runtime-ktxbzw.lifecycle-viewmodel-ktxverfügbar.LiveData.observe()-Kotlin-Erweiterung wird eingestellt: DieLiveData.observe()-Kotlin-Erweiterung, die für die Verwendung der Lambda-Syntax erforderlich ist, wird jetzt eingestellt, da sie bei Verwendung von Kotlin 1.4 nicht mehr benötigt wird.
Version 2.3.0-rc01
16. Dezember 2020
androidx.lifecycle:lifecycle-*:2.3.0-rc01 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. BeiLifecycleRegistry-Objekten, die zu Ihren eigenen Komponenten gehören, können Sie die Prüfungen explizit deaktivieren, indem SieLifecycleRegistry.createUnsafe(...)verwenden. Sie müssen dann jedoch dafür sorgen, dass eine ordnungsgemäße Synchronisierung erfolgt, wenn von verschiedenen Threads auf diesesLifecycleRegistryzugegriffen 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 vononActive()oderonInactive(). (b/157840298)- Ein Problem wurde behoben, bei dem Lint-Prüfungen bei Verwendung von Android Studio 4.1 Canary 6 oder höher nicht ausgeführt wurden. (aosp/1331903)
Version 2.3.0-alpha04
10. Juni 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha04 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önnensetSavedStateProvider()für einen bestimmten Schlüssel aufrufen und so einSavedStateProviderbereitstellen, das einen Callback zusaveState()erhält, wennSavedStateHandleaufgefordert 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 vonViewModelProviders.of()wird in diesem Release die letzte API inlifecycle-extensionseingestellt. Dieses Artefakt sollte jetzt als vollständig eingestellt betrachtet werden. Wir empfehlen dringend, je nach den benötigten Lifecycle-Artefaktenlifecycle-service(wenn SieLifecycleServiceverwenden) undlifecycle-process(wenn SieProcessLifecycleOwnerverwenden) anstelle vonlifecycle-extensionszu verwenden, da es keine zukünftige2.3.0-Version vonlifecycle-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 vonliveDataverwenden jetztDispatchers.Main.immediateanstelle vonDispatchers.Main. (b/139740492)
Externe Beiträge
- Vielen Dank an Nicklas Ansman für die Unterstützung bei der Umstellung auf
Dispatchers.Main.immediate. (aosp/1106073)
Version 2.2.0-alpha03
7. August 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha03 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 einFragment- oderFragmentActivity-Objekt an den neuenViewModelProvider(ViewModelStoreOwner)-Konstruktor übergeben, um dieselbe Funktionalität zu erreichen. (aosp/1009889)
Version 2.2.0-alpha02
2. Juli 2019
androidx.lifecycle:*:2.2.0-alpha02 ist veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
LiveDataScope.initialValuewurde durchLiveDataScope.latestValueersetzt, um den aktuellen ausgegebenen Wert des BlocksliveDatazu 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 vonAbstractSavedStateViewModelFactoryabgeleitet undSavedStateHandlewird 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 vonfragmentabhängig und die zugehörigen KonstruktorenSavedStateViewModelFactory(Fragment)undSavedStateViewModelFactory(FragmentActivity)wurden entfernt. Stattdessen istSavedStateViewModelFactoryjetzt die Standard-Factory für Activity1.1.0-alpha02, Fragment1.2.0-alpha02und Navigation2.2.0-alpha01. (b/135716331)
ViewModel-SavedState Version 1.0.0-alpha02
2. Juli 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02 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 inSavedStateViewModelFactoryumbenannt.AbstractSavedStateVMFactorywird inAbstractSavedStateViewModelFactoryumbenannt.
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 FactorySavedStateVMFactorydes ViewModels und Ihr ViewModel sollte einen Konstruktor haben, der dasSavedStateHandle-Objekt als Parameter empfängt.
Version 2.1.0
Wichtige Änderungen seit Version 2.0.0
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 verborgeneGenericLifecycleObserver-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 QuellwertLiveDatageä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 zuViewModelProvider.Factoryließ sich nicht gut mit neuen Funktionen wie der Attributdelegierung in Kotlinby 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 MethodesetCurrentState(), die die jetzt verworfene MethodesetState()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 verborgeneGenericLifecycleObserver-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, diekeyundClassin der Methodecreateempfä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.0android.arch.lifecycle:viewmodel:1.1.0
API-Änderungen
- Die eingestellten
LifecycleActivityundLifecycleFragmentwurden jetzt entfernt. Verwenden Sie stattdessenFragmentActivity,AppCompatActivityoderFragment. @NonNull-Annotationen wurdenViewModelProvidersundViewModelStoreshinzugefügt- Der
ViewModelProviders-Konstruktor wurde eingestellt. Verwenden Sie stattdessen die statischen Methoden. ViewModelProviders.DefaultFactorywurde eingestellt. Verwenden Sie stattdessenViewModelProvider.AndroidViewModelFactory.- Die statische Methode
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)wurde hinzugefügt, um eine statischeFactoryabzurufen, die sich für die Erstellung vonViewModel- undAndroidViewModel-Instanzen eignet.