Lebenszyklus
In dieser Tabelle werden alle Artefakte in der Gruppe androidx.lifecycle aufgeführt.
| Artefakt | Stabile Release | Releasekandidat | Beta-Release | Alpha-Release |
|---|---|---|---|---|
| lifecycle-* | 2.11.0 | - | - | - |
| lifecycle-viewmodel-navigation3 | 2.11.0 | - | - | - |
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 die Abhängigkeiten für die benötigten Artefakte der Datei build.gradle für Ihre App oder Ihr Modul hinzu:
Kotlin
Groovy
dependencies { def lifecycle_version = "2.11.0" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" // ViewModel utilities for Compose implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" // Lifecycle utilities for Compose implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // ViewModel integration with Navigation3 implementation "androidx.lifecycle:lifecycle-viewmodel-navigation3:2.11.0" // 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.11.0" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version") // ViewModel utilities for Compose implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version") // Lifecycle utilities for Compose implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // ViewModel integration with Navigation3 implementation("androidx.lifecycle:lifecycle-viewmodel-navigation3:2.11.0") // 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.11.0" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // Annotation processor annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.11.0" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // Annotation processor annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Ihr Feedback hilft uns, Jetpack zu verbessern. Wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben, lassen Sie es uns wissen. Bevor Sie ein neues Problem erstellen, sollten Sie sich jedoch die bereits gemeldeten Probleme in dieser Bibliothek ansehen. Wenn Sie sich einer Problemmeldung anschließen möchten, klicken Sie auf den Button mit dem Stern.
Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.
Version 2.11
Version 2.11.0
17. Juni 2026
androidx.lifecycle:lifecycle-*:2.11.0 ist veröffentlicht. Version 2.11.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.10.0:
Scoped ViewModels in Compose: Einführung von ViewModelStoreProvider, rememberViewModelStoreProvider und rememberViewModelStoreOwner, um ViewModels an bestimmte UI-Bereiche (z. B. Pager-Seiten) zu binden. Sie bleiben bei Konfigurationsänderungen erhalten und werden automatisch gelöscht, wenn das Composable aus der Hierarchie entfernt wird.
KMP-Unterstützung: ViewModel-Compose und ViewModel-Navigation3 unterstützen jetzt alle Kotlin Multiplatform-Ziele.
Navigation3-Integration: ViewModelStoreNavEntryDecorator akzeptiert jetzt ein ViewModelStoreOwner, um CreationExtras und Factories an verschachtelte ViewModels weiterzugeben. Sie können Anbieter auch mit der neuen rememberViewModelStoreNavEntryDecorator-Überladung hochstufen, um mehrere Backstacks zu unterstützen. removeViewModelStoreOnPop ist veraltet.
Lifecycle Utilities: Es wurden eine reifizierte ViewModelProvider.get<VM>(key)-Erweiterung, eine lambdabasierten Lifecycle.addObserver und Standardfactory-Erweiterungen für ViewModelStoreOwner hinzugefügt. ViewModel.onCleared ist jetzt mit @EmptySuper gekennzeichnet.
Andere Änderungen: Die Compose-Benutzeroberfläche 1.7.0+ ist jetzt für LocalLifecycleOwner erforderlich, um Reflection-Fallbacks zu entfernen. Für Updates für Compose compileSdk ist mindestens AGP-Version 9.2.0 erforderlich.
Version 2.11.0-rc01
3. Juni 2026
androidx.lifecycle:lifecycle-*:2.11.0-rc01 ist veröffentlicht. Version 2.11.0-rc01 enthält diese Commits.
Version 2.11.0-beta02
19. Mai 2026
androidx.lifecycle:lifecycle-*:2.11.0-beta02 ist veröffentlicht. Version 2.11.0-beta02 enthält diese Commits.
API-Änderungen
- Fügen Sie eine
rememberViewModelStoreNavEntryDecorator-Überladung hinzu, die einViewModelStoreProviderakzeptiert. So können Entwickler den Anbieter über den Kompositionsbereich des Decorators verschieben und Anwendungsfälle wie die Unterstützung mehrerer Backstacks ermöglichen, in denen derselbe Eintrag in beiden vorhanden ist, aber einen separaten Status erfordert. (Ibbbfe, b/503420425) - Verhindern, dass freigegebene
ViewModelsvorzeitig gelöscht werden, wenn ein untergeordneter Anbieter aus der Komposition entfernt wird. (Ib321a)
Fehlerkorrekturen
- Für die Verwendung von
LocalLifecycleOwnerist Compose UI 1.7.0 oder höher erforderlich. Dadurch werden interne Reflexions-Fallbacks entfernt, was die Leistung verbessert, aber ein striktes Abhängigkeits-Upgrade für Clients erfordert. (I48e65) - Symbolduplikate mit älteren JetBrains-Fork-Versionen beim Upgrade auf Compose Multiplatform 1.11.0 verhindern. (Iccd64)
- Ein Problem wurde behoben, bei dem
ViewModelsbei der Neuzusammenstellung fälschlicherweise gelöscht wurden, wennrememberViewModelStoreProvidermit instabilen Standardparametern verwendet wurde. Der Anbieter wird jetzt nur neu erstellt, wenn sich der übergeordnete Inhaber oder der explizite Schlüssel ändert. (Ibe296, b/501792448)
Version 2.11.0-beta01
22. April 2026
androidx.lifecycle:lifecycle-*:2.11.0-beta01 ist veröffentlicht. Version 2.11.0-beta01 enthält diese Commits.
API-Änderungen
rememberViewModelStoreOwnerundrememberViewModelStoreProviderin separate Funktionen für Anwendungsfälle mit und ohne Schlüssel aufteilen. (Ifd154, b/500802788)
Fehlerkorrekturen
- Compose
compileSdkwurde auf API 37 aktualisiert. Das bedeutet, dass bei der Verwendung von Compose mindestens AGP 9.2.0 erforderlich ist. (Id45cd, b/413674743)
Version 2.11.0-alpha03
25. März 2026
androidx.lifecycle:lifecycle-*:2.11.0-alpha03 ist veröffentlicht. Version 2.11.0-alpha03 enthält diese Commits.
API-Änderungen
- Machen Sie
parentKeyzu einem optionalen Parameter inViewModelStoreProvider-Konstruktoren, der standardmäßig aufnullfestgelegt ist, und verschieben Sie ihn nachparentStoreoderparentOwner. Dadurch wird die Instanziierung vereinfacht, wenn kein gemeinsamer Bereichsschlüssel erforderlich ist. (I66b67) ViewModelStoreNavEntryDecoratorakzeptiert jetzt eineViewModelStoreOwneranstelle einerViewModelStore. So kann Navigation3 die StandardwerteCreationExtrasundViewModelProvider.Factorydes übergeordneten Elements an verschachtelte ViewModels weitergeben und so die Unterstützung von Abhängigkeiten auf Anwendungsebene sicherstellen. (Ia6018, b/434651920)- Isolieren Sie den
ViewModelStoreProvider-Zustand mit einem eindeutigen Schlüssel. Dadurch wird verhindert, dass nebeneinanderliegende Anbieter beim Schließen versehentlich die ViewModels des jeweils anderen löschen. (I59c0b, b/434651920) - Fügen Sie die Erweiterungsfunktion
ViewModelProvider.get<VM>(key: String)hinzu. So können Entwickler ViewModels mithilfe eines benutzerdefiniertenkeymit Kotlin-reified-Typparametern einfacher abrufen, ohne den Klassentyp explizit übergeben zu müssen. (Ic1f59) defaultArgs-Unterstützung fürViewModelStoreProviderhinzufügen, damit ViewModels mit Standardwerten fürSavedStateinitialisiert werden können. (I1e933, b/434651920, b/165642391)removeViewModelStoreOnPopund die zugehörigeViewModelStoreNavEntryDecoratorDefaultswerden eingestellt. Diese API war eine Problemumgehung für Konfigurationsänderungen, die jetzt intern verarbeitet werden. Der gesamte Dekoratorstatus, einschließlich ViewModels, muss jetzt gleichzeitig beim Pop-Vorgang gelöscht werden. Wenn Sie den Dekoratorstatus auch außerhalb des Zeitraums beibehalten möchten, in dem der Backstack an ein NavDisplay übergeben wird, verwenden Sie dierememberDecoratedNavEntriesAPI. (I852d9)
Fehlerkorrekturen
- Fügen Sie
toString()zuCreationExtras.Keyhinzu, um den Kursnamen anzuzeigen. (I5de52)
Version 2.11.0-alpha02
11. März 2026
androidx.lifecycle:lifecycle-*:2.11.0-alpha02 ist veröffentlicht. Version 2.11.0-alpha02 enthält diese Commits.
Scoped ViewModels
Mit diesem Release werden APIs eingeführt, mit denen sich
ViewModelStore-Instanzen mit eingeschränktem Gültigkeitsbereich in Compose erstellen lassen. So kannViewModelsmit bestimmten UI-Bereichen verknüpft werden, z. B. mit einzelnenPager-Seiten oderLazyList-Elementen. DieseViewModelsüberstehen Konfigurationsänderungen und werden automatisch gelöscht, wenn die entsprechende Composable dauerhaft aus der Hierarchie entfernt wird.// Hoist the parent provider outside the Pager. val provider = rememberViewModelStoreProvider() val pagerState = rememberPagerState(pageCount = { 5 }) HorizontalPager(state = pagerState) { page -> // Create an owner scoped to the current page. val storeOwner = rememberViewModelStoreOwner(provider, key = page) // Provide the scoped owner to this composition. CompositionLocalProvider(LocalViewModelStoreOwner provides storeOwner) { // ViewModel is now scoped specifically to this page. val viewModel: PageViewModel = viewModel() } }
ViewModelStoreProvider ist auch außerhalb von Compose verfügbar und kann mit Aktivitäten, Fragmenten und/oder Ansichten verwendet werden.
Neue Funktionen
- Unterstützung für alle KMP-Ziele für ViewModel Navigation3 hinzufügen. (I60fa5)
- Es wurden Factory-Funktionen für
LifecycleOwner,ViewModelStoreOwnerundSavedStateRegistryOwnerhinzugefügt, um den Boilerplate-Code beim Erstellen benutzerdefinierter Owner-Komponenten zu reduzieren. (I9682c) - Fügen Sie eine lambdabasierten
Lifecycle.addObserver-Erweiterungsfunktion hinzu, um Lebenszyklusereignisse zu beobachten, ohne ein anonymes Objekt zu instanziieren. (I94f38) - Fügen Sie
defaultViewModelProviderFactory- unddefaultViewModelCreationExtras-Erweiterungen zuViewModelStoreOwnerhinzu. Sie ermöglichen einen sicheren Zugriff auf Standardwerte, ohne dass manuelle Typüberprüfungen fürHasDefaultViewModelProviderFactoryerforderlich sind. (Ifa83d)
API-Änderungen
- Fügen Sie
rememberViewModelStoreOwnerhinzu, um ganz einfachViewModelStoreOwners mit Bereich in Compose zu erstellen. Diese Funktion gibt einen Inhaber zurück, der an den Lebenszyklus der Composable gebunden ist. Die ViewModels werden automatisch gelöscht, wenn die Composable aus der Benutzeroberfläche entfernt wird. (I2a15b, b/165642391) - Fügen Sie
rememberViewModelStoreProviderhinzu, um die Erstellung vonViewModelStore-Instanzen mit Bereich in Compose zu ermöglichen. Diese Funktion verknüpft einen untergeordneten Store mit einem übergeordneten Inhaber. Dadurch bleiben ViewModels bei Konfigurationsänderungen erhalten und werden automatisch gelöscht, wenn die Composable aus der Hierarchie entfernt wird. (I0f57a, b/165642391) - Fügen Sie
ViewModelStoreProviderhinzu, umViewModelStore-Instanzen mit Bereich zu verwalten. Mit dieser Klasse können untergeordnete Bereiche erstellt werden, die Konfigurationsänderungen überstehen, aber unabhängig voneinander gelöscht werden können. Außerdem werdenViewModelStoreOwner-Wrapper bereitgestellt, die Standard-Factories und Creation-Extras von der übergeordneten Klasse übernehmen. (I87f4f, b/434651920)
Version 2.11.0-alpha01
25. Februar 2026
androidx.lifecycle:lifecycle-*:2.11.0-alpha01 ist veröffentlicht. Version 2.11.0-alpha01 enthält diese Commits.
Neue Funktionen
- Alle Kotlin Multiplatform-Ziele (KMP) in ViewModel-Compose werden unterstützt. Die Auflösung des Eigentümers wird von
LocalViewentkoppelt, damit Plattform-Hosts einen Standardwert fürViewModelStoreOwnerbereitstellen können, währendLocalViewals sicherer Fallback auf Android beibehalten wird. (I09fab, b/434940570, Ic8526, b/478146897)
API-Änderungen
- Fügen Sie
ViewModelStoreeinetoString-Implementierung hinzu, in der alle gespeicherten Schlüssel aufgeführt sind, um das Debugging zu vereinfachen. (I0a6f4) - Es wurde eine Standardimplementierung für
HasDefaultViewModelProviderFactory.defaultViewModelProviderFactoryhinzugefügt. Das bedeutet, dass Sie diese Eigenschaft nicht mehr explizit überschreiben müssen, wenn Sie die Schnittstelle implementieren. (Ia7095) - Annotieren Sie
ViewModel.onClearedmit@EmptySuper, um explizit anzugeben, dass überschreibende Methodensuper.onCleared()nicht aufrufen müssen. (I8c226)
Version 2.10
Version 2.10.0
19. November 2025
androidx.lifecycle:lifecycle-*:2.10.0 ist veröffentlicht. Version 2.10.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.9.0:
Fügen Sie ein
rememberLifecycleOwner-Composable hinzu, um direkt in der Benutzeroberfläche Lebenszyklen mit Bereich zu erstellen. Das ist nützlich für Komponenten, die ihren eigenen Lebenszyklus unabhängig verwalten müssen, z. B. einHorizontalPager, das nur die aktuelle SeiteRESUMEDrendern soll, oder Bibliotheken wie Navigation3:@Composable fun MyComposable() { // This LifecycleOwner is automatically moved to DESTROYED when // it leaves composition and its maxLifecycle is the maximum of either // the maxLifecycle you set or the Lifecycle.State of the parentLifecycleOwner val lifecycleOwner = rememberLifecycleOwner( maxLifecycle = RESUMED, parentLifecycleOwner = LocalLifecycleOwner.current, ) CompositionLocalProvider(LocalLifecycleOwner provides lifecycleOwner) { val childLifecycleOwner = LocalLifecycleOwner.current } }Das
lifecycle-viewmodel-navigation3-Artefakt bietet eine vorgefertigte Integration für Navigation3. Damit können Sie den Bereich vonViewModel-Instanzen auf einzelne Bildschirme („Einträge“) beschränken, indem Sie dierememberViewModelStoreNavEntryDecorator()API verwenden:@Composable fun MyComposable() { NavDisplay( backStack = backStack, entryDecorators = listOf( rememberSaveableStateHolderNavEntryDecorator(), // Add this line to automatically scope ViewModels to each entry rememberViewModelStoreNavEntryDecorator(), ), entryProvider = entryProvider { // Add your entries here } } }Fügen Sie eine Builder-Fabrikmethode für
CreationExtrashinzu, um eine bequemere und idiomatische Kotlin API bereitzustellen.override val defaultViewModelCreationExtras: CreationExtras // Use the CreationExtras builder to add in a custom value to the default // CreationExtras in your Activity or Fragment get() = super.defaultViewModelCreationExtras + CreationExtras { this[CustomKey] = "customValue" }Native Unterstützung für Nullable-Typen in
SavedStateHandle.savedhinzugefügt, wodurch das Speichern und Wiederherstellen von Nullable-Attributen vereinfacht wird.Markieren Sie
SavedStateHandle-Konstruktoren als@VisibleForTesting.Die minSdk-Version wurde von API 21 auf API 23 geändert.
Version 2.10.0-rc01
5. November 2025
androidx.lifecycle:lifecycle-*:2.10.0-rc01 ist veröffentlicht. Version 2.10.0-rc01 enthält diese Commits.
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 Inhaber 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 in eine 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) - Fügen Sie KMP-Stubs zu lifecycle-viewmodel-navigation3 hinzu, damit JetBrains Forks bereitstellen kann, die diese Ziele ausfüllen und so 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, wird der neue Lebenszyklus unabhängig von einem Host (z. B.Activity,FragmentoderNavBackStackEntry) ausgeführt. Er wird gestartet, sobald die Composable in die Komposition aufgenommen wird, 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
- Das
LifecycleOwner-Composable verschiebt seinen Lebenszyklus jetzt korrekt zuDESTROYED, wenn es verworfen wird. So werden potenzielle Lecks für externen Code verhindert, der eine Referenz auf den Lebenszyklus enthält. (I9e5b7, b/433659048) - Verschieben des Standard-minSdk von API 21 auf API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
Externer Beitrag
- 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 ein
LifecycleOwner-Composable hinzu, um direkt in der Benutzeroberfläche Lebenszyklen mit Bereich zu erstellen. Das ist nützlich für Komponenten, die ihren eigenen Lebenszyklus unabhängig verwalten müssen. Ein Beispiel dafür, wie Navigation3 diese neue zusammensetzbare Funktion 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-Fabrikmethode 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
- Neue KMP-Ziele (Kotlin Multiplatform) zu Lifecycle-
*-compose-Artefakten hinzufügen 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 behoben:
SavedStateHandle.remove(key)löschtSavedStateHandle.getMutableStateFlow(key)-Status nicht. (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
- Ein neues
androidx.lifecycle:lifecycle-viewmodel-testing-KMP-Artefakt ist verfügbar, das eineViewModelScenario-Klasse zum isolierten Testen vonViewModelsbietet. Es unterstütztonClearedundSavedStateHandlesowie das Testen von Prozessende und ‑neustart überrecreate(). - Addiere
getMutableStateFlowzuSavedStateHandle, umMutableStateFlowzurückzugeben. Diese neue Funktion ist nur mit 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, wenn auf sie zugegriffen wird. Außerdem wird erst dann etwas inSavedStateHandlegespeichert.@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 Source-Set verfügbar.NewInstanceFactoryist jetzt für JVM-Desktop- und Android-Ziele verfügbar.
Geändertes Verhalten
- Der Status
Lifecycle.DESTROYEDist ein Endstatus. Jeder Versuch, einLifecyclevon diesem Status 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 jedoch in den Versionshinweisen. Wir holen das hiermit nach. Empfohlene Lösung:Führen Sie ein Update auf die aktuelle stabile AGP-Version durch. 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 Compose Runtime.
Version 2.9.0-beta01
09. 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 Sprachniveau von Kotlin 2.0 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 allen unterstützten KMP-Plattformen die Annotation
@MainThreadzuViewModelProvider.gethinzu. (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
- Parameter
SavedStateConfigzusaved()-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)
Externer Beitrag
- 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 zu unnötigem Overhead führt. 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 Ansichts-Parent-Elementen 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, wenn auf sie zugegriffen wird. Außerdem wird erst dann etwas inSavedStateHandlegespeichert. (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 mit 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, einLifecyclevon diesem Status 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, wennLifecyclegleichDESTROYEDist (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 KMP-kompatibel konfiguriert, um APIs wieSavedStateHandlevorzubereiten, die in einem zukünftigen Release im gemeinsamen Source-Set 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: DerNullSafeMutableLiveData-Lint-Fehler bietet 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 Lifecycle Runtime 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)
Externer Beitrag
- Verschiebe
androidx.compose.ui.platform.LocalLifecycleOwnerin den gemeinsamen Source-Set (KMP). Vielen Dank an Ivan Matkov von JetBrains für den 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 Fabrikmethode
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 Source-Set (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 Lint-Fehler
NullSafeMutableLiveDataunterstützt jetzt Smart Casts besser, um Fehlalarme zu vermeiden. (85fed6, b/181042665)
Abhängigkeitsupdates
- Lifecycle Runtime Compose hängt jetzt von Compose Runtime
1.7.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.ReportFragment-ProGuard-Regeln, um die Verschleierung zuzulassen . (ff898e1)
Externer Beitrag
- Der
SavedStateHandle.saveable-Erweiterungs-Delegate 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 fürLiveDatafestgelegt 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 Codekomprimierung 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 wurden 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 Compose UI zulifecycle-runtime-composeverschoben, damit die Compose-basierten Hilfs-APIs außerhalb von Compose UI 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, mit dem Sie Ihren eigenen Dispatcher undSupervisorJob()einfügen oder den Standardwert mitbackgroundScopeinrunTestüberschreiben können. (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 den sie übergetCloseable()abgerufen werden können.Das Aufrufen von
LifecycleStartEffectundLifecycleResumeEffectohne Schlüssel führt jetzt zu einem Fehler. Das 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.
Kotlin Multiplatform-Kompatibilität des Lebenszyklus
Die wichtigsten Lifecycle-APIs in Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event und LifecycleRegistry sind jetzt in Artefakten enthalten, die mit Kotlin Multiplatform kompatibel sind.
Betroffene Artefakte:
- In
lifecycle-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 jetzt für Methoden wie die in ViewModelProvider, die bisher java.lang.Class<T> als Parameter hatten, eine entsprechende Methode, die kotlin.reflect.KClass<T> als Parameter hat.
Die binäre Kompatibilität auf Android wurde beibehalten, es gibt jedoch einige bemerkenswerte Änderungen im Vergleich der Android-API-Oberfläche mit der 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 Factories sollten von
ViewModelProvider.Factoryabgeleitet werden und diecreate-Methode verwenden, die einCreationExtrasakzeptiert, oder dieviewModelFactory-Kotlin-DSL.
- Benutzerdefinierte Factories 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 (z.B. Linux), aufEmptyCoroutineContextzurückgesetzt.
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
lifecycle-*:2.8.0erfordert mindestens die Compose-Version 1.7.0-alpha05 (b/336842920).
Version 2.8.0-rc01
1. Mai 2024
androidx.lifecycle:lifecycle-*:2.8.0-rc01 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 Sortierungsfehler behoben, der sich darauf bezog, wie
AutoCloseable-Instanzen, die an ein ViewModel angehängt sind, gelöscht werden. Die vorherige Reihenfolge (addCloseable(String, AutoCloseable), dannaddClosable(AutoCloseable), dannonCleared()) wurde wiederhergestellt. (aosp/3041632) - Das Standardverhalten beim Erstellen von
viewModelScopefür native und JVM-Desktopumgebungen wurde verbessert. (aosp/3039221)
Externer Beitrag
- 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 incommonverschoben 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, mit dem Sie Ihren eigenen Dispatcher undSupervisorJob()einfügen oder den Standardwert mitbackgroundScopeinrunTestüberschreiben können. (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 jetzt für Methoden wie die in ViewModelProvider, die bisher java.lang.Class<T> als Parameter hatten, eine entsprechende Methode, die kotlin.reflect.KClass<T> als Parameter hat.
Die binäre Kompatibilität auf Android wurde beibehalten, es gibt jedoch einige bemerkenswerte Änderungen im Vergleich der Android-API-Oberfläche mit der 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 Factories sollten von
ViewModelProvider.Factoryabgeleitet werden und diecreate-Methode verwenden, die einCreationExtrasakzeptiert, oder dieviewModelFactory-Kotlin-DSL.
- Benutzerdefinierte Factories 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 (z.B. Linux), aufEmptyCoroutineContextzurückgesetzt.
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)
Externer Beitrag
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 Artefakten enthalten, die mit Kotlin Multiplatform kompatibel sind. (b/317249252)
API-Änderungen
- Das Aufrufen von
LifecycleStartEffectundLifecycleResumeEffectohne Schlüssel führt jetzt zu einem Fehler. Das 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)
Externer Beitrag
- Vielen Dank an Ivan Matkov von Jetbrains für die 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
ViewModelunterstützt jetzt das Hinzufügen vonCloseable-Objekten mit einemkey, über das sie übergetCloseable()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. Aufgrund von Typinformationen, die durch das Android-Framework verloren gehen, erfordern Arrays benutzerdefinierter Parcelables zusätzlichen Aufwand (manuelles Erstellen eines typisierten Arrays des richtigen Typs). In der Dokumentation zuget,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 Paare von Ereignissen 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. Aufgrund von Typinformationen, die durch das Android-Framework verloren gehen, erfordern Arrays benutzerdefinierter Parcelables zusätzlichen Aufwand (manuelles Erstellen eines typisierten Arrays des richtigen Typs). In der Dokumentation zuget,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, wenn sichLifecycleOwnerändert. (Ia25c6)
Version 2.7.0-beta01
1. November 2023
androidx.lifecycle:lifecycle-*:2.7.0-beta01 wird ohne Änderungen veröffentlicht. Version 2.7.0-beta01 enthält diese Commits.
- Eine Betaversion wurde aktualisiert. Es gab keine größeren Änderungen an dieser Release-Version.
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.StatederTestLifecycleOwnermit dem FeldcurrentStateinnerhalb 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 Verwendung der resultierenden LiveData in Jetpack Compose den richtigen Status bei der ersten Komposition hat. (I91d2b, b/269479952) - Die
ViewModeladdCloseable()schließt dieCloseablejetzt sofort, 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 korrigiert. (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.Stateist jetzt überLifecycle.currentStateFlowCompose-beobachtbar.Lifecycle.currentStateFlowgibt einStateFlowzurück, wobeivaluedas aktuelleLifecycle.Stateist. (Ib212d, b/209684871)Lifecycle.Eventkö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-Ereignis-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 Compose-Stateverfü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 optimierter Code, der APIs über Reflection verwenden möchte, eigene Keep-Regeln für den jeweiligen Anwendungsfall bereitstellen muss. (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 korrigiert. (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.- Eine neue Erweiterung für
StateFlowundFlowvoncollectAsStateWithLifecycle()wurde hinzugefügt, die Daten aus Abläufen erfasst und den aktuellen Wert als Compose-Status auf lebenszyklusbewusste Weise darstellt. - Die Methoden
Lifecycle.launchWhenXundLifecycle.whenXsind veraltet, 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.
| Lifecycle 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 quellkompatibel:
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 quelleninkompatible Änderung für Klassen, die in Kotlin geschrieben wurden und direkt Syntax wieTransformations.mapverwendet haben. 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 die in Kotlin geschriebenen Klassen. 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 Schnittstelle
HasDefaultViewModelProviderFactoryist 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,ServiceLifecycleDispatcherundProcessLifecycleOwnerwerden 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.whenXsind veraltet, 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 die in Kotlin geschriebenen Klassen. 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 nun die primäre Oberfläche für in Kotlin geschriebenen Code. Dies ist eine quellinkompatible Änderung für in Kotlin geschriebenen Code, wenn Sie die Kotlin-Erweiterungsmethoden-APIs noch nicht verwendet haben. (I2b1b9, I95d22, b/240298691)DefaultLifecycleObserver,LifecycleEventObserver,Lifecycle,LifecycleRegistry,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. (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) - Lebenszyklus
2.5.1: Bei benutzerdefinierten Implementierungen vonAndroidViewModelFactorywird jetzt die Funktioncreate(modelClass)korrekt aufgerufen, wenn der zustandsbehaftete Konstruktor mitLifecycle2.4+ 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
- Eine neue Erweiterung für
StateFlowundFlowvoncollectAsStateWithLifecyclewurde hinzugefügt, die Daten aus Abläufen erfasst und den aktuellen Wert als Compose-Status auf lebenszyklusbewusste Weise darstellt. Der Flow wird erfasst und die neue Emission wird auf den Wert des Status festgelegt, wenn der Lebenszyklus mindestens in einer 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 einen 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.Factoryabgeleiteten Klasse 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, die einrememberSaveable-ähnliches Verhalten ermöglichen, das durch denSavedStateHandleeines „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. Dies ist ohne manuelle Arbeit inonCleared()möglich.Wenn Sie beispielsweise einen Koroutine-Bereich erstellen möchten, den Sie in ein ViewModel einschleusen, 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 }
Verhaltensänderungen
- Wenn Sie versuchen, das
Lifecycle.StatevonINITIALIZEDnachDESTROYEDzu verschieben, wird jetzt immer einIllegalStateExceptionausgelöst, unabhängig davon, ob demLifecycleein Beobachter angehängt ist. LifecycleRegistrylöscht jetzt seine 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 kombiniert 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 wurden 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 zu einemIllegalStateExceptionführte, wenn mehrere Backstacks verwendet wurden. (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 einen 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 demViewModelein oder mehrereCloseable-Objekte hinzufügen können, die geschlossen werden, wenn dasViewModelgelö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)
Verhaltensänderungen
- Wenn Sie versuchen, das
Lifecycle.StatevonINITIALIZEDnachDESTROYEDzu verschieben, wird jetzt immer einIllegalStateExceptionausgelöst, unabhängig davon, ob demLifecycleein Beobachter angehängt ist. (I7c390, b/177924329) LifecycleRegistrylöscht jetzt seine Beobachter, wenn es den StatusDESTROYEDerreicht. (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)
Verhaltensänderungen
- 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: Aktualisiertlifecycle-process, 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.), verwenden wir jetzt zustandslose Factorys, die auf einem neuen Konzept, CreationExtras, basieren. (Ia7343, b/188691010, b/188541057)
Durch diese Änderung ruft ViewModelProvider die vorherige create(Class<T>)-Methode von ViewModelProvider.Factory nicht mehr direkt auf. Stattdessen wird ein neuer Overload von create aufgerufen: create(Class<T>, CreationExtras). Das bedeutet, dass jede direkte Implementierung der ViewModelProvider.Factory-Instanz jetzt Zugriff auf die folgenden 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 dasSavedStateRegistryOwner, das zum Erstellen dieses ViewModels verwendet wird.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEYbietet Zugriff auf dasViewModelStoreOwner, das 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 Ihr 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 eine ViewModelProvider.Factory erstellen, die nur die Informationen an die einzelnen ViewModel übergeben, die Sie benötigen. Dabei ist keine strenge Hierarchie von Fabrikmethoden-abgeleiteten Klassen 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 nur für das ViewModel, das sie benötigt, ein SavedStateHandle zu erstellen. (Ia6654, b/188541057)
Benutzerdefinierte CreationExtras können durch Überschreiben von getDefaultViewModelCreationExtras() in Ihrem ComponentActivity oder Fragment bereitgestellt werden. 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-Property-Erweiterungen 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
- Backport 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 Mediathek „
androidx.lifecycle:lifecycle-viewmodel-compose“ wurde hinzugefügt. Es bietetviewModel()-Komponenten 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 Status 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, umProcessLifecycleOwnerzu 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)
Externer Beitrag
- 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)
Externer Beitrag
- 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 wird 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)
Externer Beitrag
- Vielen Dank an maxsav für die Verbesserung der
NullSafeMutableLiveData-Lint-Prüfung. (#147, b/183696616) - Vielen Dank an kozaxinan für die Verbesserung der
NullSafeMutableLiveData-Lint-Prüfung. (#161, b/184830263)
Version 2.4.0-alpha01
24. März 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha01 ist veröffentlicht. Version 2.4.0-alpha01 enthält diese Commits.
Geändertes Verhalten
lifecycle-processverwendet jetztandroidx.startup, umProcessLifecycleOwnerzu 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 korrekt zwischen Feldvariablen mit unterschiedlicher Null-Zulässigkeit 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 bei 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 ein nullableViewModelStoreOwnerzurück, um besser feststellen zu können, ob einViewModelStoreOwnerin 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 Null-Zulässigkeit 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:
- LifecycleRegistry erzwingt jetzt
DESTROYEDals Endstatus. 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 Abstürzen zur Laufzeit. BeiLifecycleRegistry-Objekten, die zu Ihren eigenen Komponenten gehören, können Sie die Prüfungen explizit deaktivieren, indem SieLifecycleRegistry.createUnsafe(...)verwenden. Sie müssen dann jedoch dafür sorgen, dass eine ordnungsgemäße Synchronisierung erfolgt, wenn auf diesesLifecycleRegistryüber verschiedene Threads zugegriffen wird.
- LifecycleRegistry erzwingt jetzt
- Hilfsklassen für Lebenszyklusstatus und Ereignisse: Der Klasse
Lifecycle.Eventwurden statische Hilfsmethoden fürdownFrom(State),downTo(State),upFrom(State)undupTo(State)hinzugefügt, um dieEventanhand einesStateund einer Ü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 entsprechendenLifecycleOwnerundViewModelStoreOwnerfü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 richtig ausgefüllt 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)
Externer Beitrag
- Die APIs zum Unterbrechen 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 Zeitlimitwerte. (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
- LifecycleRegistry erzwingt jetzt
DESTROYEDals Endstatus. (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 Abstürzen zur Laufzeit. BeiLifecycleRegistry-Objekten, die zu Ihren eigenen Komponenten gehören, können Sie die Prüfungen explizit deaktivieren, indem SieLifecycleRegistry.createUnsafe(...)verwenden. Sie müssen dann jedoch dafür sorgen, dass eine ordnungsgemäße Synchronisierung erfolgt, wenn auf diesesLifecycleRegistryüber verschiedene Threads zugegriffen wird (Ie7280, b/137392809).
Fehlerkorrekturen
- Ein Fehler wurde behoben, der zum Absturz von
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) - Die
NonNullableMutableLiveData-Lint-Prüfung 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 die 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 ausgefüllt 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 eine Null-Applicationan den Konstruktor übergeben, um Fälle besser zu unterstützen, in denen keineApplicationverfügbar ist und keine Unterstützung fürAndroidViewModelerforderlich ist. (aosp/1285740)
Fehlerkorrekturen
- Die Kaltstartleistung wurde verbessert, indem Fehler bei der Klassenprüfung 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 die enthaltendeLifecycleOwnerfür eineView-Instanz abrufen. Sie müssen ein Upgrade auf Activity1.2.0-alpha01und Fragment1.3.0-alpha01ausfü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 einTestLifecycleOwnerbereitstellt, dasLifecycleOwnerimplementiert und ein threadsicheres, veränderlichesLifecyclebereitstellt. (aosp/1242438)
Diverse 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. Daslifecycle-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 einFragment- oderFragmentActivity-Objekt an den neuenViewModelProvider(ViewModelStoreOwner)-Konstruktor übergeben, um dieselbe Funktionalität wie bei der Verwendung von Fragment1.2.0zu erzielen. - Einstellung des
lifecycle-extensions-Artefakts: Mit der oben genannten Einstellung vonViewModelProviders.of()wird die letzte API inlifecycle-extensionseingestellt. Dieses Artefakt sollte jetzt als vollständig eingestellt betrachtet werden. Wir empfehlen dringend, je nach den benötigten Lifecycle-Artefakten (z. B.lifecycle-service, wenn SieLifecycleServiceverwenden, undlifecycle-process, wenn SieProcessLifecycleOwnerverwenden) anstelle vonlifecycle-extensionszu verwenden, da es keine zukünftige2.3.0-Version vonlifecycle-extensionsgeben wird. - Inkrementeller Annotation Processor für Gradle: 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.
Diverse Fehlerkorrekturen
- Ein Fehler wurde behoben, der auftrat, wenn ein simulierter
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 Lifecycle-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.
Diverse 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.
Diverse 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 Lifecycle-Methode 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.
Diverse 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) - Es wurde eine Regression behoben, die in Lifecycle
2.2.0-alpha05eingeführt wurde und 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.
Diverse Fehlerkorrekturen
- Es wurde eine Race-Bedingung im Livedata-Builder für Koroutinen 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 Standardwert fürViewModelProvider.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 aktuell ausgegebenen Wert des BlocksliveDatazu erfassen.- Dem
liveData-Builder wurde eine neue Überladung hinzugefügt, die den Parametertimeoutvom 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. In den standardmäßig von Fragments und AppCompatActivity bereitgestellten Factorys wirdSavedStateHandleautomatisch eingefügt. - 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
- Jetzt hängt es 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.
Diverse Fehlerkorrekturen
- Ein Problem wurde behoben, durch das beim ersten Zugriff auf ein SavedState-ViewModel in
Activity.onActivityResult()einIllegalStateExceptionausgelöst wurde. (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
SavedStateViewModelFactoryerbt nicht mehr vonAbstractSavedStateViewModelFactoryundSavedStateHandlewird 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 zu gespeicherten Status beitragen. Dazu verwenden Sie die neu eingeführte FactorySavedStateVMFactorydes ViewModels. 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 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.- Coroutine-Unterstützung in ViewModels 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 wurden auf Beta umgestellt: APIs, die in früheren Alphas eingeführt wurden, z. B.
liveData-Erweiterungsfunktionen für Transformationen und Beobachtungen,ViewModel-Initialisierung mit Eigenschaftsdelegierung und andere, sind stabilisiert und werden sich nicht ändern.
Version 2.1.0-alpha04
3. April 2019
androidx.lifecycle:*:2.1.0-alpha04 ist veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
- Grundlegende Änderung: Die zugrunde liegende API für
by viewModels()undby activityViewModels()wurde geändert, um 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.KeyedFactory" wurde entfernt. Die zweite Schnittstelle zusätzlich zuViewModelProvider.Factorywar nicht gut mit neuen Funktionen wie der Eigenschaftsdelegierung in Kotlinby viewmodels {}kompatibel. (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)
Diverse 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 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 ViewModels wurden korrigiert, um die Verschleierung und das Verkleinern zu ermöglichen.
Versionen vor AndroidX
Für die Pre-AndroidX-Versionen von Lifecycle, die folgen, müssen Sie diese Abhängigkeiten einfügen:
dependencies {
def lifecycle_version = "1.1.1"
// ViewModel and LiveData
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
// alternatively - just ViewModel
implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
// alternatively - just LiveData
implementation "android.arch.lifecycle:livedata:$lifecycle_version"
// alternatively - Lifecycles only (no ViewModel or LiveData).
// Support library depends on this lightweight import
implementation "android.arch.lifecycle:runtime:$lifecycle_version"
annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
// alternately - if using Java8, use the following instead of compiler
implementation "android.arch.lifecycle:common-java8:$lifecycle_version"
// optional - ReactiveStreams support for LiveData
implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"
// optional - Test helpers for LiveData
testImplementation "android.arch.core:core-testing:$lifecycle_version"
}
Version 1.1.1
21. März 2018
Es gibt nur eine kleine Änderung: android.arch.core.util.Function wird von arch:runtime nach arch:common verschoben. So 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 daher 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 Konstruktor
ViewModelProviderswurde eingestellt. Verwenden Sie stattdessen die statischen Methoden. ViewModelProviders.DefaultFactorywurde verworfen. 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.