Lebenszyklus
In dieser Tabelle sind alle Artefakte in der Gruppe androidx.lifecycle
aufgeführt.
Artefakt | Stabile Version | Releasekandidat | Beta-Ausgabe | Alpha-Release |
---|---|---|---|---|
Lebenszyklus* | 2.8.4 | - | - | 2.9.0-alpha01 |
Lebenszyklus-Ansicht-Modell-Zusammensetzung | 2.8.4 | - | - | 2.9.0-alpha01 |
Abhängigkeiten deklarieren
Um eine Abhängigkeit vom Lebenszyklus hinzuzufügen, müssen Sie das Google Maven-Repository zu Ihrem Projekt arbeiten. Maven-Repository von Google lesen .
Fügen Sie der Datei build.gradle
die Abhängigkeiten für die Artefakte hinzu, die Sie benötigen
Ihre App oder Ihr Modul:
Kotlin
Cool
dependencies { def lifecycle_version = "2.8.4" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" // ViewModel utilities for Compose implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" // Lifecycle utilities for Compose implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // 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.4" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version") // ViewModel utilities for Compose implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version") // Lifecycle utilities for Compose implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // 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
Cool
dependencies { def lifecycle_version = "2.8.4" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // Annotation processor annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.8.4" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // Annotation processor annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Dein Feedback hilft uns, Jetpack zu verbessern. Teilen Sie uns mit, wenn Sie neue Ausgaben entdecken oder zur Verbesserung dieser Bibliothek. In der bestehende Probleme in dieser Bibliothek, bevor Sie eine neue erstellen. So können Sie zu einem vorhandenen Problem abstimmen: indem Sie auf die Sternschaltfläche klicken.
Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung. .
Version 2.8
Version 2.8.4
24. Juli 2024
androidx.lifecycle:lifecycle-*:2.8.4
wurde 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 fürLiveData
festgelegt ist (z. B. bei Verwendung vontake(1)
). (I9c566)- Die
Lifecycle*Effect
-Vervollständigung ist jetzt idempotent (d.h., wennonStopOrDispose
aufgrund des Stopps des Lebenszyklus aufgerufen wurde, wird sie bei der Entsorgung nur dann ein zweites Mal aufgerufen, wenn der Lebenszyklus wieder aufSTARTED
zurückgeht). (I5f607, b/352364595)
Version 2.8.3
1. Juli 2024
androidx.lifecycle:lifecycle-*:2.8.3
wurde 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 Verwendung der Codekomprimierung wurde behoben. (aosp/3133056, b/346808608)
Version 2.8.2
12. Juni 2024
androidx.lifecycle:lifecycle-*:2.8.2
wurde 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 wurden behoben. Sie können Lebenszyklus 2.8.2 jetzt mit jeder Version von Compose ohne Behelfslösungen verwenden. (aosp/3105647, b/336842920)ViewModelProvider
stürzt nicht mehr ab, wenn frühere Versionen voncompileOnly
Lifecycle-Abhängigkeiten mit Version 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ältcompose-ui
aus Kompatibilitätsgründen 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
wurde veröffentlicht. Version 2.8.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.7.0
LocalLifecycleOwner
wurde von der Compose-UI inlifecycle-runtime-compose
verschoben, damit die auf dem Compose-Tool basierenden Hilfs-APIs außerhalb der Compose-UI verwendet werden können.- Das Artefakt
lifecycle-runtime-compose
enthält jetzt die APIsdropUnlessResumed
unddropUnlessStarted
, mit denen Sie Klicks oder andere Ereignisse löschen können, die auftreten, selbst nachdemLifecycleOwner
unter den angegebenenLifecycle.State
fällt. 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 umgeschrieben und verwendet jetztAutoClosable
anstelle vonCloseable
. Sie unterstützt jetzt das Hinzufügen vonAutoCloseable
-Objekten mit einerkey
, die das Abrufen übergetCloseable()
ermöglicht.Das Aufrufen von
LifecycleStartEffect
undLifecycleResumeEffect
ohne Schlüssel ist jetzt ein Fehler. Dabei gilt dieselbe Konvention wie bei derDisposableEffect
API, die in diesen APIs widergespiegelt wird.LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
zugunsten vonLiveData.toPublisher(lifecycleOwner)
eingestellt.Die
lifecycle-livedata-core-ktx
-Codierungserweiterungen wurden jetzt in daslifecycle-livedata-core
-Modul verschoben.NullSafeMutableLiveData
wurde refaktoriert, um viele falsch positive Ergebnisse zu vermeiden.
Lebenszyklus-/Plattform-Kompatibilität mit Kotlin
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
verschiebt die meisten APIs zucommon
und unterstützt neben Android auch jvm und iOS.lifecycle-runtime
verschiebt die meisten APIs zucommon
und unterstützt neben Android auch jvm und iOS.lifecycle-runtime-ktx
ist jetzt leer und alle APIs werden inlifecycle-runtime
verschoben.lifecycle-runtime-compose
verschiebt alle APIs nachcommon
und sendet ein Android-Artefakt, das der plattformübergreifenden Unterstützung vonandroidx.compose
entspricht.
ViewModel Kotlin-Kompatibilität mit mehreren Plattformen
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 diese Änderung zu berücksichtigen, verfügen Methoden wie die in ViewModelProvider
, die ein java.lang.Class<T>
-Objekt verwendet haben, nun über eine äquivalente Methode, die ein kotlin.reflect.KClass<T>
-Objekt verwendet.
Die Binärkompatibilität unter Android wurde beibehalten. Beim Vergleich der Android-API-Oberfläche mit der gängigen API-Oberfläche gibt es jedoch einige wesentliche Änderungen:
- 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.- Es wird empfohlen, benutzerdefinierte Factorys von
ViewModelProvider.Factory
zu erweitern und diecreate
-Methode zu verwenden, dieCreationExtras
erfordert, oder dieviewModelFactory
Kotlin DSL zu verwenden.
- Es wird empfohlen, benutzerdefinierte Factorys von
- Die Verwendung von
ViewModelProvider
ohne eine benutzerdefinierte Factory auf Nicht-JVM-Plattformen führt zu einemUnsupportedOperationException
. Auf JVM-Plattformen wird die Kompatibilität durch die Verwendung des ViewModel-Konstruktors (no-args) sichergestellt, wenn keine benutzerdefinierte Factory vorhanden ist. viewModelScope
wird auf Plattformen, auf denenDispatchers.Main
nicht verfügbar ist (z.B.EmptyCoroutineContext
Linux).
Betroffene Artefakte:
lifecycle-viewmodel
verschiebt die meisten APIs zucommon
und unterstützt neben Android auch jvm und iOS.lifecycle-viewmodel-ktx
ist jetzt leer und alle APIs werden inlifecycle-viewmodel
verschoben.lifecycle-viewmodel-compose
verschiebt alle APIs nachcommon
und sendet ein Android-Artefakt, das der plattformübergreifenden Unterstützung vonandroidx.compose
entspricht.
Änderungen im Verhalten
InitializerViewModelFactory
(einschließlich der Builder-FunktionviewModelFactory
) gibt jetzt eineIllegalArgumentException
aus, wenn bereits eineinitializer
mit derselbenclazz: KClass<VM : ViewModel>
hinzugefügt wurde. (IC3a36)
Bekannte Probleme
lifecycle-*:2.8.0
erfordert mindestens die Compose-Version 1.7.0-alpha05 (b/336842920).
Version 2.8.0-rc01
1. Mai 2024
androidx.lifecycle:lifecycle-*:2.8.0-rc01
wurde 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 sind jetzt im AAE fürlifecycle-runtime
enthalten. (aosp/3038274, b/322382422) - Eine unbeabsichtigte Änderung beim Löschen von
AutoCloseable
-Instanzen, die an ein ViewModel angehängt sind, wurde behoben. Die vorherige Reihenfolge vonaddCloseable(String, AutoCloseable)
, dannaddClosable(AutoCloseable)
und dannonCleared()
wurde wiederhergestellt. (aosp/3041632) - Verbessern Sie das Standardverhalten bei der Erstellung von
viewModelScope
für native und JVM Desktop-Umgebungen. (aosp/3039221)
Externer Beitrag
- Vielen Dank, Victor Kropp für die Verbesserung der Suche nach dem Hauptthread 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 Artefakt
lifecycle-runtime-compose
ist jetzt mit Kotlin Multiplatform kompatibel. Der Code wird zucommon
verschoben und ein Android-Artefakt versendet, das der plattformübergreifenden 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
wurde veröffentlicht. Version 2.8.0-alpha04 enthält diese Commits.
Neue Funktionen
- Das Artefakt
lifecycle-viewmodel-compose
ist jetzt mit Kotlin Multiplatform kompatibel. Der Code wird zucommon
verschoben und ein Android-Artefakt versendet, das der plattformübergreifenden Unterstützung vonandroidx.compose
entspricht. Die zusammensetzbare MethodeviewModel
akzeptiert jetzt zusätzlich zujava.lang.Class
auch einenKClass
. (b/330323282)
Fehlerkorrekturen
NullSafeMutableLiveData
wurde refaktoriert, um viele falsch positive Ergebnisse zu vermeiden. (I2d8c1, Iafb18, I03463, I7ecef)
Aktualisierung der Abhängigkeit
- Das Artefakt
lifecycle-viewmodel-compose
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()
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) }
Kotlin-Kompatibilität mit mehreren Plattformen
Das lifecycle-viewmodel
-Artefakt und die APIs wie ViewModel
, ViewModelStore
, ViewModelStoreOwner
und ViewModelProvider
werden jetzt in Artefakten bereitgestellt, die mit Kotlin Multiplatform kompatibel sind. (b/214568825)
Um diese Änderung zu berücksichtigen, verfügen Methoden wie die in ViewModelProvider
, die ein java.lang.Class<T>
-Objekt verwendet haben, nun über eine äquivalente Methode, die ein kotlin.reflect.KClass<T>
-Objekt verwendet.
Die Binärkompatibilität unter Android wurde beibehalten. Beim Vergleich der Android-API-Oberfläche mit der gängigen API-Oberfläche gibt es jedoch einige wesentliche Änderungen:
- 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.- Es wird empfohlen, benutzerdefinierte Factorys von
ViewModelProvider.Factory
zu erweitern und diecreate
-Methode zu verwenden, dieCreationExtras
erfordert, oder dieviewModelFactory
Kotlin DSL zu verwenden.
- Es wird empfohlen, benutzerdefinierte Factorys von
- Die Verwendung von
ViewModelProvider
ohne eine benutzerdefinierte Factory auf Nicht-JVM-Plattformen führt zu einemUnsupportedOperationException
. Auf JVM-Plattformen wird die Kompatibilität durch die Verwendung des ViewModel-Konstruktors (no-args) sichergestellt, wenn keine benutzerdefinierte Factory vorhanden ist. viewModelScope
wird auf Plattformen, auf denenDispatchers.Main
nicht verfügbar ist (z.B.EmptyCoroutineContext
Linux).
Änderungen im Verhalten
InitializerViewModelFactory
(einschließlich der Builder-FunktionviewModelFactory
) gibt jetzt eineIllegalArgumentException
aus, wenn bereits eineinitializer
mit derselbenclazz: KClass<VM : ViewModel>
hinzugefügt wurde. (IC3a36)
Fehlerkorrekturen
ViewModel.getCloseable
behandelt jetzt duplizierte Schlüssel: Wenn mitkey
bereits eineAutoCloseable
-Ressource verknüpft ist, wird die alte Ressource sofort ersetzt und geschlossen. (Ibeb67)- Der Zugriff auf den
viewModelScope
einerViewModel
ist jetzt threadsicher. (If4766, b/322407038)
Externer Beitrag
LocalLifecycleOwner
wurde von der Compose-UI zu „Lifecycle-runtime-compose“ verschoben, damit die zugehörigen auf Compose basierenden Hilfs-APIs außerhalb der Compose-UI verwendet werden können. Vielen Dank an Jake Wharton für den Beitrag. (I6c41b, b/328263448)
Version 2.8.0-alpha02
21. Februar 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha02
wurde 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. Sie kann beispielsweise zusammen mit „Navigation Compose“ verwendet werden, um zu vermeiden, dass Click-Events verarbeitet werden, nachdem ein Wechsel 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
-Codierungserweiterungen wurden jetzt in das Basis-Lebenszyklusmodul 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 Lifecycle APIs in
Lifecycle
,LifecycleOwner
,LifecycleObserver
,Lifecycle.State
,Lifecycle.Event
undLifecycleRegistry
werden jetzt in Artefakten bereitgestellt, die mit Kotlin Multiplatform kompatibel sind. (b/317249252)
API-Änderungen
- Das Aufrufen von
LifecycleStartEffect
undLifecycleResumeEffect
ohne Schlüssel ist jetzt ein Fehler. Dabei gilt dieselbe Konvention wie bei derDisposableEffect
API, die in diesen APIs widergespiegelt wird. (Ib0e0c, b/323518079) ViewModel
verwendet jetztAutoCloseable
anstelle vonCloseable
. Das ist eine abwärtskompatible Änderung. (I27f8e, b/214568825)LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
zugunsten vonLiveData.toPublisher(lifecycleOwner)
eingestellt. (Iabe29, b/262623005)
Externer Beitrag
- Danke Ivan Matkov von Jetbrains für seine Unterstützung beim Wechsel von Lifecycle zu Kotlin Multiplatform. (aosp/2926690, I0c5ac, If445d)
Version 2.8.0-alpha01
24. Januar 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha01
wurde veröffentlicht. Version 2.8.0-alpha01 enthält diese Commits.
Neue Funktionen
ViewModel
unterstützt jetzt das Hinzufügen vonCloseable
-Objekten mit einerkey
, die das Abrufen übergetCloseable()
ermöglicht. (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 UnterbrechungsfunktionsetCurrentState()
, die dafür sorgt, dass die Statusänderung und alleLifecycleObserver
-Callbacks vor der Rückgabe abgeschlossen sind. Im Gegensatz zum direkten Festlegen descurrentState
-Attributs wird dabeirunBlocking
nicht verwendet. Die Verwendung innerhalb einer Koroutine wie der vonrunTest
bereitgestellten ist daher sicher.- Die
LiveData
-Erweiterungen vonmap
undswitchMap
spiegeln jetzt das Verhalten vondistinctUntilChanged
wider. Wenn fürLiveData
einevalue
festgelegt ist, wird diemap
/switchMap
-Funktion sofort aufgerufen, um dasvalue
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
SavedStateHandle
benutzerdefinierteParcelable
-Klassen nach dem Beenden von Prozessen und der Neuerstellung nicht richtig wiederhergestellt hat. Aufgrund der Typinformationen, die durch das Android-Framework verloren gehen, ist für Arrays von benutzerdefinierten Parcelables zusätzliche Arbeit erforderlich (manuelle Erstellung eines typisierten Arrays des richtigen Typs). In der Dokumentation zuget
,getLiveData
undgetStateFlow
wird diese Einschränkung jetzt ausdrücklich erwähnt. - Die mit
LifecycleObserver
verknüpften Proguard-Notizen-Regeln wurden entfernt. Das bedeutet, dass geschützter Code, der APIs über Reflexion verwenden möchte (z. B. die seit Langem verworfene@OnLifecycleEvent
-Annotation), eigene Keep-Regeln für den jeweiligen Anwendungsfall bereitstellen muss.
Beobachtbarkeit von Lebenszyklus-Ereignissen
- Als Alternative zu
LifecycleEventObserver
können Sie jetzt eineFlow
vonLifecycle.Event
über die ErweiterungsmethodeLifecycle.asFlow()
beobachten. - Nutzer von Jetpack Compose 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()
}
// …
}
- Nutzer von Jetpack Compose können
LifecycleStartEffect
undLifecycleResumeEffect
verwenden, um Paare von Ereignissen zu verarbeiten, die von „gestartet“ bzw. „pausiert“ fortgesetzt werden. Diese API spiegelt die inDisposableEffect
wider und eignet sich für Fälle, in denen die beim Ansteigen des Status vorgenommene Änderung beim Zurückgehen rückgängig gemacht werden muss.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleStartEffect(viewModel) {
val timeTracking = viewModel.startTrackingTimeOnScreen()
onStopOrDispose {
timeTracking.stopTrackingTimeOnScreen()
}
}
// …
}
Weitere Informationen finden Sie unter Code für Lebenszyklusereignisse ausführen.
Beobachtbarkeit des Lebenszyklusstatus
- Der aktuelle
Lifecycle.State
kann jetzt über das AttributLifecycle.currentStateFlow
beobachtet werden, das eineStateFlow
zurückgibt, wobeivalue
der aktuelleLifecycle.State
ist. - Nutzer von Jetpack Compose können die Erweiterung
Lifecycle.currentStateAsState()
verwenden, umLifecycle.State
direkt als Compose-State
anzuzeigen. Dies entsprichtlifecycle.currentStateFlow.collectAsState()
(und eine kürzere Alternative).
Weitere Informationen finden Sie unter Lebenszyklusstatus mit Abläufen erfassen.
Version 2.7.0-rc02
13. Dezember 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc02
wurde veröffentlicht. Version 2.7.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem
SavedStateHandle
die benutzerdefiniertenParcelable
-Klassen nicht richtig wiederhergestellt hat, nachdem „Defekt“ und „Neuerstellung“ verarbeitet wurden. Aufgrund der Typinformationen, die durch das Android-Framework verloren gehen, ist für Arrays von benutzerdefinierten Parcelables zusätzliche Arbeit erforderlich (manuelle Erstellung 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
entsorgen jetzt den Effektblock und erstellen ihn neu, wennLifecycleOwner
geändert wird. (Ia25c6)
Version 2.7.0-beta01
1. November 2023
androidx.lifecycle:lifecycle-*:2.7.0-beta01
wurde ohne Änderungen freigegeben. Version 2.7.0-beta01 enthält diese Commits.
- Eine Ausweitung 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
wurde 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 vermeiden, dassLifecycle.State
desTestLifecycleOwner
mithilfe des FeldscurrentState
innerhalb einer Koroutine festgelegt wird. 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
wurde 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 daslifecycle-livedata
-Hauptmodul verschoben. (I10c6f, b/274800183)
Änderungen im Verhalten
- Die Erweiterungen
LiveData.map()
undLiveData.switchMap()
legen jetzt denvalue
der zurückgegebenenLiveData
fest, wenn für die vorherigeLiveData
ein Wert festgelegt war. Dadurch wird sichergestellt, dass die Verwendung der resultierenden LiveData in Jetpack Compose den richtigen Status für die ursprüngliche Komposition hat. (I91d2b, b/269479952) addCloseable()
vonViewModel
schließt jetztCloseable
sofort, wennViewModel
bereits einen Anruf anonCleared()
erhalten hat. (I4712e, b/280294730)
Fehlerkorrekturen
- Aus Lebenszyklus
2.6.2
: Ein Problem wurde behoben, bei demSavedStateHandle
nach dem Beenden des Prozesses nicht korrekt wiederhergestellt wurde, wenn der Status wiederhergestellt wurde,save()
aufgerufen wurde, ohne den Status 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
wurde veröffentlicht. Version 2.7.0-alpha01 enthält diese Commits.
API-Änderungen
Lifecycle.State
kann jetzt überLifecycle.currentStateFlow
beobachtbar werden, was eineStateFlow
zurückgibt, 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, um Compose-SideEffect
s basierend aufLifecycle.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 eine kürzere Alternative). (I11015, b/235529345)
Fehlerkorrekturen
- Die Erweiterung
LiveData.distinctUntilChanged()
legt jetzt denvalue
der zurückgegebenenLiveData
fest, 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) - Die mit
LifecycleObserver
verknüpften Proguard-Notizen-Regeln wurden entfernt. Das bedeutet, dass geschützter Code, der APIs über Reflexion verwenden möchte, eigene Keep-Regeln für den jeweiligen Anwendungsfall bereitstellen muss. (Ia12fd)
Version 2.6
Version 2.6.2
6. September 2023
androidx.lifecycle:lifecycle-*:2.6.2
wurde 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. Damit wird die Interaktion zwischenrememberSaveable
und „Navigation Compose“-NavHost
behoben. (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.
Aktualisierung der Abhängigkeiten
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 ein neuesisInitialized
-Attribut, das angibt, ob jemals ein expliziter Wert fürLiveData
festgelegt wurde. So kannst du zwischenliveData.value
, dienull
zurückgeben, weil noch nie ein Wert festgelegt wurde, oder einem explizitennull
-Wert unterscheiden.MediatorLiveData
enthält jetzt einen Konstruktor zum Festlegen eines Anfangswerts.- Auf
StateFlow
undFlow
voncollectAsStateWithLifecycle()
wurde eine neue Erweiterung hinzugefügt, die aus Abläufen Daten erfasst und den neuesten Wert als Erstellungsstatus in Lebenszyklusbewusster Weise darstellt. - Die Methoden
Lifecycle.launchWhenX
undLifecycle.whenX
wurden eingestellt, da die Verwendung eines pausierten Disponenten in einigen Fällen zur Verschwendung von Ressourcen führen kann. Wir empfehlen die Verwendung vonLifecycle.repeatOnLifecycle
. Weitere Informationen zum einmaligen Aussetzen von Arbeit finden Sie in dieser Erklärung, warum dies von Natur aus unsicher ist. - Kotlin-Konvertierung: Eine große Anzahl von Lifecycle-Klassen wurde in Kotlin konvertiert. Alle konvertierten Klassen behalten ihre Binärkompatibilität mit früheren Versionen. Die folgenden Klassen enthalten inkompatible Änderungen für Klassen, die in Kotlin geschrieben wurden:
ViewTreeLifecycleOwner
,LiveDataReactiveStreams
,HasDefaultViewModelProviderFactory
,ViewTreeViewModelStoreOwner
,Transformations
,ViewModelStoreOwner
undLifecycleOwner
.
In der folgenden Tabelle sind die Quell-Conversions für die neue Lebenszyklusversion aufgeführt.
Lebenszyklus 2.5 | Lifecycle 2.5 (KTX) | Lebenszyklus 2.6 |
---|---|---|
Transformations.switchMap(liveData) {...} |
liveData.switchMap {...} |
liveData.switchMap {...} |
Transformations.map(liveData) {...} |
liveData.map {...} |
liveData.map {...} |
Transformations.distinctUntilChanged(liveData) {...} |
liveData.distinctUntilChanged{...} |
liveData.distinctUntilChanged{...} |
LiveDataReactiveStreams.fromPublisher(publisher) |
publisher.toLiveData() |
publisher.toLiveData() |
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) |
liveData.toPublisher(lifecycleOwner) |
liveData.toPublisher(lifecycleOwner) |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override val defaultViewModelProviderFactory = factory |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override val defaultViewModelProviderCreationExtras = extras |
ViewTreeLifecycleOwner.set(view, owner) |
ViewTreeLifecycleOwner.set(view, owner) |
view.setViewTreeLifecycleOwner(owner) |
ViewTreeLifecycleOwner.get(view) |
view.findViewTreeLifecycleOwner() |
view.findViewTreeLifecycleOwner() |
override fun getViewModelStore(): ViewModelStore = store |
override fun getViewModelStore(): ViewModelStore = store |
override val viewModelStore: ViewModelStore = store |
override fun getLifecycle(): Lifecycle = registry |
override fun getLifecycle(): Lifecycle = registry |
override val lifecycle: Lifecycle get() = registry |
- Die Null-Zulässigkeit der
onChanged
-Methode einer in Kotlin erstelltenObserver
stimmt jetzt mit der Null-Zulässigkeit des generischen Typs überein. WennObserver.onChanged()
einen Typ akzeptieren soll, für den Nullwerte zulässig sind, müssen SieObserver
mit einem Typ, der Nullwerte zulässt, instanziieren. - Die folgenden Klassen wurden ebenfalls in Kotlin konvertiert, sind aber weiterhin quellkompatibel:
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
wurde veröffentlicht. Version 2.6.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Die Erweiterung
LiveData.distinctUntilChanged()
legt jetzt denvalue
der zurückgegebenenLiveData
fest, 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
wurde veröffentlicht. Version 2.6.0-beta01 enthält diese Commits.
Kotlin-Conversions
LifecycleOwner
ist jetzt in Kotlin geschrieben. Diese Änderung ist nicht mit der Quelle kompatibel für Klassen, die in Kotlin geschrieben wurden. Sie müssen jetzt das Attributlifecycle
überschreiben, anstatt die vorherigegetLifecycle()
-Funktion zu implementieren. (I75b4b, b/240298691)ViewModelStoreOwner
ist jetzt in Kotlin verfügbar. 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 in das Artefaktlifecycle-common
vonlifecycle-runtime-ktx
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
wurde veröffentlicht. Version 2.6.0-alpha05 enthält diese Commits.
Kotlin-Conversions
Transformations
ist jetzt in Kotlin geschrieben. Diese nicht mit der Quelle kompatible Änderung für Klassen, die in Kotlin geschrieben wurden und direkt eine Syntax wieTransformations.map
verwendet haben: Kotlin-Code muss jetzt die Kotlin-Erweiterungsmethodensyntax verwenden, die zuvor nur mitlifecycle-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. 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.setViewTreeViewModelStoreOwner
undandroidx.lifecycle.findViewTreeViewModelStoreOwner
direkt importieren und verwenden, um einen zuvor festgelegten Inhaber festzulegen und zu finden. Dies ist binärkompatibel und bleibt für Implementierungen, die in der Programmiersprache Java geschrieben sind, quellkompatibel. (Ia06d8, Ib22d8, b/240298691)- Die
HasDefaultViewModelProviderFactory
-Schnittstelle ist jetzt in Kotlin geschrieben. Diese Änderung ist nicht mit der Quelle kompatibel für Klassen, die in Kotlin geschrieben wurden. Sie müssen jetzt die AttributedefaultViewModelProviderFactory
unddefaultViewModelCreationExtras
überschreiben, anstatt die vorherigen entsprechenden Funktionen zu implementieren. (Iaed9c, b/240298691) Observer
ist jetzt in Kotlin geschrieben. Die MethodeonChanged()
verwendet jetzt den Namenvalue
für ihren Parameter. (Iffef2, I4995e, b/240298691)AndroidViewModel
,AbstractSavedStateViewModelFactory
,LifecycleService
,ServiceLifecycleDispatcher
undProcessLifecycleOwner
sind jetzt in Kotlin geschrieben (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691).
Version 2.6.0-alpha04
11. Januar 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha04
wurde veröffentlicht. Version 2.6.0-alpha04 enthält diese Commits.
Neue Funktionen
LiveData
enthält jetzt ein neuesisInitialized
-Attribut, das angibt, ob jemals ein expliziter Wert fürLiveData
festgelegt wurde. So kannst du zwischenliveData.value
, dienull
zurückgeben, weil noch nie ein Wert festgelegt wurde, oder einem explizitennull
-Wert unterscheiden. (Ibd018)
API-Änderungen
- Die
collectAsStateWithLifecycle()
APIs vonlifecycle-runtime-compose
befinden sich nicht mehr im experimentellen Status. (I09d42, b/258835424) - Die Methoden
Lifecycle.launchWhenX
undLifecycle.whenX
wurden eingestellt, da die Verwendung eines pausierten Disponenten in einigen Fällen zur Verschwendung von Ressourcen führen kann. Wir empfehlen die Verwendung vonLifecycle.repeatOnLifecycle
. (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. Dies ersetzt die vorherige Kotlin-Erweiterung inlifecycle-runtime-ktx
. Dies ist binärkompatibel und bleibt für Implementierungen, die in der Programmiersprache Java geschrieben sind, quellkompatibel. (I8a77a, I5234e, b/240298691)LiveDataReactiveStreams
ist jetzt in Kotlin geschrieben. Die Kotlin-Erweiterungen, die zuvor inlifecycle-reactivestreams-ktx
enthalten waren, wurden in daslifecycle-reactivestreams
-Modul verschoben und sind zur primären Oberfläche für Code, der in Kotlin geschrieben wurde. Dies ist eine nicht mit der Quelle kompatible Änderung für Code, der in Kotlin geschrieben wurde, sofern Sie nicht bereits die Kotlin-Erweiterungsmethoden-APIs verwendet haben. (I2b1b9, I95d22, b/240298691)DefaultLifecycleObserver
,LifecycleEventObserver
,Lifecycle
,LifecycleRegistry
,LifecycleObserver
undViewModelStore
sind jetzt in Kotlin geschrieben (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23/618}, /618})
Fehlerkorrekturen
SavedStateHandle
stürzt beim Aufrufen vonget()
mit der falschen Klasse nicht mehr mit einerClassCastException
ab Typ. (I6ae7c)
Version 2.6.0-alpha03
24. Oktober 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha03
wurde veröffentlicht. Version 2.6.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem Einschränkungen zwischen verschiedenen Lebenszyklusmodulen nicht wie vorgesehen funktionierten. (I18d0d, b/249686765)
- Von
LifecycleRegistry.moveToState()
ausgegebene 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 beim Upgrade automatisch aktualisiert. b/242871265FlowLiveData.asFlow()
erstellt jetzt einecallbackFlow
statt eine eigeneChannel
-Implementierung, um sicherzustellen, Thread-Sicherheit und Kontexterhaltung. (I4a8b2, b/200596935)- Die Funktion
FlowLiveData
asLiveData
behält jetzt den Anfangswert einesStateFlow
bei, wenn das neueLiveData
-Objekt. (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
wurde veröffentlicht. Version 2.6.0-alpha01 enthält diese Commits.
Neue Funktionen
- Es wurde eine neue Erweiterung auf
StateFlow
undFlow
voncollectAsStateWithLifecycle
hinzugefügt, die Daten aus Abläufen erfassen und ihren neuesten Wert als Zusammensetzungsstatus auf lebenszyklusbewusste Weise darstellen. Der Datenfluss wird erfasst und die neue Emissionen wird auf den Wert des Bundesstaats gesetzt, wenn der Lebenszyklus mindestens in einem bestimmtenLifecycle.State
liegt. 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 die Funktioncreate(modelClass)
jetzt korrekt aufgerufen, wenn der zustandsorientierteAndroidViewModelFactory
-Konstruktor mitLifecycle
ab Version 2.4 verwendet wird. (I5b315, b/238011621)
Version 2.5.0
29. Juni 2022
androidx.lifecycle:lifecycle-*:2.5.0
wurde 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
ist es nicht mehr erforderlich,AndroidViewModelFactory
oderAbstractSavedStateViewModelFactory
zu verlängern, um Zugriff aufApplication
bzw.SavedStateHandle
zu erhalten. Stattdessen werden diese Felder in jeder abgeleitetenViewModelProvider.Factory
-Klasse alsCreationExtras
über die neue Überlastung voncreate
bereitgestellt: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
in Bezug auf einen oder mehrere Lambda-Initialisierer definieren können, einen für jede bestimmteViewModel
-Klasse, die Ihre benutzerdefinierte Factory 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-Factory zum Erstellen einerViewModel
-Instanz verwendet, ohne dass eine benutzerdefinierteViewModelProvider.Factory
erstellt werden muss.// Within a @Composable, you can now skip writing a custom Factory // and instead write a lambda to do the initialization of your ViewModel val detailViewModel = viewModel { // This lambda is only called the first time the ViewModel is created // and all CreationExtras are available inside the lambda val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) }
SavedStateHandle Compose Saver-Integration: Das
lifecycle-viewmodel-compose
-Artefakt enthält jetzt neue experimentelle APIs inSavedStateHandle.saveable
, die einrememberSaveable
-ähnliches Verhalten ermöglichen, das durchSavedStateHandle
eines `ViewModel.class ListScreenViewModel(handle: SavedStateHandle): ViewModel() { // This value survives both configuration changes and process death and recreation val editMode by handle.saveable { mutableStateOf(false) } }
Es wurden eine
addCloseable()
API und eine neue Konstruktor-Überlastung hinzugefügt, mit denen Sie demViewModel
ein oder mehrereCloseable
-Objekte hinzufügen können. Diese werden geschlossen, wennViewModel
gelöscht wird, ohne dass manuelle Schritte inonCleared()
erforderlich sind.Um beispielsweise einen Koroutinebereich zu erstellen, den Sie in ein ViewModel einfügen, aber durch 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() } }
Das kann dann im
ViewModel
-Konstruktor unter Beibehaltung der Lebensdauer vonviewModelScope
verwendet werden:class TestScopeViewModel( val customScope: CloseableCoroutineScope = CloseableCoroutineScope() ) : ViewModel(customScope) { // You can now use customScope in the same way as viewModelScope }
Verhaltensänderungen
- Wenn Sie versuchen, das
Lifecycle.State
vonINITIALIZED
nachDESTROYED
zu verschieben, wird jetzt immerIllegalStateException
ausgegeben ob derLifecycle
einen Beobachter angehängt ist. LifecycleRegistry
löscht jetzt die Beobachter, wenn sie den StatusDESTROYED
erreichen.
Version 2.5.0-rc02
15. Juni 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc02
wurde veröffentlicht. Version 2.5.0-rc02 enthält diese Commits.
Fehlerkorrekturen
ViewModelProvider
stürzt nicht mehr ab, wenn frühere Versionen von „compilOnly Lifecycle-Abhängigkeiten“ mit Versionen ab 2.5 kombiniert werden. (I81a66, b/230454566)
Version 2.5.0-rc01
11. Mai 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc01
wurde veröffentlicht. Version 2.5.0-rc01 enthält diese Commits.
Fehlerkorrekturen
MediatorLiveData.addSource()
gibt jetzt eineNullPointerException
aus, wenn einenull
-Quelle übergeben wird, anstatt dienull
-Quelle an Beobachter weiterzugeben.(Ibd0fb, b/123085232)
Version 2.5.0-beta01
20. April 2022
androidx.lifecycle:lifecycle-*:2.5.0-beta01
wurde veröffentlicht. Version 2.5.0-beta01 enthält diese Commits.
API-Änderungen
- Es wurden
SavedStateHandle.saveable
-Attributdelegierte hinzugefügt, um Property-Namen als Schlüssel für die dauerhafte Speicherung des Status inSavedStateHandle
zu verwenden (I8bb86, b/225014345).
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem das Verschachteln einer
NavHost
in einem anderenNavHost
auf einem nicht primären Navigations-Tab am unteren Rand zu einemIllegalStateException
führte, wenn mehrere Back-Stacks verwendet wurden. (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
- Experimentelle
MutableState
-Überlastung zuSavedStateHandle.saveable
hinzufügen für Parität mitrememberSaveable
(I38cfe, b/224565154)
API-Änderungen
CreationExtras
ist jetzt abstrakt und nicht versiegelt. (Ib8a7a)
Fehlerkorrekturen
- Ein
IllegalStateException: Already attached to lifecycleOwner
-Fehler behoben, der durchSavedStateHandleController
verursacht wurde. (I7ea47, b/215406268)
Version 2.5.0-alpha05
23. März 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha05
wurde 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 Lebenszyklusversionen in Java wurde behoben. (I52c8a, b/219545060)
Fehlerkorrekturen
SavedStateViewFactory
unterstützt jetzt die Verwendung vonCreationExtras
, auch wenn es mit einemSavedStateRegistryOwner
initialisiert wurde. Wenn Extras angegeben werden, werden die initialisierten Argumente ignoriert. (I6c43b, b/224844583)
Version 2.5.0-alpha04
9. März 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha04
wurde 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 als stattLiveData
. (Iad3ab, b/178037961)
Version 2.5.0-alpha03
23. Februar 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha03
wurde veröffentlicht. Version 2.5.0-alpha03 enthält diese Commits.
Neue Funktionen
- Es wurden eine
addCloseable()
API und eine neue Konstruktor-Überlastung, mit der Sie eine oder mehrereCloseable
-Objekte für denViewModel
, der geschlossen, wennViewModel
gelöscht wird, ohne dass manuelle Arbeit inonCleared()
. (I55ea0) lifecycle-viewmodel
bietet jetzt einInitializerViewModelFactory
, mit dem du Lambda zur Verarbeitung hinzufügen kannst bestimmteViewModel
-Klassen, wobeiCreationExtras
als primäre Daten verwendet wird Quelle. (If58fc, b/216687549)lifecycle-viewmodel-compose
bietet jetzt eineviewModel()
API an, die verwendet eine Lambda-Factory zum Erstellen einerViewModel
-Instanz ohne das Erstellen einer benutzerdefiniertenViewModelProvider.Factory
erforderlich ist. (I97fbb, b/216688927)
API-Änderungen
- Sie können jetzt ein
ViewModel
mitCreationExtras
erstellen über:lifecycle-viewmodel-compose
(I08887, b/216688927)
Verhaltensänderungen
- Es wird versucht,
Lifecycle.State
vonINITIALIZED
nachDESTROYED
gibt jetzt trotzdem immer einenIllegalStateException
aus ob derLifecycle
einen Beobachter angehängt ist. (I7c390, b/177924329) LifecycleRegistry
löscht jetzt die Beobachter, wenn sie den StatusDESTROYED
erreichen. (I4f8dd, b/142925860)
Version 2.5.0-alpha02
9. Februar 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha02
wurde veröffentlicht. Version 2.5.0-alpha02 enthält diese Commits.
API-Änderungen
SavedStateHandle
undSavedStateViewModelFactory
wurden in Kotlin konvertiert. Dies hat die Null-Zulässigkeit der generischen Elemente in beiden Klassen verbessert. (Ib6ce2, b/216168263, I9647a, b/177667711)- Der Funktionsparameter
LiveData
switchMap
kann haben jetzt eine Ausgabe, die Nullwerte zulässt. (I40396, b/132923666) - Die
LiveData
-KKT-Erweiterungen sind jetzt mit Anmerkungen@CheckResult
, um zu erzwingen, dass das Ergebnis beim Aufrufen dieser Funktionen. (Ia0f05, b/207325134)
Verhaltensänderungen
SavedStateHandle
speichert den Standardwert jetzt korrekt, wenn Für den angegebenen Schlüssel ist kein Wert vorhanden. (I1c6ce, b/178510877)
Fehlerkorrekturen
- Von Lebenszyklus
2.4.1
:lifecycle-process
wurde in Abhängigkeit von Startup 1.1.1 aktualisiert, um sicherzustellen, dass Fehlerbehebungen, die verhindern, dassProcessLifecycleInitializer
keineStartupException
auslöst, standardmäßig verfügbar sind. (Ib01df, b/216490724) - Es gibt jetzt eine verbesserte Fehlermeldung, wenn benutzerdefinierte
AndroidViewModel
-Kurse Folgendes enthalten: in falscher Reihenfolge und versuchen, 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, 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)
Nach dieser Änderung nimmt ViewModelProvider
keine direkten Aufrufe an die vorherige create(Class<T>)
-Methode von ViewModelProvider.Factory
mehr vor. Stattdessen wird eine neue Überlastung von create
aufgerufen: create(Class<T>, CreationExtras)
. Das bedeutet, dass jede direkte Implementierung der ViewModelProvider.Factory
-Instanz jetzt Zugriff auf jede dieser neuen CreationExtras
hat:
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY
: DieseString
bietet Zugriff auf den benutzerdefinierten Schlüssel, den Sie anViewModelProvider.get()
übergeben haben.ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY
bietet Zugriff auf die KlasseApplication
.SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY
bietet Zugriff auf dieSavedStateRegistryOwner
, die zum Erstellen dieses ViewModel verwendet wird.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY
bietet Zugriff auf dasViewModelStoreOwner
, das zum Erstellen dieses ViewModel 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 frühere Version dieser Bibliotheken verwenden, ist CreationExtras
leer. Alle vorhandenen Unterklassen von ViewModelProvider.Factory
wurden neu geschrieben, um sowohl den alten Erstellungspfad, der von früheren Versionen dieser Bibliotheken verwendet wird, als auch den CreationExtras
-Pfad, der in Zukunft verwendet wird, zu unterstützen.
Mit diesen CreationExtras
können Sie eine ViewModelProvider.Factory
erstellen, die genau die benötigten Informationen an die einzelnen ViewModel
weitergibt, 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)
Du kannst benutzerdefinierte CreationExtras
bereitstellen, indem du getDefaultViewModelCreationExtras()
in deinem ComponentActivity
oder Fragment
überschreibst. Dadurch stehen sie deinem benutzerdefinierten ViewModelProvider.Factory
als unterstützte Injektion zur Verfügung. Diese Extras stehen deiner benutzerdefinierten Factory automatisch zur Verfügung, wenn du sie direkt mit ViewModelProvider
oder den Kotlin-Eigenschaftserweiterungen by viewModels()
und by activityViewModels()
verwendest. (I79f2b, b/207012584, b/207012585, b/207012490)
Fehlerkorrekturen
- Es wurde ein Problem behoben, durch das der Standardwert
SavedStateHandle
, werden nach der Verarbeitung auch wenn es speziell um den Tod und die Freizeit geht, ausSavedStateHandle
entfernt. Als Konsequenz ausSavedStateHandle
wird mit der Standardeinstellung und wiederhergestellte Werte zusammen, verwenden Sie die wiederhergestellten Werte als „Source of Truth“ zu definieren. (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
- Aus Lebenszyklus
2.5.0-alpha01
rückportiert: Ein Problem wurde behoben, bei dem der Standardwert zur inSavedStateHandle
werden nach der Verarbeitung auch wenn es speziell um den Tod und die Freizeitbeschäftigung geht, ausSavedStateHandle
entfernt. Als Konsequenz ausSavedStateHandle
wird mit der Standardeinstellung und wiederhergestellte Werte zusammen, verwenden Sie die wiederhergestellten Werte als „Source of Truth“ zu definieren. (I53a4b) lifecycle-process
hängt jetzt von Androidx Startup 1.1.1 ab, wodurch eine Regression behoben wurde, bei der die Verwendung vonProcessLifecycleInitializer
einStartupException
verursachen würde. (b/216490724)
Version 2.4.0
27. Oktober 2021
androidx.lifecycle:lifecycle-*:2.4.0
wurde veröffentlicht. Version 2.4.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.3.0
- „
@OnLifecycleEvent
“ wurde eingestellt. Verwenden Sie stattdessenLifecycleEventObserver
oderDefaultLifecycleObserver
. androidx.lifecycle:lifecycle-viewmodel-compose
Mediathek wurde hinzugefügt. Sie bietet die zusammensetzbaren FunktionenviewModel()
undLocalViewModelStoreOwner
.- Abweichende Änderung:
ViewModelProvider
wurde in Kotlin neu geschrieben. Die MethodeViewModelProvider.Factory.create
lässt keine generischen Nullwerte mehr zu.
- Abweichende Änderung:
- Neue Coroutines API wurde
androidx.lifecycle:lifecycle-runtime-ktx
hinzugefügt: Lifecycle.repeatOnLifecycle
: API, die einen Codeblock in einer Koroutine ausführt, wenn der Lebenszyklus mindestens in einem bestimmten Zustand ist. Der Block wird abgebrochen und neu gestartet, wenn der Lebenszyklus in den Zielzustand ein- und wieder entfernt wird.Flow.flowWithLifecycle
, eine API, die Werte aus dem vorgelagerten Ablauf ausgibt, wenn der Lebenszyklus mindestens in einem bestimmten Zustand ist.- „
DefaultLifecycleObserver
“ wurde aus dem Ordner „lifecycle.lifecycle-common-java8
“ in den Ordner „lifecycle.lifecycle-common
“ verschoben.lifecycle.lifecycle-common-java8
bietet nebenlifecycle.lifecycle-common
keine zusätzlichen Funktionen mehr, daher kann die Abhängigkeit davon durchlifecycle.lifecycle-common
ersetzt werden. - API für Nicht-Koroutinen von
lifecycle-viewmodel-ktx
wurde in das Modullifecycle-viewmodel
verschoben. lifecycle-process
verwendet jetztandroidx.startup
, umProcessLifecycleOwner
zu initialisieren.Zuvor wurde dies von
androidx.lifecycle.ProcessLifecycleOwnerInitializer
durchgeführt.Wenn Sie
tools:node="remove"
verwendet haben, wird dieContentProvider
zum Initialisieren verwendet in der Vergangenheit durchgeführt haben, dann müssen Sie stattdessen Folgendes tun.<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 im Vergleich zum Lebenszyklus 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
wurde veröffentlicht. Version 2.4.0-beta01 enthält diese Commits.
API-Änderungen
- „
@OnLifecycleEvent
“ wurde eingestellt.LifecycleEventObserver
oder Verwenden Sie stattdessenDefaultLifecycleObserver
. (I5a8fa) - StandardLifecycleObserver wurde von
androidx.lifecycle.lifecycle-common-java8
verschoben nachandroidx.lifecycle.lifecycle-common
.androidx.lifecycle.lifecycle-common-java8
bietet keine zusätzlichen Funktionen mehr zuandroidx.lifecycle.lifecycle-common
. Daher kann die Abhängigkeit davon durchandroidx.lifecycle.lifecycle-common
ersetzt werden. (I021aa) - Nicht-Coroutines-API von
lifecycle-viewmodel-ktx
wurde verschoben nach: Modullifecycle-viewmodel
. (I6d5b2)
Externer Beitrag
Version 2.4.0-alpha03
4. August 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha03
wurde veröffentlicht. Version 2.4.0-alpha03 enthält diese Commits.
API-Änderungen
- Abweichende Änderung: ViewModelProvider wurde in Kotlin neu geschrieben.
Die Methode
ViewModelProvider.Factory.create
lässt keine Nullwerte mehr zu generisch sind. (I9b9f6)
Änderungen im Verhalten
Lifecycle.repeatOnLifecycle
:block
wird jetzt bei wiederholter Ausführung immer nacheinander aufgerufen. (Ibab33)
Externer Beitrag
- Vielen Dank, chao2zhang, dass du die Code-Snippets in der
repeatOnLifecycle
-Dokumentation korrigiert hast. #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
wurde eine neue Lint-Prüfung fürRepeatOnLifecycleWrongUsage
hinzugefügt, die erkennt, wennrepeateOnLifecycle
inonStart()
oderonResume()
falsch verwendet wird. (706078, b/187887400)
API-Änderungen
- Die
LifecycleOwner.addRepeatingJob
API wird entfernt in Bevorzugung vonLifecycle.repeatOnLifecycle
, die strukturierte Daten respektiert Parallelität und ist einfacher zu verstehen. (I4a3a8) - Machen Sie
ProcessLifecycleInitializer
öffentlich, damit andereandroidx.startup.Initializer
s sie als Abhängigkeiten verwenden können. (I94c31)
Fehlerkorrekturen
- Es wurde ein Problem mit der Lint-Prüfung
NullSafeMutableLiveData
behoben, wenn das Feld Modifikatoren enthält. (Nr. 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, maxsav, dass du die Lint-Prüfung für
NullSafeMutableLiveData
verbessert hast. (Nr. 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.
Änderungen im Verhalten
lifecycle-process
verwendet jetztandroidx.startup
, umProcessLifecycleOwner
zu initialisieren.Zuvor wurde dies von
androidx.lifecycle.ProcessLifecycleOwnerInitializer
durchgeführt.Wenn Sie
tools:node="remove"
verwendet haben, wird dieContentProvider
zum Initialisieren verwendet in der Vergangenheit durchgeführt haben, dann müssen Sie stattdessen Folgendes tun.<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 mithilfe derLifecycle.repeatOnLifecycle
API Werte aus dem vorgelagerten Ablauf ausgibt, wenn der Lebenszyklus mindestens in einem bestimmten Zustand ist. Dies ist eine Alternative zur ebenfalls neuenLifecycleOwner.addRepeatinJob
API. (I0f4cd)
Fehlerkorrekturen
- Aus Lebenszyklus 2.3.1: Die Lint-Regel
NonNullableMutableLiveData
kann jetzt zwischen Feldvariablen mit unterschiedlicher Null-Zulässigkeit unterscheiden. (b/169249668)
Lebenszyklusansichtsmodell Compose-Version 1.0.0
Version 1.0.0-alpha07
16. Juni 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07
wurde veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.
Nicht abwärtskompatible API-Änderungen
viewModel()
nimmt jetzt eine OptionalesViewModelStoreOwner
, um die Arbeit zu erleichtern mit anderen Inhabern alsLocalViewModelStoreOwner
. Sie können jetzt beispielsweiseviewModel(navBackStackEntry)
verwenden, um ein ViewModel abzurufen, das mit einem bestimmten Navigationsdiagramm verknüpft ist. (I2628d, b/188693123)
Version 1.0.0-alpha06
2. Juni 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06
wurde 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
wurde veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.
Abhängigkeitsänderungen
- In dieser Version sind
androidx.hilt:hilt-navigation-compose
undandroidx.navigation:navigation-compose
zulässig um Abhängigkeiten vonandroidx.compose.compiler:compiler:1.0.0-beta04
undandroidx.compose.runtime:runtime:1.0.0-beta04
zu synchronisieren. Bei 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 Folgendes zurück:ViewModelStoreOwner
, für die Nullwerte zulässig sind, um besser bestimmen zu können ob eineViewModelStoreOwner
in der aktuellen Zusammensetzung. APIs, die eineViewModelStoreOwner
erfordern, z. B. alsviewModel()
undNavHost
, wird trotzdem eine Ausnahme ausgelöst. wenn keinViewModelStoreOwner
festgelegt ist. (Idf39a)
Lifecycle-Viewmodel-Compose Version 1.0.0-alpha02
24. Februar 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02
wurde veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.
API-Änderungen
LocalViewModelStoreOwner
hat jetzt eineprovides
-Funktion, die wird mitCompositionLocalProvider
verwendet, wodurch dieasProvidableCompositionLocal()
API ersetzt wird. (I45d24)
Lifecycle-Viewmodel-Compose Version 1.0.0-alpha01
10. Februar 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
wurde veröffentlicht. Version 1.0.0-alpha01 enthält diese Commits.
Neue Funktionen
- Die zusammensetzbare Funktion
viewModel()
undLocalViewModelStoreOwner
wurden vonandroidx.compose.ui.viewinterop
in dieses Artefakt im Paketandroidx.lifecycle.viewmodel.compose
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
- Die Lint-Regel
NonNullableMutableLiveData
kann jetzt korrekt zwischen Feldvariablen mit unterschiedlicher Null-Zulässigkeit unterscheiden. (b/169249668)
Version 2.3.0
Version 2.3.0
10. Februar 2021
androidx.lifecycle:lifecycle-*:2.3.0
wurde veröffentlicht. Version 2.3.0 enthält diese Commits.
Große Änderungen seit Version 2.2.0
SavedStateHandle
-Unterstützung für nicht parzierbare Klassen:SavedStateHandle
unterstützt jetzt die verzögerte Serialisierung. Sie können damitsetSavedStateProvider()
für einen bestimmten Schlüssel aufrufen und eineSavedStateProvider
bereitstellen, die einen Callback vonsaveState()
erhält, wennSavedStateHandle
aufgefordert wird, ihren Status zu speichern. Weitere Informationen finden Sie unter Nicht Paketfähige Klassen speichern.- Erzwingung des Lebenszyklusverhaltens:
- LifecycleRegistry erzwingt jetzt
DESTROYED
als Endzustand. LifecycleRegistry
überprüft jetzt, ob seine Methoden im Hauptthread aufgerufen werden. Dies war schon immer eine Voraussetzung für den Lebenszyklus von Aktivitäten, Fragmenten usw. Das Hinzufügen von Beobachtern aus Nicht-Hauptthreads führte zu schwer zu erkennenden Abstürzen in der Laufzeit. FürLifecycleRegistry
-Objekte, die Ihren eigenen Komponenten gehören, können Sie Prüfungen mitLifecycleRegistry.createUnsafe(...)
explizit deaktivieren. Dann müssen Sie jedoch dafür sorgen, dass eine ordnungsgemäße Synchronisierung erfolgt, wenn von verschiedenen Threads aus auf dieseLifecycleRegistry
zugegriffen wird.
- LifecycleRegistry erzwingt jetzt
- Lebenszyklusstatus- und Ereignishilfen:
Lifecycle.Event
wurden statische Hilfsmethoden vondownFrom(State)
,downTo(State)
,upFrom(State)
undupTo(State)
zum Generieren vonEvent
mit einerState
und einer Übergangsrichtung hinzugefügt. Es wurde die MethodegetTargetState()
hinzugefügt, die dieState
bereitstellt, auf die der Lebenszyklus direkt nach derEvent
folgt. withStateAtLeast
: Es wurdenLifecycle.withStateAtLeast
APIs hinzugefügt, die auf einen Lebenszyklusstatus warten und zum Zeitpunkt der Statusänderung einen nicht sperrenden Codeblock synchron 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)ViewTree
APIs: Mit den neuen APIsViewTreeLifecycleOwner.get(View)
undViewTreeViewModelStoreOwner.get(View)
können SieLifecycleOwner
undViewModelStoreOwner
mit 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 für die Lambda-Syntax erforderlicheLiveData.observe()
-Kotlin-Erweiterung wurde verworfen, da sie bei Verwendung von Kotlin 1.4 nicht mehr erforderlich ist.
Version 2.3.0-rc01
16. Dezember 2020
androidx.lifecycle:lifecycle-*:2.3.0-rc01
wurde veröffentlicht. Version 2.3.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Die Methode
keys()
vonSavedStateHandle
ist jetzt vor und nach dem Speichern des Status konsistent. Sie enthält jetzt zusätzlich zu den Schlüsseln, die mitset()
undgetLiveData()
verwendet wurden, auch Schlüssel, die zuvor mitsetSavedStateProvider()
verwendet wurden. (aosp/1517919, b/174713653)
Externer Beitrag
- Mit den APIs zum Sperren von lebenszyklusbezogenen Koroutinen werden Aufrufe von
yield()
jetzt besser verarbeitet. Danke, Nicklas Ansman Giertz! (aosp/1430830, b/168777346)
Version 2.3.0-beta01
1. Oktober 2020
androidx.lifecycle:lifecycle-*:2.3.0-beta01
wurde veröffentlicht. Version 2.3.0-beta01 enthält diese Commits.
API-Änderungen
- Kotlin-Erweiterung
LiveData.observe()
zur Verwendung der Lambda-Syntax ist mittlerweile veraltet, da sie ist bei Verwendung von Kotlin 1.4 nicht erforderlich. (I40d3f)
Fehlerkorrekturen
- Androidx auf Kotlin 1.4 aktualisieren (Id6471, b/165307851, b/165300826)
Änderungen an der Dokumentation
- Der
liveData
-Builder und dieasLiveData()
-Dokumentation wurden aktualisiert und enthalten nun Details zum Ändern der angegebenen Zeitlimitwerte. (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
mit einerState
- und Übergangsrichtung zu generieren. Es wurde die MethodegetTargetState()
hinzugefügt, die dieState
bereitstellt, auf die der Lebenszyklus direkt nach derEvent
folgt. (I00887) - Es wurden
Lifecycle.withStateAtLeast
APIs hinzugefügt, die auf einen Lebenszyklusstatus warten und bei Statusänderungen einen nicht anhaltenden Codeblock synchron ausführen und dann fortsetzen mit dem Ergebnis. Diese APIs unterscheiden sich von den vorhandenenwhen*
-Methoden, da sie die Ausführung von Sperrcode nicht zulassen und keinen benutzerdefinierten Dispatcher verwenden. (aosp/1326081)
Änderungen im Verhalten
- LifecycleRegistry erzwingt jetzt
DESTROYED
als Endzustand. (I00887) LifecycleRegistry
überprüft jetzt, ob seine Methoden im Hauptthread aufgerufen werden. Dies war schon immer eine Voraussetzung für den Lebenszyklus von Aktivitäten, Fragmenten usw. Das Hinzufügen von Beobachtern aus Nicht-Hauptthreads führte zu schwer zu erkennenden Abstürzen in 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, die mitlifecycle-livedata-core-ktx
(und konkretNullSafeMutableLiveData
) gebündelt sind, wurde behoben. (b/158699265)
Version 2.3.0-alpha05
24. Juni 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha05
wurde veröffentlicht. Version 2.3.0-alpha05 enthält diese Commits.
Fehlerkorrekturen
- In
LiveData
werden nicht mehr auftretende Anfragen jetzt besser verarbeitet, sodass doppelte Aufrufe vononActive()
oderonInactive()
vermieden werden. (b/157840298) - Es wurde ein Problem 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
wurde 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-Null-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 verzögerte Serialisierung. Sie können damitsetSavedStateProvider()
für einen bestimmten Schlüssel aufrufen und einenSavedStateProvider
angeben, der einen Callback vonsaveState()
erhält, wennSavedStateHandle
aufgefordert wird, seinen Status zu speichern. (b/155106862)- Mit einer neuen
ViewTreeViewModelStoreOwner.get(View)
API können Sie die enthaltendeViewModelStoreOwner
einerView
-Instanz abrufen. Sie müssen ein Upgrade auf Activity1.2.0-alpha05
, Fragment1.3.0-alpha05
und AppCompat1.3.0-alpha01
ausführen, um dieses Feld korrekt auszufüllen.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
wurde 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 Kaltstartleistung wurde verbessert, indem auf Geräten mit API 28 und niedrigeren Versionen ein Fehler bei der Klassenüberprüfung vermieden wird. (aosp/1282118)
Version 2.3.0-alpha01
4. März 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha01
wurde veröffentlicht. Version 2.3.0-alpha01 enthält diese Commits.
Neue Funktionen
- Mit einer neuen
ViewTreeLifecycleOwner.get(View)
API können Sie die enthaltendeLifecycleOwner
einerView
-Instanz abrufen. Sie müssen ein Upgrade auf Aktivität1.2.0-alpha01
und Fragment1.3.0-alpha01
ausführen, um dieses Feld korrekt auszufüllen. Inlifecycle-runtime-ktx
ist einefindViewTreeLifecycleOwner
Kotlin-Erweiterung verfügbar. (aosp/1182361, aosp/1182956) - Es wurde eine neue Lint-Prüfung hinzugefügt, die warnt, wenn Sie einen
null
-Wert für eineMutableLiveData
festlegen, die 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 einTestLifecycleOwner
bereitstellt, dasLifecycleOwner
implementiert und ein Thread-sicheres, änderbaresLifecycle
bereitstellt. (aosp/1242438)
Fehlerkorrekturen
- Das Artefakt
lifecycle-runtime
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
wurde veröffentlicht. Version 2.2.0 enthält diese Commits.
Der Wert für „Lifecycle ViewModel SavedState“ hat jetzt dieselbe Version wie andere Lebenszyklus-Artefakte. Das Verhalten von 2.2.0
ist mit dem Verhalten von 1.0.0
identisch.
Version 2.2.0
22. Januar 2020
androidx.lifecycle:lifecycle-*:2.2.0
wurde veröffentlicht. Version 2.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.1.0
- Integration der Lebenszyklus-Koroutine: Das neue
lifecycle-runtime-ktx
-Artefakt fügt die Integration zwischen Lifecycle- und Kotlin-Koroutinen hinzu. Die Funktion „lifecycle-livedata-ktx
“ wurde ebenfalls erweitert, damit du auch gemeinsame Routinen nutzen kannst. Weitere Informationen finden Sie unter Kotlin-Koroutinen mit Architekturkomponenten verwenden. - Einstellung von
ViewModelProviders.of()
:ViewModelProviders.of()
wurde verworfen. Sie könnenFragment
oderFragmentActivity
an den neuenViewModelProvider(ViewModelStoreOwner)
-Konstruktor übergeben, um die gleiche Funktionalität zu erhalten, wenn Sie Fragment1.2.0
verwenden. - Einstellung von
lifecycle-extensions
-Artefakten: DaViewModelProviders.of()
oben eingestellt wurde, stellt dieser Release die Einstellung der letzten API inlifecycle-extensions
dar. Dieses Artefakt sollte jetzt vollständig als veraltet 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. und wenn Es ist in der Programmiersprache Java 7 geschrieben. Sie könnenLifecycleEventObserver
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 ein simuliertes
ViewModel
-Objekt inViewModelStore
gespeichert und später mit der Standard-Factory abgerufen wurde. - Die Verwendung von
Dispatchers.Main.immediate
inlaunchWhenCreated
und ähnlichen Methoden wurde behoben, die während des entsprechenden Lebenszyklusereignisses synchron aufgerufen werden. (aosp/1156203)
Externe Beiträge
- Danke an Anders Järleberg für den Beitrag zur Fehlerbehebung. (aosp/1156203)
- Vielen Dank an Vsevolod Tolstopyatov von Jetbrains für die Überprüfung der Implementierung der Inline-Ausführung.
Abhängigkeitsänderungen
- Lebenszykluserweiterungen hängen jetzt von Fragment
1.2.0-rc03
ab.
Version 2.2.0-rc02
7. November 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc02
wurde veröffentlicht. Version 2.2.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler in der Proguard-Einrichtung der Bibliothek behoben, der Geräte mit API 28+ betraf, wenn die Ziel-API unter 29 war. (b/142778206)
Version 2.2.0-rc01
23. Oktober 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc01
wurde 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 den Beitrag zur Fehlerbehebung. (aosp/1145596)
Version 2.2.0-beta01
9. Oktober 2019
androidx.lifecycle:lifecycle-*:2.2.0-beta01
wurde veröffentlicht. Version 2.2.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Es wurde eine im Lebenszyklus 2.2.0-alpha05 eingeführte Regression behoben, die in der Reihenfolge
ProcessLifecycleOwner
und dieLifecycleOwner
der Aktivität auf Android 10-Geräten gestartet und fortgesetzt wurde. (aosp/1128132) - Behebung einer im Lebenszyklus
2.2.0-alpha05
eingeführten Regression, die bei Verwendung von Version2.0.0
oder2.1.0
vonlifecycle-process
zu einerNullPointerException
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 gemeinsam genutzten LiveData Builder behoben. b/140249349
Version 2.2.0-alpha04
5. September 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha04
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
lifecycleScope
,whenCreated
,whenStarted
,whenResumed
,viewModelScope
und die zugrunde liegende Implementierung vonliveData
verwenden jetztDispatchers.Main.immediate
anstelle vonDispatchers.Main
. (b/139740492)
Externe Beiträge
- Vielen Dank an Nicklas Ansman für ihren Beitrag zu
Dispatchers.Main.immediate
. (aosp/1106073)
Version 2.2.0-alpha03
7. August 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha03
wurde 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 wurde für Aktivität1.1.0-alpha02
, Fragment1.2.0-alpha02
und Navigation2.2.0-alpha01
durchgeführt. (aosp/1092370, b/135716331)
API-Änderungen
ViewModelProviders.of()
wurde verworfen. Sie könnenFragment
oderFragmentActivity
an den neuenViewModelProvider(ViewModelStoreOwner)
-Konstruktor übergeben, um dieselbe Funktionalität zu erhalten. (aosp/1009889)
Version 2.2.0-alpha02
2. Juli 2019
androidx.lifecycle:*:2.2.0-alpha02
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
LiveDataScope.initialValue
wurde durchLiveDataScope.latestValue
ersetzt, mit dem der aktuell ausgegebene Wert desliveData
-Blocks erfasst wird.- Dem
liveData
-Builder wurde eine neue Überlastung hinzugefügt, die dentimeout
-Parameter als 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
- In diesem Release werden neue Funktionen hinzugefügt, die Kotlin-Koroutinen für Lifecycle und LiveData unterstützen. Ausführliche Informationen 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
wurde veröffentlicht. Version 1.0.0 enthält diese Commits.
Wichtige Funktionen in Version 1.0.0
- Die neue Klasse SavedStateHandle wurde hinzugefügt. Dadurch können Ihre
ViewModel
-Klassen auf den gespeicherten Status zugreifen und zum gespeicherten Status beitragen. Dieses Objekt kann im Konstruktor der KlasseViewModel
und der Factorys empfangen werden, die standardmäßig von Fragments bereitgestellt werden. AppCompatActivity fügt automatischSavedStateHandle
ein. - SummarySavedStateViewModelFactory 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.
Abhängigkeitsänderungen
- Der Lebenszyklus der ViewModel-Gespeicherte Statusangabe 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
wurde veröffentlicht. Version 1.0.0-rc02 enthält diese Commits.
Abhängigkeitsänderungen
- Abhängig vom Lebenszyklus
2.2.0-rc02
.
ViewModel-SavedState Version 1.0.0-rc01
23. Oktober 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01
wurde ohne Änderungen gegenüber 1.0.0-beta01
freigegeben. 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, bei dem der erste Zugriff auf ein SavedState ViewModel in
Activity.onActivityResult()
zuIllegalStateException
führte. (b/139093676) - Ein
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
wurde veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.
API-Änderungen
SavedStateViewModelFactory
verlängertAbstractSavedStateViewModelFactory
nicht mehr undSavedStateHandle
wird nur für ViewModels erstellt, die es angefragt haben (aosp/1113593).
ViewModel-SavedState Version 1.0.0-alpha03
7. August 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Nicht abwärtskompatible Änderungen
lifecycle-viewmodel-savedstate
ist nicht mehr vonfragment
abhängig und die zugehörigen KonstruktorenSavedStateViewModelFactory(Fragment)
undSavedStateViewModelFactory(FragmentActivity)
wurden entfernt. Stattdessen istSavedStateViewModelFactory
jetzt die Standard-Factory für 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
wurde 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
wurde inSavedStateViewModelFactory
umbenannt.AbstractSavedStateVMFactory
wurde inAbstractSavedStateViewModelFactory
umbenannt.
ViewModel-Savedstate Version 1.0.0-alpha01
13. März 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01
wurde veröffentlicht. Das vollständige Commit-Log für diese erste Version finden Sie hier.
Neue Funktionen
ViewModels
kann jetzt zu „Savedstate“ beitragen. Dazu verwenden Sie die neu eingeführte Viewmodel-FactorySavedStateVMFactory
. 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 anstelle einer verstecktenGenericLifecycleObserver
-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 Koroutinen in ViewModels durch Hinzufügen der Erweiterungseigenschaft
ViewModel.viewModelScope
.
Version 2.1.0
5. September 2019
androidx.lifecycle:lifecycle-*:2.1.0
wurde 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
wurde ohne Änderungen gegenüber androidx.lifecycle:*:2.1.0-beta01
freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Version 2.1.0-beta01
7. Mai 2019
androidx.lifecycle:*:2.1.0-beta01
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Die Lebenszyklen wurden auf die Betaversion umgestellt: APIs, die in früheren Alphaversionen eingeführt wurden, z. B.
liveData
-Erweiterungsfunktionen für Transformationen und Beobachtungen, dieViewModel
-Initialisierung mit Property-Delegierung und andere sind stabil und ändern sich nicht.
Version 2.1.0-alpha04
3. April 2019
androidx.lifecycle:*:2.1.0-alpha04
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
- Wichtige Änderung: Die zugrunde liegende API hinter
by viewModels()
undby activityViewModels()
wurde so geändert, dass sieViewModelStore
direkt und nicht nur eineViewModelStoreOwner
unterstützt. (aosp/932932)
Version 2.1.0-alpha03
13. März 2019
androidx.lifecycle:*:2.1.0-alpha03
wurde veröffentlicht. Die vollständige Liste der in dieser Version enthaltenen Commits 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
wurde veröffentlicht.
API-Änderungen
LifecycleRegistry
enthält jetzt einesetCurrentState()
-Methode, die die mittlerweile verworfene MethodesetState()
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
wurde veröffentlicht.
Neue Funktionen
LifecycleEventObserver
wurde für Fälle hinzugefügt, in denen ein Stream von Lebenszyklusereignissen benötigt wird. Es ist eine öffentliche API anstelle einer ausgeblendetenGenericLifecycleObserver
-Klasse.- KTX-Erweiterungen für
LiveData.observe
- undTransformations.*
-Methoden wurden hinzugefügt. - Methode
Transformations.distinctUntilChanged
wurde hinzugefügt. Dabei wird ein neuesLiveData
-Objekt erstellt, das erst dann einen Wert ausgibt, wenn der LiveData-Quellwert geändert wurde. - Koroutinen-Unterstützung in ViewModels: 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
wurde mit einer Fehlerkorrektur von 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
- Die LifecycleObserver-Proguard-Regel wurde korrigiert, sodass nur Implementierungen und keine Subschnittstellen beibehalten werden. b/71389427
- Die ViewModel-Proguard-Regeln wurden korrigiert, um Verschleierung und Verkleinerung zu ermöglichen.
Versionen vor AndroidX
Für die folgenden Lebenszyklus-Versionen vor AndroidX sind die folgenden Abhängigkeiten eingeschlossen:
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
Nur eine kleine Änderung: android.arch.core.util.Function
wurde 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 wie Paging direkt von lifecycle:common
abhängen.
Version 1.1.0
22. Januar 2018
Änderungen an der Verpackung
Neue, viel kleinere Abhängigkeiten sind jetzt verfügbar:
android.arch.lifecycle:livedata:1.1.0
android.arch.lifecycle:viewmodel:1.1.0
API-Änderungen
- Die veralteten
LifecycleActivity
undLifecycleFragment
wurden entfernt. Bitte verwenden SieFragmentActivity
,AppCompatActivity
oder unterstützenFragment
. @NonNull
Anmerkungen wurdenViewModelProviders
undViewModelStores
hinzugefügt- Der
ViewModelProviders
-Konstruktor wurde verworfen. Verwenden Sie bitte direkt seine statischen Methoden ViewModelProviders.DefaultFactory
wurde eingestellt – bitteViewModelProvider.AndroidViewModelFactory
verwenden- Die statische Methode
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
wurde hinzugefügt, um eine statischeFactory
, die zum Erstellen vonViewModel
- undAndroidViewModel
-Instanzen geeignet ist.