In dieser Tabelle sind alle Artefakte in der Gruppe androidx.lifecycle
aufgeführt.
Artefakt | Stabile Version | Releasekandidat | Beta-Ausgabe | Alphaversion |
---|---|---|---|---|
lifecycle-* | 2.8.7 | - | - | 2.9.0-alpha06 |
Lebenszyklus-Ansicht-Modell-Zusammensetzung | 2.8.7 | - | - | 2.9.0-alpha06 |
Abhängigkeiten deklarieren
Wenn Sie eine Abhängigkeit von Lifecycle hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.
Fügen Sie der Datei build.gradle
für Ihre App oder Ihr Modul die Abhängigkeiten für die erforderlichen Artefakte hinzu:
Kotlin
Groovy
dependencies { def lifecycle_version = "2.8.7" 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" // 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.8.7" 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") // 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.8.7" 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.8.7" 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. Teilen Sie uns mit, wenn Sie neue Ausgaben entdecken oder Verbesserungsvorschläge für diese Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können einem vorhandenen Problem Ihre Stimme geben, indem Sie auf die Schaltfläche mit dem Stern klicken.
Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.
Version 2.9
Version 2.9.0-alpha06
30. Oktober 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha06
wird veröffentlicht. Version 2.9.0-alpha06 enthält diese Commits.
Verhaltensänderungen
- Der Status
Lifecycle.DESTROYED
ist ein Endstatus. Jeder Versuch, eineLifecycle
von diesem Status in einen anderen Status zu verschieben, führt jetzt zu einerIllegalStateException
. (I116c4, b/370577987) SavedStateHandle
enthält keineSavedStateProvider.saveState()
mehr, bei denen die zurückgegebeneBundle
leer ist. (I910b5, b/370577987)
Fehlerkorrekturen
Lifecycle.eventFlow
wird jetzt korrekt abgeschlossen, wennLifecycle
=DESTROYED
ist (I293b2, b/374043130)
Version 2.9.0-alpha05
16. Oktober 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha05
wird ohne nennenswerte Änderungen veröffentlicht. Version 2.9.0-alpha05 enthält diese Commits.
Version 2.9.0-alpha04
2. Oktober 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha04
wird veröffentlicht. Version 2.9.0-alpha04 enthält diese Commits.
Kotlin Multiplatform
- Das Modul
lifecycle-viewmodel-savedstate
ist jetzt so konfiguriert, dass es KMP-kompatibel ist, um APIs wieSavedStateHandle
in einem zukünftigen Release im gemeinsamen Quellsatz zur Verfügung zu stellen. (I503ed, I48764, b/334076622)
Version 2.9.0-alpha03
18. September 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha03
wird veröffentlicht. Version 2.9.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Lifecycle
2.8.6
: Der Lint-FehlerNullSafeMutableLiveData
wurde verbessert, um die Unterstützung für Smartcasts zu optimieren und Fehlalarme zu vermeiden. (85fed6, b/181042665)
Aktualisierung der Abhängigkeiten
- Von Lifecycle
2.8.6
: Lifecycle Runtime Compose hängt jetzt von Compose Runtime1.7.1
ab. - Die Lebenszykluslaufzeit hängt jetzt von ProfileInstaller
1.4.0
ab.
Version 2.9.0-alpha02
4. September 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha02
wird veröffentlicht. Version 2.9.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Unter Lebenszyklus
2.8.5
: Aktualisieren Sie dieandroidx.lifecycle.ReportFragment
ProGuard-Regeln, um die Verschleierung zuzulassen . (ff898e1)
Externer Beitrag
- Verschieben Sie
androidx.compose.ui.platform.LocalLifecycleOwner
in den gemeinsamen Quellsatz (KMP). Vielen Dank an Ivan Matkov von JetBrains für den Beitrag. (8cd5d03) - Aus Lebenszyklus
2.8.5
: Der Erweiterungsdelegat SavedStateHandle.saveable unterstützt jetzt Nullwerte. Vielen Dank an Roman Kalukiewicz für den Beitrag. (0d78ea6)
Version 2.9.0-alpha01
7. August 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha01
wird veröffentlicht. Version 2.9.0-alpha01 enthält diese Commits.
Kotlin Multiplatform
lifecycle-testing
ist jetzt KMP-kompatibel. (Iea41e)- Unterstützung für
linuxArm64
-Kotlin-Multiplatform-Ziel hinzugefügt (I139d3, b/338268719)
Neue Funktionen
- Es ist ein neues KMP-Artefakt
androidx.lifecycle:lifecycle-viewmodel-testing
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 einer
ViewModel
mitViewModelProvider
ist jetzt threadsicher.@MainThread
-Anmerkungen wurden entfernt. (Ifd978, b/237006831)
API-Änderungen
- Fügen Sie die
CreationExtras.Key()
-Factory-Funktion hinzu, um das Erstellen anonymerCreationExtras.Key
-Objekte zu vereinfachen. (I970ee) CreationExtras
enthält jetzt kartenähnliche Operatorüberladungen, um eine idiomatische Bearbeitung von Inhalten in Kotlin zu ermöglichen. Sie ermöglicht die Verwendung vonin
,+=
und+
mitCreationExtras
. (Ib4353)CreationExtras
implementiert jetzt die Methodenequals
,hashCode
undtoString
. (Ib4353)NewInstanceFactory
ist jetzt auf JVM Desktop- und Android-Zielen verfügbar. (d3d0892)- Inline-Erweiterungseigenschaft, um die zugrunde liegende Anwendung in der Kotlin-Version 2.0 (I39df2) sicher freizugeben
Fehlerkorrekturen
- Die manuelle Kennzeichnung des Zugriffs auf neue Plattform-APIs wurde entfernt, da dies bei Verwendung von R8 mit AGP 7.3 oder höher (z.B. R8 Version 3.3) und für alle Builds bei Verwendung von AGP 8.1 oder höher (z.B. D8 Version 8.1) automatisch über die API-Modellierung erfolgt. Kunden, die AGP nicht verwenden, wird empfohlen, auf D8-Version 8.1 oder höher zu aktualisieren. Weitere Details findest du in diesem Artikel. (If6b4c, b/345472586)
Version 2.8
Version 2.8.7
30. Oktober 2024
androidx.lifecycle:lifecycle-*:2.8.7
wird veröffentlicht. Version 2.8.7 enthält diese Commits.
API-Änderungen
androidx.compose.ui.platform.LocalLifecycleOwner
ist jetzt im Common Source Set (KMP) verfügbar. (6a3f5b3)lifecycle-runtime-compose
:desktop
-Artefakte wurden entfernt und-jvmStubs
- und-linuxx64Stubs
-Artefakte hinzugefügt. Keines dieser Ziele ist zur Verwendung vorgesehen. Sie dienen als Platzhalter für die Arbeit mit Jetbrains Compose. (6a3f5b3)
Version 2.8.6
18. September 2024
androidx.lifecycle:lifecycle-*:2.8.6
wurde veröffentlicht. Version 2.8.6 enthält diese Commits.
Fehlerkorrekturen
- Der Lint-Fehler
NullSafeMutableLiveData
wurde verbessert, um die Unterstützung für intelligente Übergaben zu verbessern und Fehlalarme zu vermeiden. (85fed6, b/181042665)
Abhängigkeitsupdates
- Lifecycle Runtime Compose ist jetzt von Compose Runtime
1.7.1
abhängig
Version 2.8.5
4. September 2024
androidx.lifecycle:lifecycle-*:2.8.5
wird veröffentlicht. Version 2.8.5 enthält diese Commits.
Fehlerkorrekturen
- Aktualisieren Sie die
androidx.lifecycle.ReportFragment
ProGuard-Regeln, um die Verschleierung zuzulassen . (ff898e1)
Externer Beitrag
- Der
SavedStateHandle.saveable
-Erweiterungsdelegat unterstützt jetzt nullwertige Werte. Vielen Dank an Roman Kalukiewicz für den Beitrag. (0d78ea6)
Version 2.8.4
24. Juli 2024
androidx.lifecycle:lifecycle-*:2.8.4
wird veröffentlicht. Version 2.8.4 enthält diese Commits.
Fehlerkorrekturen
LiveData.asFlow()
verarbeitet jetzt korrekt Fälle, in denen der zurückgegebene Ablauf sofort abgeschlossen wird, nachdem ein Wert empfangen wurde, der bereits auf derLiveData
festgelegt wurde (z. B. bei Verwendung vontake(1)
). (I9c566)- Die Fertigstellung von
Lifecycle*Effect
ist jetzt idempotent. WennonStopOrDispose
aufgrund eines Lifecycle-Stopps aufgerufen wurde, wird er bei der Entsorgung nicht noch einmal aufgerufen, es sei denn, der Lifecycle kehrt wieder zuSTARTED
zurück. (I5f607, b/352364595)
Version 2.8.3
1. Juli 2024
androidx.lifecycle:lifecycle-*:2.8.3
wird veröffentlicht. Version 2.8.3 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem mit der Abwärtskompatibilität von Lifecycle 2.8 mit Compose 1.6.0 und niedriger bei der Verwendung von Code-Shrinking wurde behoben. (aosp/3133056, b/346808608)
Version 2.8.2
12. Juni 2024
androidx.lifecycle:lifecycle-*:2.8.2
wird veröffentlicht. Version 2.8.2 enthält diese Commits.
Fehlerkorrekturen
CompositionLocal LocalLifecycleOwner not present
Fehler bei der Verwendung von Lifecycle 2.8.X mit Compose 1.6.X oder niedriger behoben. Sie können Lifecycle 2.8.2 jetzt mit jeder Version von Compose verwenden, ohne dass Sie Umwege gehen müssen. (aosp/3105647, b/336842920)ViewModelProvider
stürzt nicht mehr ab, wenn frühere Versionen voncompileOnly
-Lebenszyklusabhängigkeiten mit Versionen 2.8 und höher 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
wurde veröffentlicht. Version 2.8.1 enthält diese Commits.
Fehlerkorrekturen
lifecycle-viewmodel-compose
hat jetzt nur noch eine gemeinsame Abhängigkeit voncompose-runtime
, wodurch die gemeinsame Abhängigkeit voncompose-ui
entfernt wird. Das Android-Artefakt behält aus Gründen der Kompatibilität seinecompose-ui
bei. (aosp/3079334, b/339562627)- Bei der
saveable
-Integration vonViewModel
mit Attributdelegierten wird jetzt der Klassenname als Teil des automatisch generierten Schlüssels verwendet, um Konflikte zu vermeiden, wenn mehrere Klassen dieselbeSavedStateHandle
verwenden. (aosp/3063463)
Version 2.8.0
14. Mai 2024
androidx.lifecycle:lifecycle-*:2.8.0
wird veröffentlicht. Version 2.8.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.7.0
LocalLifecycleOwner
wurde von der Compose-Benutzeroberfläche zulifecycle-runtime-compose
verschoben, damit die Compose-basierten Hilfs-APIs auch außerhalb der Compose-Benutzeroberfläche verwendet werden können.- Das
lifecycle-runtime-compose
-Artefakt enthält jetzt diedropUnlessResumed
- unddropUnlessStarted
-APIs, mit denen Sie Klicks oder andere Ereignisse aufzeichnen können, die auch nach dem Absinken desLifecycleOwner
unter den angegebenenLifecycle.State
auftreten. Sie kann beispielsweise zusammen mit Navigation Compose verwendet werden, um die Verarbeitung von Click-Events zu vermeiden, nachdem ein Wechsel zu einem anderen Bildschirm bereits begonnen hat:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
ViewModel.viewModelScope
ist jetzt ein überschreibbarer Konstruktorparameter, mit dem Sie Ihren eigenen Dispatcher undSupervisorJob()
einfügen oder den Standardwert überschreiben können, indem Sie die inrunTest
verfügbarebackgroundScope
verwenden. (I2817c, b/264598574)class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }
ViewModel
wurde in Kotlin neu geschrieben und verwendet jetztAutoClosable
anstelle vonCloseable
. Sie unterstützt jetzt das Hinzufügen vonAutoCloseable
-Objekten mit einerkey
, die das Abrufen übergetCloseable()
ermöglicht.Der Aufruf von
LifecycleStartEffect
undLifecycleResumeEffect
ohne Schlüssel führt jetzt zu einem Fehler. Dabei wird dieselbe Konvention wie bei derDisposableEffect
API angewendet, die diese APIs spiegeln.LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
wurde zugunsten vonLiveData.toPublisher(lifecycleOwner)
verworfen.Die
lifecycle-livedata-core-ktx
-Kotlin-Erweiterungen wurden in daslifecycle-livedata-core
-Modul verschoben.Der
NullSafeMutableLiveData
wurde überarbeitet, um viele falsch positive Ergebnisse zu vermeiden.
Lebenszyklus der Kotlin Multiplatform-Kompatibilität
Die wichtigsten Lifecycle APIs in Lifecycle
, LifecycleOwner
, LifecycleObserver
, Lifecycle.State
, Lifecycle.Event
und LifecycleRegistry
werden jetzt in Artefakten bereitgestellt, die mit Kotlin Multiplatform kompatibel sind.
Betroffene Artefakte:
lifecycle-common
verlagert die meisten APIs zucommon
und unterstützt neben Android auch jvm und iOS.lifecycle-runtime
verlagert die meisten APIs zucommon
und unterstützt neben Android auch jvm und iOS.lifecycle-runtime-ktx
ist jetzt leer, da alle APIs inlifecycle-runtime
verschoben wurden.lifecycle-runtime-compose
verlagert alle APIs zucommon
und stellt ein Android-Artefakt bereit, das der Multiplattformunterstützung vonandroidx.compose
entspricht.
ViewModel Kotlin Multiplatform Compatibility
Das lifecycle-viewmodel
-Artefakt und die APIs wie ViewModel
, ViewModelStore
, ViewModelStoreOwner
und ViewModelProvider
werden jetzt in Artefakten bereitgestellt, die mit Kotlin Multiplatform kompatibel sind.
Um dieser Änderung Rechnung zu tragen, gibt es für Methoden wie die auf ViewModelProvider
, die eine java.lang.Class<T>
als Argument erwarteten, jetzt eine entsprechende Methode, die eine kotlin.reflect.KClass<T>
erwartet.
Die Binärkompatibilität unter Android wurde beibehalten. Es gibt jedoch einige bemerkenswerte Änderungen, wenn die Android API-Oberfläche mit der gemeinsamen API-Oberfläche verglichen wird:
- Das Erstellen einer
ViewModelProvider
-Instanz erfolgt nun über dieViewModelProvider.create()
-Methoden, anstatt ihren Konstruktor direkt aufzurufen. ViewModelProvider.NewInstanceFactory
undViewModelProvider.AndroidViewModelFactory
sind nur auf Android-Geräten verfügbar.- Bei benutzerdefinierten Fabriken wird empfohlen,
ViewModelProvider.Factory
zu erweitern und diecreate
-Methode zu verwenden, die eineCreationExtras
annimmt, oder dieviewModelFactory
Kotlin DSL.
- Bei benutzerdefinierten Fabriken wird empfohlen,
- Wenn Sie
ViewModelProvider
ohne benutzerdefinierte Fabrik auf Nicht-JVM-Plattformen verwenden, führt dies zu einerUnsupportedOperationException
. Auf JVM-Plattformen wird die Kompatibilität durch Verwendung des ViewModel-Konstruktors ohne Argumente beibehalten, wenn keine benutzerdefinierte Factory angegeben wird. viewModelScope
wird auf Plattformen, auf denenDispatchers.Main
nicht verfügbar ist, aufEmptyCoroutineContext
zurückgesetzt (z.B. Linux).
Betroffene Artefakte:
lifecycle-viewmodel
verlagert die meisten APIs zucommon
und unterstützt neben Android auch jvm und iOS.lifecycle-viewmodel-ktx
ist jetzt leer, da alle APIs inlifecycle-viewmodel
verschoben wurden.lifecycle-viewmodel-compose
verlagert alle APIs zucommon
und stellt ein Android-Artefakt bereit, das der Multiplattformunterstützung vonandroidx.compose
entspricht.
Änderungen im Verhalten
- Bei
InitializerViewModelFactory
(einschließlich derviewModelFactory
-Builderfunktion) wird jetzt eineIllegalArgumentException
geworfen, wenn bereits eineinitializer
mit derselbenclazz: KClass<VM : ViewModel>
hinzugefügt wurde. (Ic3a36)
Bekannte Probleme
- Für
lifecycle-*:2.8.0
ist mindestens Compose-Version 1.7.0-alpha05 (b/336842920) erforderlich.
Version 2.8.0-rc01
1. Mai 2024
androidx.lifecycle:lifecycle-*:2.8.0-rc01
wird veröffentlicht. Version 2.8.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem das Baseline-Profil für
lifecycle-common
-Klassen nicht richtig gepackt wurde. Diese werden jetzt im AAR-Filelifecycle-runtime
verpackt. (aosp/3038274, b/322382422) - Eine unbeabsichtigte Änderung der Reihenfolge, in der
AutoCloseable
-Instanzen, die an ein ViewModel angehängt sind, gelöscht werden, wurde behoben. Die vorherige ReihenfolgeaddCloseable(String, AutoCloseable)
, dannaddClosable(AutoCloseable)
, dannonCleared()
wurde wiederhergestellt. (aosp/3041632) - Das Standardverhalten beim Erstellen von
viewModelScope
für native und JVM-Desktopumgebungen wurde verbessert. (aosp/3039221)
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
wurde 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 wird incommon
verschoben und es wird ein Android-Artefakt bereitgestellt, das der Multiplattform-Unterstützung fürandroidx.compose
entspricht. (If7a71, I4f4a0, b/331769623)
Version 2.8.0-alpha04
3. April 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha04
wird veröffentlicht. Version 2.8.0-alpha04 enthält diese Commits.
Neue Funktionen
- Das
lifecycle-viewmodel-compose
-Artefakt ist jetzt mit Kotlin Multiplatform kompatibel. Der Code wird incommon
verschoben und es wird ein Android-Artefakt bereitgestellt, das der plattformübergreifenden Unterstützung vonandroidx.compose
entspricht. Um dieser Änderung Rechnung zu tragen, akzeptiert die composableviewModel
-Methode jetzt zusätzlich zu einerjava.lang.Class
auch eineKClass
. (b/330323282)
Fehlerkorrekturen
NullSafeMutableLiveData
wurde refaktoriert, um viele falsch positive Ergebnisse zu vermeiden. (I2d8c1, Iafb18, I03463, I7ecef)
Aktualisierung der Abhängigkeit
- Das
lifecycle-viewmodel-compose
-Artefakt hängt jetzt von Compose 1.6.0 ab. - Der Lebenszyklus hängt jetzt vom Profile Installer 1.3.1 ab.
Version 2.8.0-alpha03
20. März 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha03
wurde veröffentlicht. Version 2.8.0-alpha03 enthält diese Commits.
Neue Funktionen
ViewModel.viewModelScope
ist jetzt ein überschreibbarer Konstruktorparameter, mit dem Sie Ihren eigenen Dispatcher undSupervisorJob()
einschleusen oder den Standardwert mithilfe der inrunTest
verfügbarenbackgroundScope
ü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 von 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 diese Änderung zu berücksichtigen, verfügen Methoden wie die unter ViewModelProvider
, die ein java.lang.Class<T>
-Objekt verwendet haben, nun über eine äquivalente Methode, die einen kotlin.reflect.KClass<T>
-Vorgang verwendet.
Die Binärkompatibilität unter Android wurde beibehalten. Es gibt jedoch einige bemerkenswerte Änderungen, wenn die Android API-Oberfläche mit der gemeinsamen API-Oberfläche verglichen wird:
- Das Erstellen einer
ViewModelProvider
-Instanz erfolgt nun über dieViewModelProvider.create()
-Methoden, anstatt ihren Konstruktor direkt aufzurufen. ViewModelProvider.NewInstanceFactory
undViewModelProvider.AndroidViewModelFactory
sind nur auf Android-Geräten verfügbar.- Bei benutzerdefinierten Fabriken wird empfohlen,
ViewModelProvider.Factory
zu erweitern und diecreate
-Methode zu verwenden, die eineCreationExtras
annimmt, oder dieviewModelFactory
Kotlin DSL.
- Bei benutzerdefinierten Fabriken wird empfohlen,
- Wenn Sie
ViewModelProvider
ohne benutzerdefinierte Fabrik auf Nicht-JVM-Plattformen verwenden, führt dies zu einerUnsupportedOperationException
. Auf JVM-Plattformen wird die Kompatibilität durch Verwendung des ViewModel-Konstruktors ohne Argumente beibehalten, wenn keine benutzerdefinierte Factory angegeben wird. viewModelScope
wird auf Plattformen, auf denenDispatchers.Main
nicht verfügbar ist (z.B.EmptyCoroutineContext
Linux).
Änderungen im Verhalten
- Bei
InitializerViewModelFactory
(einschließlich derviewModelFactory
-Builderfunktion) wird jetzt eineIllegalArgumentException
geworfen, wenn bereits eineinitializer
mit derselbenclazz: KClass<VM : ViewModel>
hinzugefügt wurde. (Ic3a36)
Fehlerkorrekturen
ViewModel.getCloseable
verarbeitet jetzt doppelte Schlüssel: Wenn derkey
bereits eineAutoCloseable
-Ressource zugewiesen ist, wird die alte Ressource sofort ersetzt und geschlossen. (Ibeb67)- Der Zugriff auf die
viewModelScope
einesViewModel
ist jetzt threadsicher. (If4766, b/322407038)
Externer Beitrag
LocalLifecycleOwner
wurde von der Compose-Benutzeroberfläche zu lifecycle-runtime-compose verschoben, damit die Compose-basierten Hilfs-APIs auch außerhalb der Compose-Benutzeroberfläche verwendet werden können. Vielen Dank an Jake Wharton für den Beitrag. (I6c41b, b/328263448)
Version 2.8.0-alpha02
21. Februar 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha02
wird veröffentlicht. Version 2.8.0-alpha02 enthält diese Commits.
Neue Funktionen
- Die APIs
dropUnlessResumed
unddropUnlessStarted
wurden hinzugefügt, mit denen Sie Klicks oder andere Ereignisse löschen können, die auftreten, selbst wenn derLifecycleOwner
unter den angegebenenLifecycle.State
fällt. Dies kann beispielsweise mit Navigation Compose verwendet werden, um Klickereignisse zu vermeiden, nachdem der Übergang zu einem anderen Bildschirm bereits begonnen hat:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
(Icba83, b/317230685)
Kotlin-Conversions
ViewModel
ist jetzt in Kotlin geschrieben (I16f26, b/214568825)- Die
lifecycle-viewmodel-ktx
-Codierungserweiterungen wurden jetzt in das Basis-Lebenszyklusmodul verschoben. (Id787b, b/274800183) - Die
lifecycle-runtime-ktx
-Kotlin-Erweiterungen wurden in das Basismodul für den Lebenszyklus verschoben. (Ic3686, b/274800183) - Die
lifecycle-livedata-core-ktx
-Codierungserweiterungen wurden jetzt in das Basis-Lebenszyklusmodul verschoben. (I54a3d, b/274800183)
Kotlin-Kompatibilität mit mehreren Plattformen
- Die wichtigsten Lebenszyklus-APIs in
Lifecycle
,LifecycleOwner
,LifecycleObserver
,Lifecycle.State
,Lifecycle.Event
undLifecycleRegistry
werden jetzt in Artefakten ausgeliefert, die mit Kotlin Multiplatform kompatibel sind. (b/317249252)
API-Änderungen
- Der Aufruf von
LifecycleStartEffect
undLifecycleResumeEffect
ohne Schlüssel führt jetzt zu einem Fehler. Dabei wird dieselbe Konvention wie bei derDisposableEffect
API angewendet, die diese APIs spiegeln. (Ib0e0c, b/323518079) - Für
ViewModel
wird jetztAutoCloseable
anstelle vonCloseable
verwendet. 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, der uns bei der Umstellung von Lifecycle auf Kotlin Multiplatform unterstützt hat. (aosp/2926690, I0c5ac, If445d)
Version 2.8.0-alpha01
24. Januar 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha01
wird veröffentlicht. Version 2.8.0-alpha01 enthält diese Commits.
Neue Funktionen
ViewModel
unterstützt jetzt das Hinzufügen vonCloseable
-Objekten mit einerkey
, über die sie übergetCloseable()
abgerufen werden können. (I3cf63)
Version 2.7
Version 2.7.0
10. Januar 2024
androidx.lifecycle:lifecycle-*:2.7.0
wurde veröffentlicht. Version 2.7.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.6.0
TestLifecycleOwner
enthält jetzt eine PausierungsfunktionsetCurrentState()
, die dafür sorgt, dass die Statusänderung und alleLifecycleObserver
-Callbacks abgeschlossen sind, bevor die Funktion zurückkehrt. Anders als beim direkten Festlegen dercurrentState
-Property wird hierrunBlocking
nicht verwendet. Daher kann die Funktion auch in einer Coroutine wie der vonrunTest
verwendet werden.- Die
LiveData
-Erweiterungen vonmap
undswitchMap
spiegeln jetzt das Verhalten vondistinctUntilChanged
wider: Wenn fürLiveData
einvalue
festgelegt ist, wird diemap
-/switchMap
-Funktion sofort aufgerufen, um denvalue
des zurückgegebenenLiveData
zu füllen. Dadurch wird sichergestellt, dass der Anfangswert bei Verwendung mitobserveAsState()
als Teil der ersten Komposition festgelegt wird. Das Beobachtungsverhalten ändert sich aber nicht. Aktualisierte Werte aus der QuelleLiveData
werden erst dann angewendet, wenn Sie mit der Beobachtung vonLiveData
beginnen. - In dieser Version wurde ein Problem behoben, bei dem benutzerdefinierte
Parcelable
-Klassen nach dem Beenden und Neustarten des Prozesses nicht richtig wiederhergestellt wurden.SavedStateHandle
Da vom Android-Framework Typinformationen verloren gehen, erfordern Arrays von benutzerdefinierten Parcelables zusätzliche Arbeit (manuelles Erstellen eines typisierten Arrays des richtigen Typs). In der Dokumentation zuget
,getLiveData
undgetStateFlow
wird diese Einschränkung jetzt ausdrücklich erwähnt. - Die ProGuard-Aufbewahrungsregeln, die mit
LifecycleObserver
verknüpft sind, wurden entfernt. Das bedeutet, dass für proguardierten Code, in dem APIs über Reflection verwendet werden sollen (z. B. mit der seit langem veralteten@OnLifecycleEvent
-Anmerkung), eigene Regeln für die Beibehaltung für den jeweiligen Anwendungsfall angegeben werden müssen.
Beobachtbarkeit von Lebenszyklusereignissen
- Alternativ zur Verwendung einer
LifecycleEventObserver
können Sie jetzt eineFlow
vonLifecycle.Event
über die ErweiterungsmethodeLifecycle.asFlow()
beobachten. - Jetpack Compose-Nutzer können jetzt
LifecycleEventEffect
verwenden, um Compose-Nebeneffekte basierend aufLifecycle.Event
auszuführen.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
viewModel.refreshData()
}
// …
}
- Jetpack Compose-Nutzer können
LifecycleStartEffect
undLifecycleResumeEffect
verwenden, um Ereignispaare zu verarbeiten – gestartet zu beendet bzw. fortgesetzt zu pausiert. Diese API entspricht der inDisposableEffect
und eignet sich für Fälle, in denen die Änderung, die beim Steigen des Status vorgenommen wird, beim Sinken des Status 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 bei Lebenszyklusereignissen ausführen.
Beobachtbarkeit des Lebenszyklusstatus
- Der aktuelle
Lifecycle.State
kann jetzt über dasLifecycle.currentStateFlow
-Attribut beobachtet werden. Dieses gibt einenStateFlow
zurück, bei dem dervalue
der aktuelleLifecycle.State
ist. - Jetpack Compose-Nutzer können die
Lifecycle.currentStateAsState()
-Erweiterung verwenden, umLifecycle.State
direkt als ComposeState
bereitzustellen. Dies entsprichtlifecycle.currentStateFlow.collectAsState()
und ist eine kürzere Alternative.
Weitere Informationen finden Sie unter Lebenszyklusereignisse mithilfe von Abläufen erfassen.
Version 2.7.0-rc02
13. Dezember 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc02
wird veröffentlicht. Version 2.7.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das benutzerdefinierte
Parcelable
-Klassen nach dem Beenden und Neustarten des Prozesses nicht richtig wiederhergestellt wurden.SavedStateHandle
Da die Typinformationen vom Android-Framework verloren gehen, erfordern Arrays von benutzerdefinierten Parcelables zusätzliche Arbeit (manuelles Erstellen eines typisierten Arrays des richtigen Typs). In der Dokumentation zuget
,getLiveData
undgetStateFlow
wird diese Einschränkung jetzt ausdrücklich erwähnt. (I0b55a)
Version 2.7.0-rc01
15. November 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc01
wurde veröffentlicht. Version 2.7.0-rc01 enthält diese Commits.
Fehlerkorrekturen
LifecycleStartEffect
undLifecycleResumeEffect
löschen und erstellen den Effektblock jetzt richtig, wenn sich dieLifecycleOwner
ä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.
- Positive Entwicklung der Betaversion, keine größeren Änderungen an dieser Release-Version.
Version 2.7.0-alpha03
18. Oktober 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha03
wird veröffentlicht. Version 2.7.0-alpha03 enthält diese Commits.
Neue Funktionen
lifecycle-runtime-testing
enthält jetzt eine neue Lint-Prüfung, um zu verhindern, dass dieLifecycle.State
derTestLifecycleOwner
über das FeldcurrentState
festgelegt wird, wenn sich der Code in einer Coroutine befindet. Bei der Lint-Prüfung wird jetzt das angehaltenesetCurrentState
vorgeschlagen, wodurchLifecycle.State
ohne Blockierung festgelegt werden kann. (Icf728, b/297880630)
Fehlerkorrekturen
- Es wurde ein Problem mit
LiveData.switchMap
behoben, bei dem die Rückgabe der gleichenLiveData
-Instanz sowohl beim ersten als auch bei einem nachfolgenden Aufruf verhindert wurde, dass dieLiveData
-Instanz als Quelle hinzugefügt wurde. (Ibedcba7)
Version 2.7.0-alpha02
6. September 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha02
wird veröffentlicht. Version 2.7.0-alpha02 enthält diese Commits.
Neue Funktionen
TestLifecycleOwner
enthält jetzt die SperrfunktionsetCurrentState()
, um Nutzern die Möglichkeit zu geben,TestLifecycleOwner
innerhalb einer Koroutine wie der vonrunTest
zu verwenden. (I329de, b/259344129)
API-Änderungen
- Alle Dateien aus den
lifecycle-livedata-ktx
-Modulen wurden in das Hauptmodullifecycle-livedata
verschoben. (I10c6f, b/274800183)
Verhaltensänderungen
- Mit den Erweiterungen
LiveData.map()
undLiveData.switchMap()
wird jetzt dievalue
der zurückgegebenenLiveData
festgelegt, wenn für die vorherigeLiveData
ein Wert festgelegt wurde. So wird sichergestellt, dass die Verwendung der resultierenden LiveData in Jetpack Compose in der ursprünglichen Zusammensetzung den richtigen Status hat. (I91d2b, b/269479952) - Die
addCloseable()
vonViewModel
schließt jetzt sofort dieCloseable
, wenn dieViewModel
bereits einen Anruf anonCleared()
erhalten hat. (I4712e, b/280294730)
Fehlerkorrekturen
- Lifecycle
2.6.2
: Ein Problem wurde behoben, durch dasSavedStateHandle
nach dem Ende des Prozesses nicht korrekt wiederhergestellt wurde, wenn der Status wiederhergestellt,save()
aufgerufen wurde, ohne den Status im übergeordnetenSavedStateRegistry
zu speichern, und der Status dann noch einmal wiederhergestellt wurde. Damit wird die Interaktion zwischenrememberSaveable
und „Navigation Compose“-NavHost
behoben. (aosp/2729289)
Version 2.7.0-alpha01
26. Juli 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha01
wird veröffentlicht. Version 2.7.0-alpha01 enthält diese Commits.
API-Änderungen
Lifecycle.State
ist jetzt überLifecycle.currentStateFlow
über Compose-beobachtbar.Lifecycle.currentStateFlow
gibt eineStateFlow
zurück, wobeivalue
die aktuelleLifecycle.State
ist. (Ib212d, b/209684871)Lifecycle.Event
können jetzt alsFlow
mitLifecycle.asFlow().
beobachtet werden (If2c0f, b/176311030)- Die
LifecycleResumeEffect
API wurde hinzugefügt, um Compose-SideEffect
s basierend aufLifecycle.Event.ON_RESUME
- undLifecycle.Event.ON_PAUSE
-Ereignis-Callbacks auszuführen. (I60386, b/235529345) - Die
LifecycleStartEffect
API wurde hinzugefügt, um Compose-SideEffect
s basierend aufLifecycle.Event.ON_START
- undLifecycle.Event.ON_STOP
-Ereignis-Callbacks auszuführen. (I5a8d1, b/235529345) - Die
LifecycleEventEffect
API wurde hinzugefügt, umSideEffect
-Kompositionen auf der Grundlage vonLifecycle.Event
auszuführen. (Ic9794, b/235529345) - Die Erweiterung „
Lifecycle.collectAsState()
“ wurde hinzugefügt, um „Lifecycle.State
“ direkt als „Schreiben“State
anzuzeigen. Dies entsprichtlifecycle.currentStateFlow.collectAsState()
und ist eine kürzere Alternative. (I11015, b/235529345)
Fehlerkorrekturen
- Die
LiveData.distinctUntilChanged()
-Erweiterung setzt jetzt denvalue
der zurückgegebenenLiveData
, wenn für die vorherigeLiveData
ein Wert festgelegt wurde. Das Beobachtungsverhalten ändert sich dadurch nicht. Aktualisierte Werte aus der QuelleLiveData
werden erst dann angewendet, wenn Sie mit der Beobachtung des vondistinctUntilChanged()
zurückgegebenenLiveData
beginnen. (Ib482f) - Die ProGuard-Aufbewahrungsregeln, die mit
LifecycleObserver
verknüpft sind, wurden entfernt. Das bedeutet, dass für proguardierten Code, der APIs über Reflection verwenden soll, eigene Regeln für den jeweiligen Anwendungsfall festgelegt werden müssen. (Ia12fd)
Version 2.6
Version 2.6.2
6. September 2023
androidx.lifecycle:lifecycle-*:2.6.2
wird veröffentlicht. Version 2.6.2 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem
SavedStateHandle
nach dem Beenden des Prozesses nicht korrekt wiederhergestellt wurde, wenn der Status wiederhergestellt wurde,save()
aufgerufen wurde, ohne den Status im übergeordnetenSavedStateRegistry
zu speichern, und der Status dann noch einmal wiederhergestellt wurde. Dadurch wird die Interaktion zwischenrememberSaveable
undNavHost
von Navigation Compose korrigiert. (aosp/2729289)
Version 2.6.1
22. März 2023
androidx.lifecycle:lifecycle-*:2.6.1
wurde veröffentlicht. Version 2.6.1 enthält diese Commits.
Abhängigkeitsupdates
lifecycle-viewmodel-savedstate
ist jetzt von SavedState1.2.1
abhängig. (cd7251)- Der Lebenszyklus hängt jetzt von ProfileInstaller
1.3.0
ab. (f9d30b)
Version 2.6.0
8. März 2023
androidx.lifecycle:lifecycle-*:2.6.0
wurde veröffentlicht. Version 2.6.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.5.0
LiveData
enthält jetzt eine neueisInitialized
-Eigenschaft, die angibt, ob fürLiveData
jemals ein expliziter Wert festgelegt wurde. So können Sie unterscheiden, obliveData.value
null
zurückgibt, weil noch kein Wert festgelegt wurde, oder ob ein expliziternull
-Wert festgelegt wurde.MediatorLiveData
enthält jetzt einen Konstruktor zum Festlegen eines Anfangswerts.- Es wurde eine neue Erweiterung für
StateFlow
undFlow
voncollectAsStateWithLifecycle()
hinzugefügt, die Daten aus Abläufen erfasst und den aktuellen Wert auf Lifecycle-konforme Weise als Compose-Status darstellt. Lifecycle.launchWhenX
- undLifecycle.whenX
-Methoden wurden eingestellt, da die Verwendung eines Pausierungs-Dispatchers in einigen Fällen zu verschwendetem Ressourcenverbrauch führen kann. Wir empfehlen,Lifecycle.repeatOnLifecycle
zu verwenden. Weitere Informationen dazu, warum das Aufheben der Sperrung für eine einzelne Aufgabe prinzipiell unsicher ist, finden Sie hier.- Kotlin-Konvertierung: Eine große Anzahl von Lifecycle-Klassen wurde in Kotlin konvertiert. Alle konvertierten Klassen behalten ihre Binärkompatibilität mit früheren Versionen. Bei den folgenden Klassen wurden nicht mit der Quelle kompatible Änderungen an Klassen vorgenommen, die in Kotlin geschrieben wurden:
ViewTreeLifecycleOwner
,LiveDataReactiveStreams
,HasDefaultViewModelProviderFactory
,ViewTreeViewModelStoreOwner
,Transformations
,ViewModelStoreOwner
,LifecycleOwner
In der folgenden Tabelle finden Sie die Quell-Conversions für die neue Version des Lebenszyklus.
Lebenszyklus 2.5 | Lebenszyklus 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 Nullbarkeit der
onChanged
-Methode einer in Kotlin erstelltenObserver
stimmt jetzt mit der Nullbarkeit des generischen Typs überein. WennObserver.onChanged()
einen typlosen Wert akzeptieren soll, müssen SieObserver
mit einem typlosen Wert instanziieren. - Diese Klassen wurden ebenfalls in Kotlin konvertiert, sind aber weiterhin mit der Quelle kompatibel:
DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
,LifecycleRegistry
,LifecycleObserver
,ViewModelStore
,AndroidViewModel
,AbstractSavedStateViewModelFactory
,LifecycleService
,ServiceLifecycleDispatcher
undProcessLifecycleOwner
Version 2.6.0-rc01
22. Februar 2023
androidx.lifecycle:lifecycle-*:2.6.0-rc01
wird veröffentlicht. Version 2.6.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Die
LiveData.distinctUntilChanged()
-Erweiterung setzt jetzt denvalue
der zurückgegebenenLiveData
, wenn für die vorherigeLiveData
ein Wert festgelegt wurde. Dies ändert nichts am Beobachtungsverhalten. Aktualisierte Werte aus der QuelleLiveData
gelten weiterhin erst, wenn Sie die vondistinctUntilChanged()
zurückgegebenenLiveData
beobachten. (Ib482f)
Version 2.6.0-beta01
8. Februar 2023
androidx.lifecycle:lifecycle-*:2.6.0-beta01
wird veröffentlicht. Version 2.6.0-beta01 enthält diese Commits.
Kotlin-Conversions
LifecycleOwner
wird jetzt in Kotlin geschrieben. Das ist eine nicht mit der Quelle kompatible Änderung für in Kotlin geschriebene Klassen. Sie müssen jetzt dielifecycle
-Eigenschaft überschreiben, anstatt die vorherigegetLifecycle()
-Funktion zu implementieren. (I75b4b, b/240298691)ViewModelStoreOwner
ist jetzt in Kotlin. Diese Änderung ist nicht mit der Quelle kompatibel für Klassen, die in Kotlin geschrieben wurden. Sie müssen jetzt das AttributviewModelStore
überschreiben, anstatt die vorherigegetViewModelStore()
-Funktion zu implementieren. (I86409, b/240298691)- Die Kotlin-Erweiterung für
LifecycleOwner
, die das FeldlifecycleScope
bereitstellt, wurde vonlifecycle-runtime-ktx
in daslifecycle-common
-Artefakt verschoben. (I41d78, b/240298691) - Die Kotlin-Erweiterung für
Lifecycle
, die das FeldcoroutineScope
bereitstellt, wurde in das Artefaktlifecycle-common
vonlifecycle-runtime-ktx
verschoben. (Iabb91, b/240298691)
Version 2.6.0-alpha05
25. Januar 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha05
wird veröffentlicht. Version 2.6.0-alpha05 enthält diese Commits.
Kotlin-Conversions
Transformations
ist jetzt in Kotlin geschrieben. Dies ist eine nicht kompatible Quellcodeänderung für Kotlin-Klassen, in denen direkt Syntax wieTransformations.map
verwendet wurde. Kotlin-Code muss jetzt die Syntax der Kotlin-Erweiterungsmethode verwenden, die zuvor nur bei Verwendung vonlifecycle-livedata-ktx
verfügbar war. Bei Verwendung der Programmiersprache Java werden die Versionen dieser Methoden, die eineandroidx.arch.core.util.Function
-Methode verwenden, verworfen und durch die Versionen mit einer Kotlin-Function1
ersetzt. Durch diese Änderung wird die Kompatibilität der Binärprogramme beibehalten. (I8e14f)ViewTreeViewModelStoreOwner
ist jetzt in Kotlin geschrieben. Das ist eine nicht mit der Quelle kompatible Änderung für Klassen, die in Kotlin geschrieben sind. Sie müssen jetzt die Kotlin-Erweiterungsmethoden fürView
vonandroidx.lifecycle.setViewTreeViewModelStoreOwner
undandroidx.lifecycle.findViewTreeViewModelStoreOwner
direkt importieren und verwenden, um einen zuvor festgelegten Eigentümer festzulegen und zu finden. Dies ist binärkompatibel und bleibt für Implementierungen, die in der Programmiersprache Java geschrieben sind, quellkompatibel. (Ia06d8, Ib22d8, b/240298691)- Die
HasDefaultViewModelProviderFactory
-Schnittstelle ist jetzt in Kotlin geschrieben. Dies ist eine nicht mit der Quelle kompatible Änderung für in Kotlin geschriebene Klassen. Sie müssen jetzt die EigenschaftendefaultViewModelProviderFactory
unddefaultViewModelCreationExtras
überschreiben, anstatt die vorherigen entsprechenden Funktionen zu implementieren. (Iaed9c, b/240298691) Observer
ist jetzt in Kotlin geschrieben. Für dieonChanged()
-Methode wird jetzt der Namevalue
für den Parameter verwendet. (Iffef2, I4995e, b/240298691)AndroidViewModel
,AbstractSavedStateViewModelFactory
,LifecycleService
,ServiceLifecycleDispatcher
undProcessLifecycleOwner
sind jetzt in Kotlin geschrieben (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691)
Version 2.6.0-alpha04
11. Januar 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha04
wird veröffentlicht. Version 2.6.0-alpha04 enthält diese Commits.
Neue Funktionen
LiveData
enthält jetzt eine neueisInitialized
-Eigenschaft, die angibt, ob fürLiveData
jemals ein expliziter Wert festgelegt wurde. So können Sie unterscheiden, obliveData.value
null
zurückgibt, weil noch kein Wert festgelegt wurde, oder ob ein expliziternull
-Wert festgelegt wurde. (Ibd018)
API-Änderungen
- Die
collectAsStateWithLifecycle()
APIs vonlifecycle-runtime-compose
befinden sich nicht mehr im experimentellen Status. (I09d42, b/258835424) Lifecycle.launchWhenX
- undLifecycle.whenX
-Methoden wurden eingestellt, da die Verwendung eines pausierten Disponenten in einigen Fällen zur Verschwendung von Ressourcen führen kann. Wir empfehlen,Lifecycle.repeatOnLifecycle
zu verwenden. (Iafc54, b/248302832)
Kotlin-Conversions
ViewTreeLifecycleOwner
ist jetzt in Kotlin geschrieben. Diese Änderung ist nicht mit der Quelle kompatibel für die in Kotlin geschriebenen Klassen. Sie müssen jetzt die Kotlin-Erweiterungsmethoden vonView
vonandroidx.lifecycle.setViewTreeLifecycleOwner
undandroidx.lifecycle.findViewTreeLifecycleOwner
direkt importieren und verwenden, um einen zuvor festgelegten Inhaber festzulegen und zu finden. Dadurch wird die vorherige Kotlin-Erweiterung inlifecycle-runtime-ktx
ersetzt. Dies ist binärkompatibel und bleibt für Implementierungen, die in der Programmiersprache Java geschrieben sind, auch weiterhin quellkompatibel. (I8a77a, I5234e, b/240298691)LiveDataReactiveStreams
ist jetzt in Kotlin geschrieben. Die Kotlin-Erweiterungen, die zuvor inlifecycle-reactivestreams-ktx
enthalten waren, wurden in das Modullifecycle-reactivestreams
verschoben und sind jetzt die primäre Oberfläche für in Kotlin geschriebenen Code. Dies ist eine nicht mit der Quelle kompatible Änderung für in Kotlin geschriebenen Code, wenn Sie die Kotlin-Erweiterungsmethoden-APIs noch nicht verwendet haben. (I2b1b9, I95d22, b/240298691)DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
,LifecycleRegistry
,LifecycleObserver
undViewModelStore
werden jetzt in Kotlin geschrieben (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691)
Fehlerkorrekturen
SavedStateHandle
stürzt nicht mehr mit einemClassCastException
ab, wennget()
mit dem falschen Klassentyp aufgerufen wird. (I6ae7c)
Version 2.6.0-alpha03
24. Oktober 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha03
wird veröffentlicht. Version 2.6.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das Einschränkungen zwischen verschiedenen Lebenszyklusmodulen nicht wie vorgesehen funktionierten. (I18d0d, b/249686765)
- Von
LifecycleRegistry.moveToState()
ausgelöste Fehler enthalten jetzt hilfreichere Fehlermeldungen, die Entwickler über die Komponente informieren, die den Fehler verursacht. (Idf4b2, b/244910446)
Version 2.6.0-alpha02
7. September 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha02
wurde veröffentlicht. Version 2.6.0-alpha02 enthält diese Commits.
API-Änderungen
MediatorLiveData
enthält jetzt einen Konstruktor zum Festlegen eines Anfangswerts. (Ib6cc5, b/151244085)
Fehlerkorrekturen
Lifecycle
-Artefakte enthalten jetzt Einschränkungen, die dafür sorgen, dass alle voneinander abhängigen Lebenszyklus-Artefakte dieselbe Version verwenden. Andere Abhängigkeiten werden bei einem Upgrade automatisch aktualisiert. b/242871265FlowLiveData.asFlow()
erstellt jetzt einecallbackFlow
, anstatt seine eigeneChannel
-Implementierung zu verwenden, um für Threadsicherheit und Kontexterhaltung zu sorgen. (I4a8b2, b/200596935)- Die
asLiveData
-Funktion vonFlowLiveData
behält jetzt den Anfangswert vonStateFlow
bei, wenn das neueLiveData
-Objekt erstellt wird. (I3f530, b/157380488) - Aus Lebenszyklus
2.5.1
: Bei benutzerdefinierten Implementierungen vonAndroidViewModelFactory
wird die Funktioncreate(modelClass)
jetzt korrekt aufgerufen, wenn der zustandsorientierte Konstruktor mitLifecycle
ab Version 2.4 (I5b315, b/238011621) verwendet wird.
Version 2.6.0-alpha01
29. Juni 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha01
wird veröffentlicht. Version 2.6.0-alpha01 enthält diese Commits.
Neue Funktionen
- Es wurde eine neue Erweiterung für
StateFlow
undFlow
voncollectAsStateWithLifecycle
hinzugefügt, die Daten aus Abläufen erfasst und den aktuellen Wert auf Lifecycle-konforme Weise als „Compose State“ darstellt. Der Datenfluss wird erfasst und die neue Emission wird auf den Wert des Status festgelegt, wenn sich der Lebenszyklus mindestens in einer bestimmtenLifecycle.State
befindet. Wenn der Lebenszyklus unter diesenLifecycle.State
fällt, wird die Ablauferfassung 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
wurde veröffentlicht. Version 2.5.1 enthält diese Commits.
Fehlerkorrekturen
- Bei benutzerdefinierten Implementierungen von
AndroidViewModelFactory
wird diecreate(modelClass)
-Funktion jetzt korrekt aufgerufen, wenn der zustandsorientierteAndroidViewModelFactory
-Konstruktor mitLifecycle
2.4 oder höher verwendet wird. (I5b315, b/238011621)
Version 2.5.0
29. Juni 2022
androidx.lifecycle:lifecycle-*:2.5.0
wird veröffentlicht. Version 2.5.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.4.0
SavedStateHandle
bietet jetzt einegetStateFlow()
API, die als Alternative zur Verwendung vonLiveData
einen Kotlin-StateFlow
zum Überwachen von Wertänderungen zurückgibt.ViewModel CreationExtras: Beim Schreiben einer benutzerdefinierten
ViewModelProvider.Factory
mussAndroidViewModelFactory
oderAbstractSavedStateViewModelFactory
nicht mehr erweitert werden, um Zugriff auf eineApplication
oderSavedStateHandle
zu erhalten. Stattdessen werden diese Felder allenViewModelProvider.Factory
-Unterklassen alsCreationExtras
über die neue Überladung voncreate
zur Verfügung gestellt:create(Class<T>, CreationExtras)
. Diese Extras werden automatisch von Ihrer Aktivität oder Ihrem Fragment bereitgestellt, wenn Sie Aktivität1.5.0
bzw. Fragment1.5.0
verwenden.class CustomFactory : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T { return when (modelClass) { HomeViewModel::class -> { // Get the Application object from extras val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY]) // Pass it directly to HomeViewModel HomeViewModel(application) } DetailViewModel::class -> { // Create a SavedStateHandle for this ViewModel from extras val savedStateHandle = extras.createSavedStateHandle() DetailViewModel(savedStateHandle) } else -> throw IllegalArgumentException("Unknown class $modelClass") } as T } }
lifecycle-viewmodel
bietet jetzt eineviewModelFactory
Kotlin-DSL, mit der Sie IhreViewModelProvider.Factory
anhand eines oder mehrerer Lambda-Initialisierer definieren können, jeweils einer für jedeViewModel
-Klasse, die Ihre benutzerdefinierte Fabrik unterstützt, wobeiCreationExtras
als primäre Datenquelle verwendet wird.val customFactory = viewModelFactory { // The return type of the lambda automatically sets what class this lambda handles initializer { // Get the Application object from extras provided to the lambda val application = checkNotNull(get(ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY)) HomeViewModel(application) } initializer { val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) } }
lifecycle-viewmodel-compose
bietet jetzt eineviewModel()
API, die eine Lambda-Fabrik zum Erstellen einerViewModel
-Instanz verwendet, ohne dass eine benutzerdefinierteViewModelProvider.Factory
erstellt werden muss.// Within a @Composable, you can now skip writing a custom Factory // and instead write a lambda to do the initialization of your ViewModel val detailViewModel = viewModel { // This lambda is only called the first time the ViewModel is created // and all CreationExtras are available inside the lambda val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) }
Integration von SavedStateHandle Compose Saver: Das
lifecycle-viewmodel-compose
-Artefakt enthält jetzt neue experimentelle APIs inSavedStateHandle.saveable
, die einrememberSaveable
-ähnliches Verhalten ermöglichen, das vomSavedStateHandle
eines ViewModels 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 denen Sie derViewModel
ein oder mehrereCloseable
-Objekte hinzufügen können, die geschlossen werden, wenn dieViewModel
gelöscht wird, ohne dass inonCleared()
manuelle Arbeit erforderlich ist.Wenn Sie beispielsweise einen coroutine-Scope erstellen möchten, den Sie in ein ViewModel einschleusen, aber über Tests steuern können, können Sie eine
CoroutineScope
erstellen, dieCloseable
implementiert:class CloseableCoroutineScope( context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate ) : Closeable, CoroutineScope { override val coroutineContext: CoroutineContext = context override fun close() { coroutineContext.cancel() } }
Diese kann dann im Konstruktor von
ViewModel
verwendet werden, wobei die Lebensdauer vonviewModelScope
beibehalten wird:class TestScopeViewModel( val customScope: CloseableCoroutineScope = CloseableCoroutineScope() ) : ViewModel(customScope) { // You can now use customScope in the same way as viewModelScope }
Geändertes Verhalten
- Wenn Sie versuchen, die
Lifecycle.State
vonINITIALIZED
nachDESTROYED
zu verschieben, wird jetzt immer eineIllegalStateException
geworfen, unabhängig davon, ob dieLifecycle
einen angehängten Beobachter hat. LifecycleRegistry
löscht jetzt seine Beobachter, wenn der StatusDESTROYED
erreicht wird.
Version 2.5.0-rc02
15. Juni 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc02
wird veröffentlicht. Version 2.5.0-rc02 enthält diese Commits.
Fehlerkorrekturen
ViewModelProvider
stürzt nicht mehr ab, wenn frühere Versionen von „compileOnly“-Lebenszyklusabhängigkeiten mit Versionen 2.5 und höher kombiniert werden. (I81a66, b/230454566)
Version 2.5.0-rc01
11. Mai 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc01
wird veröffentlicht. Version 2.5.0-rc01 enthält diese Commits.
Fehlerkorrekturen
MediatorLiveData.addSource()
wirft jetzt eineNullPointerException
aus, wenn einenull
-Quelle übergeben wird, anstatt dienull
-Quelle an Beobachter weiterzuleiten.(Ibd0fb, b/123085232)
Version 2.5.0-beta01
20. April 2022
androidx.lifecycle:lifecycle-*:2.5.0-beta01
wird veröffentlicht. Version 2.5.0-beta01 enthält diese Commits.
API-Änderungen
- Es wurden
SavedStateHandle.saveable
-Attributdelegierte hinzugefügt, um Attributnamen als Schlüssel zum Speichern des Status in derSavedStateHandle
zu verwenden (I8bb86, b/225014345)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem das Verschachteln einer
NavHost
in einer anderenNavHost
auf einem nicht primären Tab der unteren Navigationsleiste bei Verwendung mehrerer Backstacks zu einerIllegalStateException
führte. (I11bd5, b/228865698)
Version 2.5.0-alpha06
6. April 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha06
wurde veröffentlicht. Version 2.5.0-alpha06 enthält diese Commits.
Neue Funktionen
- Fügen Sie
SavedStateHandle.saveable
die experimentelleMutableState
-Überlastung zur Parität mitrememberSaveable
hinzu (I38cfe, b/224565154).
API-Änderungen
CreationExtras
ist jetzt abstrakt und nicht versiegelt. (Ib8a7a)
Fehlerkorrekturen
- Ein
IllegalStateException: Already attached to lifecycleOwner
-Fehler, der durchSavedStateHandleController
verursacht wurde, wurde behoben. (I7ea47, b/215406268)
Version 2.5.0-alpha05
23. März 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha05
wird veröffentlicht. Version 2.5.0-alpha05 enthält diese Commits.
Neue Funktionen
- Das Modul
lifecycle-viewmodel-compose
bietet jetztSavedStateHandleSaver
, eine experimentelle API, die sicherstellt, dass die Werte in einerSavedStateHandle
korrekt mit dem gespeicherten Instanzstatus integriert werden, denrememberSaveable
verwendet. (Ia88b7, b/195689777)
API-Änderungen
- Ein Kompatibilitätsproblem mit Lifecycle 2.3 und neueren Lifecycle-Versionen in Java wurde behoben. (I52c8a, b/219545060)
Fehlerkorrekturen
SavedStateViewFactory
unterstützt jetzt die Verwendung vonCreationExtras
, auch wenn es mit einerSavedStateRegistryOwner
initialisiert wurde. Wenn Extras angegeben werden, werden die initialisierten Argumente ignoriert. (I6c43b, b/224844583)
Version 2.5.0-alpha04
9. März 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha04
wird veröffentlicht. Version 2.5.0-alpha04 enthält diese Commits.
API-Änderungen
SavedStateHandle
bietet jetzt einegetStateFlow()
API, die einen Kotlin-StateFlow
zum Überwachen von Wertänderungen zurückgibt, als Alternative zur Verwendung vonLiveData
. (Iad3ab, b/178037961)
Version 2.5.0-alpha03
23. Februar 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha03
wird veröffentlicht. Version 2.5.0-alpha03 enthält diese Commits.
Neue Funktionen
- Es wurde eine
addCloseable()
API und eine neue Konstruktorüberladung hinzugefügt, mit der Sie derViewModel
ein oder mehrereCloseable
-Objekte hinzufügen können, die geschlossen werden, wenn dieViewModel
gelöscht wird, ohne dass inonCleared()
manuelle Arbeit erforderlich ist. (I55ea0) lifecycle-viewmodel
bietet jetzt eineInitializerViewModelFactory
, mit der Sie Lambda für die Verarbeitung bestimmterViewModel
-Klassen hinzufügen können, wobeiCreationExtras
als primäre Datenquelle verwendet wird. (If58fc, b/216687549)lifecycle-viewmodel-compose
bietet jetzt eineviewModel()
API, die eine Lambda-Fabrik zum Erstellen einerViewModel
-Instanz verwendet, ohne dass eine benutzerdefinierteViewModelProvider.Factory
erstellt werden muss. (I97fbb, b/216688927)
API-Änderungen
- Sie können jetzt über
lifecycle-viewmodel-compose
einViewModel
mitCreationExtras
erstellen. (I08887, b/216688927)
Geändertes Verhalten
- Wenn Sie versuchen, die
Lifecycle.State
vonINITIALIZED
nachDESTROYED
zu verschieben, wird jetzt immer eineIllegalStateException
geworfen, unabhängig davon, ob dieLifecycle
einen angehängten Beobachter hat. (I7c390, b/177924329) LifecycleRegistry
löscht jetzt seine Beobachter, wenn der StatusDESTROYED
erreicht wird. (I4f8dd, b/142925860)
Version 2.5.0-alpha02
9. Februar 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha02
wird veröffentlicht. Version 2.5.0-alpha02 enthält diese Commits.
API-Änderungen
SavedStateHandle
undSavedStateViewModelFactory
wurden in Kotlin konvertiert. Dadurch wurde die Nullbarkeit der Gattungen in beiden Klassen verbessert. (Ib6ce2, b/216168263, I9647a, b/177667711)- Der Funktionsparameter
LiveData
switchMap
kann jetzt eine Ausgabe enthalten, für die Nullwerte zulässig sind. (I40396, b/132923666) - Die
LiveData
-ktx-Erweiterungen sind jetzt mit@CheckResult
gekennzeichnet, um sicherzustellen, dass das Ergebnis beim Aufrufen dieser Funktionen verwendet wird. (Ia0f05, b/207325134)
Geändertes Verhalten
SavedStateHandle
speichert den Standardwert jetzt korrekt, wenn kein Wert für den angegebenen Schlüssel vorhanden ist. (I1c6ce, b/178510877)
Fehlerkorrekturen
- Seit Lebenszyklus
2.4.1
:lifecycle-process
wurde so aktualisiert, dass es von Startup 1.1.1 abhängt. So sind standardmäßig Fehlerkorrekturen verfügbar, die verhindern, dassProcessLifecycleInitializer
eineStartupException
auslöst. (Ib01df, b/216490724) - Es gibt jetzt eine verbesserte Fehlermeldung, wenn benutzerdefinierte
AndroidViewModel
-Klassen Parameter in der falschen Reihenfolge haben und versucht wird, eineViewModel
zu erstellen. (I340f7, b/177667711) - Sie können jetzt mithilfe von
CreationExtras
ein Ansichtsmodell mit derAndroidViewModelFactory
erstellen, ohne eine Anwendung festzulegen. (I6ebef, b/217271656)
Version 2.5.0-alpha01
26. Januar 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha01
wurde veröffentlicht. Version 2.5.0-alpha01 enthält diese Commits.
ViewModel CreationExtras
Mit dieser Version legen wir den Grundstein für die Umstrukturierung des Aufbaus von ViewModel
. Statt eines starren Satzes von abgeleiteten Klassen von ViewModelProvider.Factory
, die jeweils zusätzliche Funktionen hinzufügen (und einen Application
-Konstruktorparameter über AndroidViewModelFactory
zulassen und einen SavedStateHandle
-Konstruktorparameter über SavedStateViewModelFactory
und AbstractSavedStateViewModelFactory
usw. zulassen), bewegen wir uns nun auf eine Welt zustandsloser Fabriken um, die auf einem neuen Konzept namens CreationExtras
basieren. (Ia7343, b/188691010, b/188541057)
Durch diese Änderung werden von ViewModelProvider
keine direkten Aufrufe der vorherigen create(Class<T>)
-Methode von ViewModelProvider.Factory
mehr ausgeführt. Stattdessen wird eine neue Überladung von create
aufgerufen: create(Class<T>, CreationExtras)
. Das bedeutet, dass jede direkte Implementierung der ViewModelProvider.Factory
-Instanz jetzt Zugriff auf alle diese neuen CreationExtras
hat:
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY
: DieserString
bietet Zugriff auf den benutzerdefinierten Schlüssel, den du anViewModelProvider.get()
übergeben hast.ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY
bietet Zugriff auf die KlasseApplication
.SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY
bietet Zugriff auf dieSavedStateRegistryOwner
, die zum Erstellen dieses ViewModel verwendet wird.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY
bietet Zugriff auf dieViewModelStoreOwner
, die zum Erstellen dieses ViewModels verwendet wird.SavedStateHandleSupport.DEFAULT_ARGS_KEY
bietet Zugriff auf dieBundle
der Argumente, die zum Erstellen einerSavedStateHandle
verwendet werden sollen.
Diese Extras stehen standardmäßig zur Verfügung, wenn Sie Aktivität 1.5.0-alpha01
, Fragment 1.5.0-alpha01
und Navigation 2.5.0-alpha01
verwenden. Wenn Sie eine ältere Version dieser Bibliotheken verwenden, ist CreationExtras
leer. Alle vorhandenen Unterklassen von ViewModelProvider.Factory
wurden neu geschrieben, um sowohl den bisherigen Erstellungspfad zu unterstützen, der von älteren Versionen dieser Bibliotheken verwendet wird, als auch den CreationExtras
-Pfad, der künftig verwendet wird.
Mit diesen CreationExtras
können Sie eine ViewModelProvider.Factory
erstellen, die genau die benötigten Informationen an jede ViewModel
übergibt, ohne sich auf eine strenge Hierarchie von abgeleiteten Factory-Klassen zu verlassen:
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 eine SavedStateHandle
nur für das eine ViewModel zu erstellen, das sie benötigt. (Ia6654, b/188541057)
Benutzerdefinierte CreationExtras
können bereitgestellt werden, indem getDefaultViewModelCreationExtras()
in ComponentActivity
oder Fragment
überschrieben wird. So stehen sie für die benutzerdefinierte ViewModelProvider.Factory
als integrierte Form der unterstützten Insertion zur Verfügung. Diese Extras werden Ihrer benutzerdefinierten Factory automatisch zur Verfügung gestellt, wenn Sie sie direkt mit ViewModelProvider
oder mit den Kotlin-Property-Erweiterungen by viewModels()
und by activityViewModels()
verwenden. (I79f2b, b/207012584, b/207012585, b/207012490)
Fehlerkorrekturen
- Es wurde ein Problem behoben, durch das der für
SavedStateHandle
angegebene Standardwert nach einem Tod oder einer Neuerstellung von Prozessen wieder angezeigt wurde, auch wenn er explizit ausSavedStateHandle
entfernt wurde. Daher werden Standardwerte und wiederhergestellte Werte inSavedStateHandle
nicht mehr zusammengeführt. Stattdessen werden nur die wiederhergestellten Werte als vertrauenswürdige Quelle verwendet. (I53a4b)
Version 2.4
Version 2.4.1
9. Februar 2022
androidx.lifecycle:lifecycle-*:2.4.1
wurde veröffentlicht. Version 2.4.1 enthält diese Commits.
Fehlerkorrekturen
- Backport aus Lifecycle
2.5.0-alpha01
: Es wurde ein Problem behoben, durch das der für eineSavedStateHandle
angegebene Standardwert nach dem Beenden und Neustarten des Prozesses wieder angezeigt wurde, auch wenn er ausdrücklich aus derSavedStateHandle
entfernt wurde. Daher werden Standardwerte und wiederhergestellte Werte inSavedStateHandle
nicht mehr zusammengeführt. Stattdessen werden nur die wiederhergestellten Werte als vertrauenswürdige Quelle verwendet. (I53a4b) lifecycle-process
hängt jetzt von Androidx Startup 1.1.1 ab, wodurch eine Regression behoben wurde, bei der die Verwendung vonProcessLifecycleInitializer
zu einemStartupException
führte. (b/216490724)
Version 2.4.0
27. Oktober 2021
androidx.lifecycle:lifecycle-*:2.4.0
wird veröffentlicht. Version 2.4.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.3.0
@OnLifecycleEvent
wurde eingestellt. Stattdessen solltenLifecycleEventObserver
oderDefaultLifecycleObserver
verwendet werden.- Die Mediathek
androidx.lifecycle:lifecycle-viewmodel-compose
wurde hinzugefügt. Es bietetviewModel()
undLocalViewModelStoreOwner
.- Funktionsgefährdende Änderung:
ViewModelProvider
wurde in Kotlin neu geschrieben. Bei derViewModelProvider.Factory.create
-Methode sind keine typlosen Elemente mehr zulässig.
- Funktionsgefährdende Änderung:
- Neue Koroutines API wurde
androidx.lifecycle:lifecycle-runtime-ktx
hinzugefügt: Lifecycle.repeatOnLifecycle
, API, die einen Codeblock in einer Coroutine ausführt, wenn sich der Lebenszyklus mindestens in einem bestimmten Zustand befindet. Der Block wird abgebrochen und neu gestartet, wenn der Lebenszyklus den Zielstatus erreicht und wieder verlässt.Flow.flowWithLifecycle
, eine API, die Werte aus dem vorgelagerten Ablauf ausgibt, wenn der Lebenszyklus mindestens in einem bestimmten Zustand ist.DefaultLifecycleObserver
wurde vonlifecycle.lifecycle-common-java8
nachlifecycle.lifecycle-common
verschoben.lifecycle.lifecycle-common-java8
bietet keine zusätzlichen Funktionen mehr im Vergleich zulifecycle.lifecycle-common
. Daher kann die Abhängigkeit vonlifecycle.lifecycle-common-java8
durchlifecycle.lifecycle-common
ersetzt werden.- Die nicht coroutines API von
lifecycle-viewmodel-ktx
wurde in das Modullifecycle-viewmodel
verschoben. lifecycle-process
verwendet jetztandroidx.startup
, um dieProcessLifecycleOwner
zu initialisieren.Zuvor wurde dies von
androidx.lifecycle.ProcessLifecycleOwnerInitializer
durchgeführt.Wenn Sie
tools:node="remove"
verwendet haben, um den Prozesslebenszyklus in der Vergangenheit zu initialisieren, gehen Sie stattdessen so vor:ContentProvider
<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
(oder)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Version 2.4.0-rc01
29. September 2021
androidx.lifecycle:lifecycle-*:2.4.0-rc01
wird ohne Änderungen gegenüber Lifecycle 2.4.0-beta01 veröffentlicht. Version 2.4.0-rc01 enthält diese Commits.
Version 2.4.0-beta01
15. September 2021
androidx.lifecycle:lifecycle-*:2.4.0-beta01
wird veröffentlicht. Version 2.4.0-beta01 enthält diese Commits.
API-Änderungen
- „
@OnLifecycleEvent
“ wurde eingestellt. Verwenden Sie stattdessenLifecycleEventObserver
oderDefaultLifecycleObserver
. (I5a8fa) - DefaultLifecycleObserver wurde von
androidx.lifecycle.lifecycle-common-java8
nachandroidx.lifecycle.lifecycle-common
verschoben.androidx.lifecycle.lifecycle-common-java8
bietet keine zusätzlichen Funktionen mehr im Vergleich zuandroidx.lifecycle.lifecycle-common
. Daher kann die Abhängigkeit vonandroidx.lifecycle.lifecycle-common-java8
durchandroidx.lifecycle.lifecycle-common
ersetzt werden. (I021aa) - Nicht-Koroutinen-API von
lifecycle-viewmodel-ktx
wurde in das Modullifecycle-viewmodel
verschoben. (I6d5b2)
Externer Beitrag
Version 2.4.0-alpha03
4. August 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha03
wird veröffentlicht. Version 2.4.0-alpha03 enthält diese Commits.
API-Änderungen
- Unterbrechung der Codebasis: ViewModelProvider wurde in Kotlin neu geschrieben.
Bei der
ViewModelProvider.Factory.create
-Methode ist „nullable“ nicht mehr als generischer Typ zulässig. (I9b9f6)
Verhaltensänderungen
Lifecycle.repeatOnLifecycle
:block
wird jetzt bei wiederholter Ausführung immer nacheinander aufgerufen. (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
wurde veröffentlicht. Version 2.4.0-alpha02 enthält diese Commits.
Neue Funktionen
lifecycle-runtime-ktx
enthält jetzt eine neueRepeatOnLifecycleWrongUsage
-Lint-Prüfung, die erkennt, wennrepeateOnLifecycle
inonStart()
oderonResume()
falsch verwendet wird. (706078, b/187887400)
API-Änderungen
- Die
LifecycleOwner.addRepeatingJob
API wird zugunsten vonLifecycle.repeatOnLifecycle
entfernt, die strukturierte Parallelität berücksichtigt und einfacher zu verstehen ist. (I4a3a8) - Machen Sie
ProcessLifecycleInitializer
öffentlich, damit andereandroidx.startup.Initializer
s diese als Abhängigkeiten verwenden können. (I94c31)
Fehlerkorrekturen
- Ein Problem mit der
NullSafeMutableLiveData
-Lint-Prüfung, wenn das Feld Modifikatoren hat, wurde behoben. (#147, b/183696616) - Ein weiteres Problem mit der Lint-Prüfung
NullSafeMutableLiveData
bei der Verwendung von generischen Elementen 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, kozaxinan, dass du die Lint-Prüfung für
NullSafeMutableLiveData
verbessert hast. (#161, b/184830263)
Version 2.4.0-alpha01
24. März 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha01
wurde veröffentlicht. Version 2.4.0-alpha01 enthält diese Commits.
Verhaltensänderungen
lifecycle-process
verwendet jetztandroidx.startup
, umProcessLifecycleOwner
zu initialisieren.Zuvor wurde dies von
androidx.lifecycle.ProcessLifecycleOwnerInitializer
durchgeführt.Wenn Sie
tools:node="remove"
verwendet haben, um den Prozesslebenszyklus in der Vergangenheit zu initialisieren, gehen Sie stattdessen so vor: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
- Es wurde eine
Flow.flowWithLifecycle
API hinzugefügt, die Werte aus dem vorgelagerten Fluss ausgibt, wenn der Lebenszyklus mithilfe derLifecycle.repeatOnLifecycle
API mindestens in einem bestimmten Status ist. Dies ist eine Alternative zur ebenfalls neuenLifecycleOwner.addRepeatinJob
API. (I0f4cd)
Fehlerkorrekturen
- Ab Lifecycle 2.3.1: Mit der
NonNullableMutableLiveData
-Lint-Regel kann jetzt richtig zwischen Feldvariablen mit unterschiedlicher Nullbarkeit unterschieden werden. (b/169249668)
Lifecycle Viewmodel Compose Version 1.0.0
Version 1.0.0-alpha07
16. Juni 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07
wird veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.
Nicht abwärtskompatible API-Änderungen
viewModel()
verwendet jetzt ein optionalesViewModelStoreOwner
, was die Arbeit mit anderen Inhabern alsLocalViewModelStoreOwner
vereinfacht. So können Sie beispielsweise jetzt mitviewModel(navBackStackEntry)
ein ViewModel abrufen, das mit einem bestimmten Navigationsgraphen verknüpft ist. (I2628d, b/188693123)
Version 1.0.0-alpha06
2. Juni 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06
wird veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.
Aktualisiert, um mit Compose-Version 1.0.0-beta08
kompatibel zu sein.
Version 1.0.0-alpha05
18. Mai 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05
wurde veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.
Neue Funktionen
- Aktualisiert, um mit Compose-Version
1.0.0-beta07
kompatibel zu sein.
Fehlerkorrekturen
- Die AndroidManifest-Dateien aus „ui-test-manifest“ und „ui-tooling-data“ sind jetzt mit Android 12 kompatibel (I6f9de, b/184718994)
Version 1.0.0-alpha04
7. April 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04
wird veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.
Änderungen an Abhängigkeiten
- Mit dieser Version können
androidx.hilt:hilt-navigation-compose
undandroidx.navigation:navigation-compose
Abhängigkeiten vonandroidx.compose.compiler:compiler:1.0.0-beta04
undandroidx.compose.runtime:runtime:1.0.0-beta04
synchronisieren. Bei 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
wurde veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.
API-Änderungen
LocalViewModelStoreOwner.current
gibt jetzt eine optionaleViewModelStoreOwner
zurück, um besser zu bestimmen, ob eineViewModelStoreOwner
in der aktuellen Komposition verfügbar ist. Bei APIs, für die eineViewModelStoreOwner
erforderlich ist, z. B.viewModel()
undNavHost
, wird weiterhin eine Ausnahme ausgelöst, wenn keineViewModelStoreOwner
festgelegt ist. (Idf39a)
Lifecycle-Viewmodel-Compose Version 1.0.0-alpha02
24. Februar 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02
wird veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.
API-Änderungen
LocalViewModelStoreOwner
hat jetztprovides
-Funktionen, die mitCompositionLocalProvider
verwendet werden können und dieasProvidableCompositionLocal()
API ersetzen. (I45d24)
Lifecycle-Viewmodel-Compose Version 1.0.0-alpha01
10. Februar 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
wird veröffentlicht. Version 1.0.0-alpha01 enthält diese Commits.
Neue Funktionen
- Das
viewModel()
-Komposit undLocalViewModelStoreOwner
wurden ausandroidx.compose.ui.viewinterop
in dieses Artefakt imandroidx.lifecycle.viewmodel.compose
-Paket verschoben. (I7a374)
Version 2.3.1
Lebenszyklusversion 2.3.1
24. März 2021
androidx.lifecycle:lifecycle-*:2.3.1
wurde veröffentlicht. Version 2.3.1 enthält diese Commits.
Fehlerkorrekturen
- Mit der Lint-Regel
NonNullableMutableLiveData
kann jetzt richtig zwischen Feldvariablen mit unterschiedlicher Null-Zulässigkeit unterschieden werden. (b/169249668)
Version 2.3.0
Version 2.3.0
10. Februar 2021
androidx.lifecycle:lifecycle-*:2.3.0
wird veröffentlicht. Version 2.3.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.2.0
SavedStateHandle
-Unterstützung für nicht paketbare Klassen:SavedStateHandle
unterstützt jetzt die Lazy-Serialisierung. Sie könnensetSavedStateProvider()
für einen bestimmten Schlüssel aufrufen und einenSavedStateProvider
angeben, der einen Rückruf ansaveState()
erhält, wennSavedStateHandle
aufgefordert wird, seinen Status zu speichern. Weitere Informationen finden Sie unter Nicht teilbare Klassen speichern.- Durchsetzung des Lebenszyklusverhaltens:
- LifecycleRegistry erzwingt jetzt
DESTROYED
als Endstatus. LifecycleRegistry
überprüft jetzt, ob seine Methoden im Hauptthread aufgerufen werden. Das war immer eine Anforderung für die Lebenszyklen von Aktivitäten, Fragmenten usw. Das Hinzufügen von Beobachtern aus nicht primären Threads führte zu schwer zu erkennenden Abstürzen bei der Laufzeit. BeiLifecycleRegistry
-Objekten, die zu Ihren eigenen Komponenten gehören, können Sie die Prüfungen mithilfe vonLifecycleRegistry.createUnsafe(...)
explizit deaktivieren. Sie müssen dann jedoch dafür sorgen, dass eine ordnungsgemäße Synchronisierung vorhanden ist, wenn auf diesesLifecycleRegistry
aus verschiedenen Threads zugegriffen wird.
- LifecycleRegistry erzwingt jetzt
- Lebenszyklusstatus- und Ereignis-Hilfsmethoden:
Lifecycle.Event
wurde statische Hilfsmethoden vondownFrom(State)
,downTo(State)
,upFrom(State)
undupTo(State)
hinzugefügt, umEvent
anhand vonState
und Übergangsrichtung zu generieren. Die MethodegetTargetState()
wurde hinzugefügt. Sie gibt denState
an, zu dem der Lebenszyklus direkt nach demEvent
übergeht. withStateAtLeast
: Es wurdenLifecycle.withStateAtLeast
APIs hinzugefügt, die auf einen Lebenszyklusstatus warten und einen nicht angehaltenen Codeblock synchron zum Zeitpunkt des Statuswechsels ausführen und dann mit dem Ergebnis fortfahren. Diese APIs unterscheiden sich von den vorhandenenwhen*
-Methoden, da sie keinen aussetzenden Code ausführen und keinen benutzerdefinierten Dispatcher verwenden. (aosp/1326081)ViewTree
APIs: Mit einer neuenViewTreeLifecycleOwner.get(View)
- undViewTreeViewModelStoreOwner.get(View)
API können Sie die enthaltenenLifecycleOwner
- bzw.ViewModelStoreOwner
-Elemente anhand einerView
-Instanz abrufen. Sie müssen ein Upgrade auf Activity1.2.0
und Fragment1.3.0
sowie auf AppCompat 1.3.0-alpha01 oder höher ausführen, um dieses Feld korrekt auszufüllen. Die Kotlin-ErweiterungenfindViewTreeLifecycleOwner
undfindViewTreeViewModelStoreOwner
sind inlifecycle-runtime-ktx
undlifecycle-viewmodel-ktx
verfügbar.- Einstellung der Kotlin-Erweiterung
LiveData.observe()
: Die Kotlin-ErweiterungLiveData.observe()
, die für die Verwendung der Lambda-Syntax erforderlich ist, wird eingestellt, da sie bei der Verwendung von Kotlin 1.4 nicht mehr erforderlich ist.
Version 2.3.0-rc01
16. Dezember 2020
androidx.lifecycle:lifecycle-*:2.3.0-rc01
wird veröffentlicht. Version 2.3.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Die
keys()
-Methode vonSavedStateHandle
ist jetzt vor und nach dem Speichern des Status konsistent. Sie enthält jetzt zusätzlich zu den Schlüsseln, die mitset()
undgetLiveData()
verwendet werden, auch Schlüssel, die zuvor mitsetSavedStateProvider()
verwendet wurden. (aosp/1517919, b/174713653)
Externer Beitrag
- Die APIs zum Pausieren lebenszyklusbewusster Tasks verarbeiten jetzt Aufrufe an
yield()
besser. Viele Grüße Nicklas Ansman Giertz (aosp/1430830, b/168777346)
Version 2.3.0-beta01
1. Oktober 2020
androidx.lifecycle:lifecycle-*:2.3.0-beta01
wird veröffentlicht. Version 2.3.0-beta01 enthält diese Commits.
API-Änderungen
- Die Kotlin-Erweiterung
LiveData.observe()
, die für die Verwendung der Lambda-Syntax erforderlich ist, wird jetzt eingestellt, da sie bei der Verwendung von Kotlin 1.4 nicht mehr erforderlich ist. (I40d3f)
Fehlerkorrekturen
- Upgrade von androidx auf Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Änderungen an der Dokumentation
- Die Dokumentation für den
liveData
-Builder undasLiveData()
wurde aktualisiert und enthält jetzt Details zum Ändern der angegebenen Zeitüberschreitungswerte. (aosp/1122324)
Version 2.3.0-alpha07
19. August 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha07
wurde veröffentlicht. Version 2.3.0-alpha07 enthält diese Commits.
Fehlerkorrekturen
- Ein Absturzproblem bei der
NullSafeMutableLiveData
-Lint-Prüfung wurde behoben. (aosp/1395367)
Version 2.3.0-alpha06
22. Juli 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha06
wurde veröffentlicht. Version 2.3.0-alpha06 enthält diese Commits.
Neue Funktionen
- Statische Hilfsmethoden von
downFrom(State)
,downTo(State)
,upFrom(State)
undupTo(State)
wurden zuLifecycle.Event
hinzugefügt, umEvent
anhand vonState
und der Übergangsrichtung zu generieren. Die MethodegetTargetState()
wurde hinzugefügt. Sie gibt denState
an, zu dem der Lebenszyklus direkt nach demEvent
übergeht. (I00887) - Es wurden
Lifecycle.withStateAtLeast
APIs hinzugefügt, die auf einen Lebenszyklusstatus warten und einen nicht angehaltenen Codeblock synchron zum Zeitpunkt des Statuswechsels ausführen und dann mit dem Ergebnis fortfahren. Diese APIs unterscheiden sich von den vorhandenenwhen*
-Methoden, da sie die Ausführung von Sperrcode nicht zulassen und keinen benutzerdefinierten Dispatcher verwenden. (aosp/1326081)
Verhaltensänderungen
- LifecycleRegistry erzwingt jetzt
DESTROYED
als Endstatus. (I00887) LifecycleRegistry
prüft jetzt, ob seine Methoden im Hauptthread aufgerufen werden. Das war immer eine Anforderung für die Lebenszyklen von Aktivitäten, Fragmenten usw. Das Hinzufügen von Beobachtern aus nicht primären Threads führte zu schwer zu erkennenden Abstürzen bei der Laufzeit. BeiLifecycleRegistry
-Objekten, die Ihren eigenen Komponenten gehören, können Sie Prüfungen explizit mitLifecycleRegistry.createUnsafe(...)
deaktivieren. Dann müssen Sie jedoch dafür sorgen, dass eine ordnungsgemäße Synchronisierung erfolgt, wenn von verschiedenen Threads aus auf diesesLifecycleRegistry
zugegriffen wird (Ie7280, b/137392809).
Fehlerkorrekturen
- Ein Absturz in
NullSafeMutableLiveData
wurde behoben. (b/159987480) - Ein
ObsoleteLintCustomCheck
für Lint-Prüfungen wurde behoben, die mitlifecycle-livedata-core-ktx
(und insbesondereNullSafeMutableLiveData
) gebündelt sind. (b/158699265)
Version 2.3.0-alpha05
24. Juni 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha05
wird veröffentlicht. Version 2.3.0-alpha05 enthält diese Commits.
Fehlerkorrekturen
LiveData
kann jetzt wiedereintretende Fälle besser verarbeiten und doppelte Aufrufe vononActive()
oderonInactive()
vermeiden. (b/157840298)- Ein Problem wurde behoben, bei dem Lint-Prüfungen bei Verwendung von Android Studio 4.1 Canary 6 oder höher nicht ausgeführt wurden. (aosp/1331903)
Version 2.3.0-alpha04
10. Juni 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha04
wird veröffentlicht. Version 2.3.0-alpha04 enthält diese Commits.
Fehlerkorrekturen
- Ein Absturz bei der
NonNullableMutableLiveData
Lint-Prüfung wurde behoben. (b/157294666) - Die
NonNullableMutableLiveData
-Lint-Prüfung deckt jetzt deutlich mehr Fälle ab, in denen einnull
-Wert für eineMutableLiveData
mit einem nicht nullwertigen Typparameter festgelegt wurde. (b/156002218)
Version 2.3.0-alpha03
20. Mai 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha03
wurden freigegeben. Version 2.3.0-alpha03 enthält diese Commits.
Neue Funktionen
SavedStateHandle
unterstützt jetzt die Lazy-Serialisierung. Sie könnensetSavedStateProvider()
für einen bestimmten Schlüssel aufrufen und dabei einenSavedStateProvider
angeben, der einen Callback ansaveState()
erhält, wenn derSavedStateHandle
aufgefordert wird, seinen Status zu speichern. (b/155106862)- Mit einer neuen
ViewTreeViewModelStoreOwner.get(View)
API können Sie die enthalteneViewModelStoreOwner
anhand einerView
-Instanz abrufen. Sie müssen auf Activity1.2.0-alpha05
, Fragment1.3.0-alpha05
und AppCompat1.3.0-alpha01
umstellen, um diese Informationen korrekt einzugeben.lifecycle-viewmodel-ktx
wurde die Kotlin-ErweiterungfindViewModelStoreOwner()
hinzugefügt. (aosp/1295522)
Fehlerkorrekturen
- Es wurde ein Problem behoben, durch das die im Lebenszyklus
2.3.0-alpha01
veröffentlichten Lint-PrüfungenMutableLiveData
zusammen mit dem Artefaktlifecycle-livedata-core-ktx
veröffentlicht wurden. (b/155323109)
Version 2.3.0-alpha02
29. April 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha02
wird veröffentlicht. Version 2.3.0-alpha02 enthält diese Commits.
API-Änderungen
- Mit
SavedStateViewModelFactory
können Sie jetzt einen Null-Application
an seinen Konstruktor übergeben, um in Fällen zu unterstützen, in denen eine solche nicht verfügbar ist und keine Unterstützung fürAndroidViewModel
erforderlich ist. (aosp/1285740)
Fehlerkorrekturen
- Die Leistung beim Kaltstart wurde verbessert, da Fehler bei der Klassenüberprüfung auf Geräten mit API 28 und niedrigerer Version vermieden werden. (aosp/1282118)
Version 2.3.0-alpha01
4. März 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha01
wird veröffentlicht. Version 2.3.0-alpha01 enthält diese Commits.
Neue Funktionen
- Mit einer neuen
ViewTreeLifecycleOwner.get(View)
API können Sie die enthalteneLifecycleOwner
anhand einerView
-Instanz abrufen. Sie müssen ein Upgrade auf Aktivität1.2.0-alpha01
und Fragment1.3.0-alpha01
ausführen, um diese Informationen korrekt einfügen zu können. EinefindViewTreeLifecycleOwner
-Kotlin-Erweiterung ist inlifecycle-runtime-ktx
verfügbar. (aosp/1182361, aosp/1182956) - Es wurde eine neue Lint-Prüfung hinzugefügt, die Sie warnt, wenn Sie einen
null
-Wert für einenMutableLiveData
festlegen, der in Kotlin als nicht null definiert wurde. Dies ist verfügbar, wenn Sie das Artefaktlivedata-core-ktx
oderlivedata-ktx
verwenden. (aosp/1154723, aosp/1159092) - Es ist ein neues
lifecycle-runtime-testing
-Artefakt verfügbar, das eineTestLifecycleOwner
bereitstellt, dieLifecycleOwner
implementiert und eine threadsichere mutableLifecycle
bietet. (aosp/1242438)
Fehlerkorrekturen
- Das
lifecycle-runtime
-Artefakt hat jetzt einen eindeutigen Paketnamen. (aosp/1187196)
Version 2.2.0
ViewModel-Savedstate Version 2.2.0
5. Februar 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0
wird veröffentlicht. Version 2.2.0 enthält diese Commits.
Der SavedState des Lifecycle ViewModel hat jetzt dieselbe Version wie andere Lifecycle-Artefakte. Das Verhalten von 2.2.0
ist mit dem von 1.0.0
identisch.
Version 2.2.0
22. Januar 2020
androidx.lifecycle:lifecycle-*:2.2.0
wird veröffentlicht. Version 2.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.1.0
- Integration von Lifecycle-Coroutinen: Das neue
lifecycle-runtime-ktx
-Artefakt ermöglicht die Integration von Lifecycle und Kotlin-Coroutinen. Dielifecycle-livedata-ktx
wurde außerdem um coroutines erweitert. Weitere Informationen finden Sie unter Kotlin-Coroutinen mit Architekturkomponenten verwenden. - Einstellung von
ViewModelProviders.of()
:ViewModelProviders.of()
wurde eingestellt. Sie können dem neuenViewModelProvider(ViewModelStoreOwner)
-Konstruktor einFragment
oderFragmentActivity
übergeben, um dieselbe Funktionalität zu erzielen, wenn Sie Fragment1.2.0
verwenden. - Einstellung des
lifecycle-extensions
-Artefakts: Durch die oben genannte Einstellung vonViewModelProviders.of()
wird mit diesem Release auch die letzte API inlifecycle-extensions
eingestellt. Dieses Artefakt sollte jetzt vollständig als eingestellt betrachtet werden. Wir empfehlen dringend, die spezifischen Lebenszyklus-Artefakte zu verwenden, die Sie benötigen (z. B.lifecycle-service
, wenn SieLifecycleService
verwenden, undlifecycle-process
, wenn SieProcessLifecycleOwner
verwenden), und nicht auflifecycle-extensions
, da es in Zukunft keine2.3.0
-Version vonlifecycle-extensions
geben wird. - Gradle Inkrementeller Annotationsprozessor: Der Annotationsprozessor des Lebenszyklus ist standardmäßig inkrementell.
Wenn Ihre App in der Programmiersprache Java 8 geschrieben ist, können Sie stattdessen
DefautLifecycleObserver
verwenden. Wenn sie in der Programmiersprache Java 7 geschrieben ist, können SieLifecycleEventObserver
verwenden.
Version 2.2.0-rc03
4. Dezember 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc03
wurde veröffentlicht. Version 2.2.0-rc03 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, der auftrat, wenn eine gemockte
ViewModel
inViewModelStore
gespeichert und später mit der Standardfabrik abgefragt wurde. - Fehler bei der Verwendung von
Dispatchers.Main.immediate
inlaunchWhenCreated
und ähnlichen Methoden behoben, die während des entsprechenden Lebenszyklusereignisses synchron aufgerufen werden sollen. (aosp/1156203)
Externe Beiträge
- Vielen Dank an Anders Järleberg für die Behebung dieses Problems. (aosp/1156203)
- Vielen Dank an Vsevolod Tolstopyatov von Jetbrains für die Überprüfung einer Implementierung der Inline-Ausführung.
Abhängigkeitsänderungen
- Lebenszykluserweiterungen hängen jetzt vom Fragment
1.2.0-rc03
ab.
Version 2.2.0-rc02
7. November 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc02
wird veröffentlicht. Version 2.2.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler in der ProGuard-Einrichtung der Bibliothek wurde behoben, der Geräte mit API 28 und 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
wird veröffentlicht. Version 2.2.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem
launchWhenCreated
und verwandte Methoden einen Frame nach der zugehörigen Lebenszyklusmethode ausgeführt wurden, daDispatchers.Main
anstelle vonDispatchers.Main.immediate
verwendet wurde. (aosp/1145596)
Externe Beiträge
- Vielen Dank an Nicklas Ansman für die Behebung! (aosp/1145596)
Version 2.2.0-beta01
9. Oktober 2019
androidx.lifecycle:lifecycle-*:2.2.0-beta01
wird veröffentlicht. Version 2.2.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Behebung einer Regression, die in Lifecycle 2.2.0-alpha05 bei der Sortierung von
ProcessLifecycleOwner
und derLifecycleOwner
der Aktivität auf Android 10-Geräten aufgetreten ist. (aosp/1128132) - Eine Regression wurde behoben, die in Lifecycle
2.2.0-alpha05
eingeführt wurde und bei Verwendung der Version2.0.0
oder2.1.0
vonlifecycle-process
zu einemNullPointerException
führte. (b/141536990)
Version 2.2.0-alpha05
18. September 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha05
wurde veröffentlicht. Version 2.2.0-alpha05 enthält diese Commits.
Fehlerkorrekturen
- Es wurde eine Race-Bedingung im LiveData-Builder für Tasks behoben. b/140249349
Version 2.2.0-alpha04
5. September 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha04
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Für
lifecycleScope
,whenCreated
,whenStarted
,whenResumed
,viewModelScope
und die zugrunde liegende Implementierung vonliveData
wird jetztDispatchers.Main.immediate
anstelle vonDispatchers.Main
verwendet. (b/139740492)
Externe Beiträge
- Vielen Dank an Nicklas Ansman für die Umstellung auf
Dispatchers.Main.immediate
. (aosp/1106073)
Version 2.2.0-alpha03
7. August 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha03
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Bei Implementierungen von
ViewModelStoreOwner
kann jetzt optionalHasDefaultViewModelProviderFactory
implementiert werden, um einen Standardwert fürViewModelProvider.Factory
bereitzustellen. Dies gilt für Aktivitäten1.1.0-alpha02
, Fragmente1.2.0-alpha02
und Navigation2.2.0-alpha01
. (aosp/1092370, b/135716331)
API-Änderungen
ViewModelProviders.of()
wurde eingestellt. Sie können dem neuen KonstruktorViewModelProvider(ViewModelStoreOwner)
eineFragment
oderFragmentActivity
übergeben, um dieselbe Funktionalität zu erreichen. (aosp/1009889)
Version 2.2.0-alpha02
2. Juli 2019
androidx.lifecycle:*:2.2.0-alpha02
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
LiveDataScope.initialValue
wurde durchLiveDataScope.latestValue
ersetzt, mit dem der aktuelle ausgestrahlte Wert des BlocksliveData
erfasst wird.- Dem
liveData
-Builder wurde eine neue Überladung hinzugefügt, die dentimeout
-Parameter vom TypDuration
empfängt.
Version 2.2.0-alpha01
7. Mai 2019
androidx.lifecycle:*:2.2.0-alpha01
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Diese Version enthält neue Funktionen, die die Unterstützung von Kotlin-Coroutinen für Lifecycle und LiveData bieten. Eine ausführliche Dokumentation dazu finden Sie hier.
ViewModel-SavedState Version 1.0.0
Version 1.0.0
22. Januar 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0
wird veröffentlicht. Version 1.0.0 enthält diese Commits.
Wichtige Funktionen in 1.0.0
- Die neue Klasse SavedStateHandle wurde hinzugefügt. So können Ihre
ViewModel
-Klassen auf den gespeicherten Status zugreifen und zu diesem beitragen. Dieses Objekt kann im Konstruktor der KlasseViewModel
empfangen werden. Die von Fragmenten standardmäßig bereitgestellten Fabriken und AppCompatActivity fügenSavedStateHandle
automatisch ein. - AbstractSavedStateViewModelFactory wurde hinzugefügt. Damit kannst du benutzerdefinierte Factorys für
ViewModel
erstellen und ihnen Zugriff aufSavedStateHandle
gewähren.
ViewModel-Savedstate Version 1.0.0-rc03
4. Dezember 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03
wurde veröffentlicht. Version 1.0.0-rc03 enthält diese Commits.
Änderungen an Abhängigkeiten
- Der Lifecycle-ViewModel-Speicherstatus hängt jetzt vom Lebenszyklus
2.2.0-rc03
ab.
Viewmodel-Savedstate Version 1.0.0-rc02
7. November 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02
wird veröffentlicht. Version 1.0.0-rc02 enthält diese Commits.
Abhängigkeitsänderungen
- Jetzt hängt es vom Lebenszyklus
2.2.0-rc02
ab.
ViewModel-SavedState Version 1.0.0-rc01
23. Oktober 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01
wird ohne Änderungen gegenüber 1.0.0-beta01
veröffentlicht. Version 1.0.0-rc01 enthält diese Commits.
ViewModel-Savedstate Version 1.0.0-beta01
9. Oktober 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01
wurde veröffentlicht. Version 1.0.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das beim ersten Zugriff auf ein SavedState-ViewModel in
Activity.onActivityResult()
eineIllegalStateException
zurückgegeben wurde. (b/139093676) - Ein Problem mit
IllegalStateException
bei Verwendung vonAbstractSavedStateViewModelFactory
wurde behoben. (b/141225984)
ViewModel-SavedState Version 1.0.0-alpha05
18. September 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05
wird veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.
API-Änderungen
SavedStateViewModelFactory
erweitertAbstractSavedStateViewModelFactory
nicht mehr undSavedStateHandle
wird nur für ViewModels erstellt, für die es angefordert wurde (aosp/1113593)
ViewModel-SavedState Version 1.0.0-alpha03
7. August 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Wichtige Änderungen
lifecycle-viewmodel-savedstate
ist nicht mehr vonfragment
abhängig und die zugehörigen KonstruktorenSavedStateViewModelFactory(Fragment)
undSavedStateViewModelFactory(FragmentActivity)
wurden entfernt. Stattdessen istSavedStateViewModelFactory
jetzt die Standard-Fabrik für Aktivität1.1.0-alpha02
, Fragment1.2.0-alpha02
und Navigation2.2.0-alpha01
. (b/135716331)
ViewModel-SavedState Version 1.0.0-alpha02
2. Juli 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Es wurde eine
SavedStateHandle.getLiveData()
-Überlastung hinzugefügt, die einen Standardwert akzeptiert.
API-Änderungen
SavedStateVMFactory
wird inSavedStateViewModelFactory
umbenannt.AbstractSavedStateVMFactory
wird inAbstractSavedStateViewModelFactory
umbenannt.
ViewModel-Savedstate Version 1.0.0-alpha01
13. März 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01
wird veröffentlicht. Das vollständige Commit-Log für diese erste Version finden Sie hier.
Neue Funktionen
- Jetzt kann
ViewModels
zu „savedstate“ beitragen. Dazu verwenden Sie die neu eingeführte ViewModel-FactorySavedStateVMFactory
und Ihr ViewModel sollte einen Konstruktor haben, der dasSavedStateHandle
-Objekt als Parameter empfängt.
Version 2.1.0
Wichtige Änderungen seit Version 2.0.0
LifecycleEventObserver
wurde für Fälle hinzugefügt, in denen ein Stream von Lebenszyklusereignissen benötigt wird. Es handelt sich um eine öffentliche API und nicht um eine ausgeblendeteGenericLifecycleObserver
-Klasse.- KTX-Erweiterungen für
LiveData.observe
- undTransformations.*
-Methoden wurden hinzugefügt. Transformations.distinctUntilChanged
wurde hinzugefügt. Damit wird ein neues LiveData-Objekt erstellt, das erst dann einen Wert ausgibt, wenn der QuellwertLiveData
geändert wurde.- Unterstützung für Tasks in ViewModels hinzugefügt, indem die Erweiterungseigenschaft
ViewModel.viewModelScope
hinzugefügt wurde.
Version 2.1.0
5. September 2019
androidx.lifecycle:lifecycle-*:2.1.0
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Version 2.1.0-rc01
2. Juli 2019
androidx.lifecycle:*:2.1.0-rc01
wird ohne Änderungen gegenüber androidx.lifecycle:*:2.1.0-beta01
veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Version 2.1.0-beta01
7. Mai 2019
androidx.lifecycle:*:2.1.0-beta01
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Lebenszyklen werden in die Betaphase überführt: In früheren Alphaversionen eingeführte APIs wie
liveData
Erweiterungsfunktionen für Transformationen und Beobachtungen,ViewModel
Initialisierung mit Property-Delegierung und andere sind stabil und werden nicht mehr geändert.
Version 2.1.0-alpha04
3. April 2019
androidx.lifecycle:*:2.1.0-alpha04
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
- Wichtige Änderung: Die zugrunde liegende API von
by viewModels()
undby activityViewModels()
wurde geändert, um nicht nurViewModelStoreOwner
, sondern auchViewModelStore
direkt zu unterstützen. (aosp/932932)
Version 2.1.0-alpha03
13. März 2019
androidx.lifecycle:*:2.1.0-alpha03
wird veröffentlicht. Eine vollständige Liste der Commits in dieser Version finden Sie hier.
API-Änderungen
- "
ViewModelProvider.KeyedFactory
" wurde entfernt. NebenViewModelProvider.Factory
kam die zweite Oberfläche auch nicht gut mit neuen Funktionen zur Attributdelegierung in Kotlinby viewmodels {}
zusammen. (aosp/914133)
Version 2.1.0-alpha02
30. Januar 2019
androidx.lifecycle 2.1.0-alpha02
wird veröffentlicht.
API-Änderungen
LifecycleRegistry
enthält jetzt einesetCurrentState()
-Methode, die die jetzt verworfenesetState()
-Methode ersetzt. (aosp/880715)
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem simulierte
ViewModel
-Instanzen abstürzten, wenn die enthalteneViewModelStore
gelöscht wurde. b/122273087
Version 2.1.0-alpha01
17. Dezember 2018
androidx.lifecycle 2.1.0-alpha01
wird veröffentlicht.
Neue Funktionen
LifecycleEventObserver
wurde hinzugefügt, wenn ein Stream von Lebenszyklusereignissen erforderlich ist. Es ist eine öffentliche API und keine ausgeblendeteGenericLifecycleObserver
-Klasse.- KTX-Erweiterungen für
LiveData.observe
- undTransformations.*
-Methoden wurden hinzugefügt. - Die Methode
Transformations.distinctUntilChanged
wurde hinzugefügt. Es wird ein neuesLiveData
-Objekt erstellt, das erst dann einen Wert ausgibt, wenn sich der Quell-LiveData-Wert geändert hat. - Unterstützung für Tasks in ViewModels: Die Erweiterungseigenschaft
ViewModel.viewModelScope
wurde hinzugefügt. ViewModelProvider.KeyedFactory
wurde hinzugefügt, eine Factory für ViewModels, diekey
undClass
in dercreate
-Methode empfängt.
Version 2.0.0
Version 2.0.0
21. September 2018
Lebenszyklus 2.0.0
wird mit einer Fehlerkorrektur aus 2.0.0-rc01
in ViewModel veröffentlicht.
Fehlerkorrekturen
- Eine ViewModel-Proguard-Regel wurde behoben, durch die Konstruktoren fälschlicherweise entfernt wurden b/112230489.
Version 2.0.0-beta01
2. Juli 2018
Fehlerkorrekturen
- Proguard-Regel für LifecycleObserver korrigiert, sodass nur Implementierungen, nicht Unterschnittstellen beibehalten werden b/71389427
- Die ViewModel-Proguard-Regeln wurden korrigiert, um Verschleierung und Verkleinerung zu ermöglichen.
Versionen vor Android X
Fügen Sie für die folgenden Versionen von Lifecycle vor Android X die folgenden Abhängigkeiten hinzu:
dependencies {
def lifecycle_version = "1.1.1"
// ViewModel and LiveData
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
// alternatively - just ViewModel
implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
// alternatively - just LiveData
implementation "android.arch.lifecycle:livedata:$lifecycle_version"
// alternatively - Lifecycles only (no ViewModel or LiveData).
// Support library depends on this lightweight import
implementation "android.arch.lifecycle:runtime:$lifecycle_version"
annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
// alternately - if using Java8, use the following instead of compiler
implementation "android.arch.lifecycle:common-java8:$lifecycle_version"
// optional - ReactiveStreams support for LiveData
implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"
// optional - Test helpers for LiveData
testImplementation "android.arch.core:core-testing:$lifecycle_version"
}
Version 1.1.1
21. März 2018
Es gibt nur eine kleine Änderung: android.arch.core.util.Function
wird von arch:runtime
nach arch:common
verschoben. Dadurch kann es ohne Laufzeitabhängigkeit verwendet werden, z.B. in paging:common
unten.
lifecycle:common
ist eine Abhängigkeit von lifecycle:runtime
. Diese Änderung wirkt sich also nicht direkt auf lifecycle:runtime
aus, sondern nur auf Module, die direkt von lifecycle:common
abhängen, wie z. B. das Paging.
Version 1.1.0
22. Januar 2018
Änderungen an der Verpackung
Es sind jetzt neue, viel kleinere Abhängigkeiten verfügbar:
android.arch.lifecycle:livedata:1.1.0
android.arch.lifecycle:viewmodel:1.1.0
API-Änderungen
- Die verworfenen
LifecycleActivity
undLifecycleFragment
wurden entfernt. Bitte verwenden SieFragmentActivity
,AppCompatActivity
oder unterstützen SieFragment
. @NonNull
Anmerkungen wurdenViewModelProviders
undViewModelStores
hinzugefügt- Der Konstruktor von
ViewModelProviders
wurde eingestellt. Verwenden Sie stattdessen die statischen Methoden. ViewModelProviders.DefaultFactory
wurde eingestellt – bitteViewModelProvider.AndroidViewModelFactory
verwenden- Die statische Methode
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
wurde hinzugefügt, um einen statischenFactory
abzurufen, der sich zum Erstellen von Instanzen vom TypViewModel
undAndroidViewModel
eignet.