Lebenszyklus
Komponenten, die den Lebenszyklus berücksichtigen, führen Aktionen als Reaktion auf eine Änderung des Lebenszyklusstatus einer anderen Komponente aus, z. B. Aktivitäten und Fragmente. Diese Komponenten helfen Ihnen, besser organisierten und häufig einfacheren Code zu erstellen, der einfacher zu verwalten ist.

In dieser Tabelle sind alle Artefakte in der Gruppe androidx.lifecycle aufgeführt.

Artefakt Stabile Version Releasekandidat Beta-Ausgabe Alphaversion
lifecycle-* 2.8.7 - - 2.9.0-alpha06
Lebenszyklus-Ansicht-Modell-Zusammensetzung 2.8.7 - - 2.9.0-alpha06
Diese Bibliothek wurde zuletzt am 30. Oktober 2024 aktualisiert.

Abhängigkeiten deklarieren

Wenn Sie eine Abhängigkeit von Lifecycle hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.

Fügen Sie der Datei build.gradle für Ihre App oder Ihr Modul die Abhängigkeiten für die erforderlichen Artefakte hinzu:

Kotlin

Groovy

    dependencies {
        def lifecycle_version = "2.8.7"
        def arch_version = "2.2.0"

        // ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
        // ViewModel utilities for Compose
        implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version"
        // LiveData
        implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
        // Lifecycles only (without ViewModel or LiveData)
        implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"
        // Lifecycle utilities for Compose
        implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version"

        // Saved state module for ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"

        // Annotation processor
        kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version"

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version"

        // optional - ReactiveStreams support for LiveData
        implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version"

        // optional - Test helpers for LiveData
        testImplementation "androidx.arch.core:core-testing:$arch_version"

        // optional - Test helpers for Lifecycle runtime
        testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version"
    }
    

Kotlin

    dependencies {
        val lifecycle_version = "2.8.7"
        val arch_version = "2.2.0"

        // ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version")
        // ViewModel utilities for Compose
        implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version")
        // LiveData
        implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version")
        // Lifecycles only (without ViewModel or LiveData)
        implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version")
        // Lifecycle utilities for Compose
        implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version")

        // Saved state module for ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version")

        // Annotation processor
        kapt("androidx.lifecycle:lifecycle-compiler:$lifecycle_version")
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version")

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version")

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version")

        // optional - ReactiveStreams support for LiveData
        implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version")

        // optional - Test helpers for LiveData
        testImplementation("androidx.arch.core:core-testing:$arch_version")

        // optional - Test helpers for Lifecycle runtime
        testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version")
    }
    

Java

Groovy

    dependencies {
        def lifecycle_version = "2.8.7"
        def arch_version = "2.2.0"

        // ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
        // LiveData
        implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
        // Lifecycles only (without ViewModel or LiveData)
        implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"

        // Saved state module for ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"

        // Annotation processor
        annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version"

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version"

        // optional - ReactiveStreams support for LiveData
        implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version"

        // optional - Test helpers for LiveData
        testImplementation "androidx.arch.core:core-testing:$arch_version"

        // optional - Test helpers for Lifecycle runtime
        testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version"
    }
    

Kotlin

    dependencies {
        val lifecycle_version = "2.8.7"
        val arch_version = "2.2.0"

        // ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version")
        // LiveData
        implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version")
        // Lifecycles only (without ViewModel or LiveData)
        implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version")

        // Saved state module for ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version")

        // Annotation processor
        annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version")
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version")

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version")

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version")

        // optional - ReactiveStreams support for LiveData
        implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version")

        // optional - Test helpers for LiveData
        testImplementation("androidx.arch.core:core-testing:$arch_version")

        // optional - Test helpers for Lifecycle runtime
        testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version")
    }
    

Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.

Feedback

Ihr Feedback hilft uns, Jetpack zu verbessern. Teilen Sie uns mit, wenn Sie neue Ausgaben entdecken oder Verbesserungsvorschläge für diese Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können einem vorhandenen Problem Ihre Stimme geben, indem Sie auf die Schaltfläche mit dem Stern klicken.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.

Version 2.9

Version 2.9.0-alpha06

30. Oktober 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha06 wird veröffentlicht. Version 2.9.0-alpha06 enthält diese Commits.

Verhaltensänderungen

  • Der Status Lifecycle.DESTROYED ist ein Endstatus. Jeder Versuch, eine Lifecycle von diesem Status in einen anderen Status zu verschieben, führt jetzt zu einer IllegalStateException. (I116c4, b/370577987)
  • SavedStateHandle enthält keine SavedStateProvider.saveState() mehr, bei denen die zurückgegebene Bundle leer ist. (I910b5, b/370577987)

Fehlerkorrekturen

  • Lifecycle.eventFlow wird jetzt korrekt abgeschlossen, wenn Lifecycle = DESTROYED ist (I293b2, b/374043130)

Version 2.9.0-alpha05

16. Oktober 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha05 wird ohne nennenswerte Änderungen veröffentlicht. Version 2.9.0-alpha05 enthält diese Commits.

Version 2.9.0-alpha04

2. Oktober 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha04 wird veröffentlicht. Version 2.9.0-alpha04 enthält diese Commits.

Kotlin Multiplatform

  • Das Modul lifecycle-viewmodel-savedstate ist jetzt so konfiguriert, dass es KMP-kompatibel ist, um APIs wie SavedStateHandle in einem zukünftigen Release im gemeinsamen Quellsatz zur Verfügung zu stellen. (I503ed, I48764, b/334076622)

Version 2.9.0-alpha03

18. September 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha03 wird veröffentlicht. Version 2.9.0-alpha03 enthält diese Commits.

Fehlerkorrekturen

  • Lifecycle 2.8.6: Der Lint-Fehler NullSafeMutableLiveData wurde verbessert, um die Unterstützung für Smartcasts zu optimieren und Fehlalarme zu vermeiden. (85fed6, b/181042665)

Aktualisierung der Abhängigkeiten

Version 2.9.0-alpha02

4. September 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha02 wird veröffentlicht. Version 2.9.0-alpha02 enthält diese Commits.

Fehlerkorrekturen

  • Unter Lebenszyklus 2.8.5: Aktualisieren Sie die androidx.lifecycle.ReportFragment ProGuard-Regeln, um die Verschleierung zuzulassen . (ff898e1)

Externer Beitrag

  • Verschieben Sie androidx.compose.ui.platform.LocalLifecycleOwner in den gemeinsamen Quellsatz (KMP). Vielen Dank an Ivan Matkov von JetBrains für den Beitrag. (8cd5d03)
  • Aus Lebenszyklus 2.8.5: Der Erweiterungsdelegat SavedStateHandle.saveable unterstützt jetzt Nullwerte. Vielen Dank an Roman Kalukiewicz für den Beitrag. (0d78ea6)

Version 2.9.0-alpha01

7. August 2024

androidx.lifecycle:lifecycle-*:2.9.0-alpha01 wird veröffentlicht. Version 2.9.0-alpha01 enthält diese Commits.

Kotlin Multiplatform

  • lifecycle-testing ist jetzt KMP-kompatibel. (Iea41e)
  • Unterstützung für linuxArm64-Kotlin-Multiplatform-Ziel hinzugefügt (I139d3, b/338268719)

Neue Funktionen

  • Es ist ein neues KMP-Artefakt androidx.lifecycle:lifecycle-viewmodel-testing verfügbar, das eine ViewModelScenario-Klasse zum isolierten Testen von ViewModels mit Unterstützung für onCleared (alle Plattformen) und SavedStateHandle (nur Android) bietet. (337f68d, c9b3409, 9799a95c, b/264602919)
  • Das Erstellen einer ViewModel mit ViewModelProvider ist jetzt threadsicher. @MainThread-Anmerkungen wurden entfernt. (Ifd978, b/237006831)

API-Änderungen

  • Fügen Sie die CreationExtras.Key()-Factory-Funktion hinzu, um das Erstellen anonymer CreationExtras.Key-Objekte zu vereinfachen. (I970ee)
  • CreationExtras enthält jetzt kartenähnliche Operatorüberladungen, um eine idiomatische Bearbeitung von Inhalten in Kotlin zu ermöglichen. Sie ermöglicht die Verwendung von in, += und + mit CreationExtras. (Ib4353)
  • CreationExtras implementiert jetzt die Methoden equals, hashCode und toString. (Ib4353)
  • NewInstanceFactory ist jetzt auf JVM Desktop- und Android-Zielen verfügbar. (d3d0892)
  • Inline-Erweiterungseigenschaft, um die zugrunde liegende Anwendung in der Kotlin-Version 2.0 (I39df2) sicher freizugeben

Fehlerkorrekturen

  • Die manuelle Kennzeichnung des Zugriffs auf neue Plattform-APIs wurde entfernt, da dies bei Verwendung von R8 mit AGP 7.3 oder höher (z.B. R8 Version 3.3) und für alle Builds bei Verwendung von AGP 8.1 oder höher (z.B. D8 Version 8.1) automatisch über die API-Modellierung erfolgt. Kunden, die AGP nicht verwenden, wird empfohlen, auf D8-Version 8.1 oder höher zu aktualisieren. Weitere Details findest du in diesem Artikel. (If6b4c, b/345472586)

Version 2.8

Version 2.8.7

30. Oktober 2024

androidx.lifecycle:lifecycle-*:2.8.7 wird veröffentlicht. Version 2.8.7 enthält diese Commits.

API-Änderungen

  • androidx.compose.ui.platform.LocalLifecycleOwner ist jetzt im Common Source Set (KMP) verfügbar. (6a3f5b3)
  • lifecycle-runtime-compose: desktop-Artefakte wurden entfernt und -jvmStubs- und -linuxx64Stubs-Artefakte hinzugefügt. Keines dieser Ziele ist zur Verwendung vorgesehen. Sie dienen als Platzhalter für die Arbeit mit Jetbrains Compose. (6a3f5b3)

Version 2.8.6

18. September 2024

androidx.lifecycle:lifecycle-*:2.8.6 wurde veröffentlicht. Version 2.8.6 enthält diese Commits.

Fehlerkorrekturen

  • Der Lint-Fehler NullSafeMutableLiveData wurde verbessert, um die Unterstützung für intelligente Übergaben zu verbessern und Fehlalarme zu vermeiden. (85fed6, b/181042665)

Abhängigkeitsupdates

Version 2.8.5

4. September 2024

androidx.lifecycle:lifecycle-*:2.8.5 wird veröffentlicht. Version 2.8.5 enthält diese Commits.

Fehlerkorrekturen

  • Aktualisieren Sie die androidx.lifecycle.ReportFragment ProGuard-Regeln, um die Verschleierung zuzulassen . (ff898e1)

Externer Beitrag

  • Der SavedStateHandle.saveable-Erweiterungsdelegat unterstützt jetzt nullwertige Werte. Vielen Dank an Roman Kalukiewicz für den Beitrag. (0d78ea6)

Version 2.8.4

24. Juli 2024

androidx.lifecycle:lifecycle-*:2.8.4 wird veröffentlicht. Version 2.8.4 enthält diese Commits.

Fehlerkorrekturen

  • LiveData.asFlow() verarbeitet jetzt korrekt Fälle, in denen der zurückgegebene Ablauf sofort abgeschlossen wird, nachdem ein Wert empfangen wurde, der bereits auf der LiveData festgelegt wurde (z. B. bei Verwendung von take(1)). (I9c566)
  • Die Fertigstellung von Lifecycle*Effect ist jetzt idempotent. Wenn onStopOrDispose aufgrund eines Lifecycle-Stopps aufgerufen wurde, wird er bei der Entsorgung nicht noch einmal aufgerufen, es sei denn, der Lifecycle kehrt wieder zu STARTED zurück. (I5f607, b/352364595)

Version 2.8.3

1. Juli 2024

androidx.lifecycle:lifecycle-*:2.8.3 wird veröffentlicht. Version 2.8.3 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem mit der Abwärtskompatibilität von Lifecycle 2.8 mit Compose 1.6.0 und niedriger bei der Verwendung von Code-Shrinking wurde behoben. (aosp/3133056, b/346808608)

Version 2.8.2

12. Juni 2024

androidx.lifecycle:lifecycle-*:2.8.2 wird veröffentlicht. Version 2.8.2 enthält diese Commits.

Fehlerkorrekturen

  • CompositionLocal LocalLifecycleOwner not present Fehler bei der Verwendung von Lifecycle 2.8.X mit Compose 1.6.X oder niedriger behoben. Sie können Lifecycle 2.8.2 jetzt mit jeder Version von Compose verwenden, ohne dass Sie Umwege gehen müssen. (aosp/3105647, b/336842920)
  • ViewModelProvider stürzt nicht mehr ab, wenn frühere Versionen von compileOnly-Lebenszyklusabhängigkeiten mit Versionen 2.8 und höher kombiniert werden. Dadurch werden Probleme mit Bibliotheken wie LeakCanary behoben. (I80383, b/341792251)

Version 2.8.1

29. Mai 2024

androidx.lifecycle:lifecycle-*:2.8.1 wurde veröffentlicht. Version 2.8.1 enthält diese Commits.

Fehlerkorrekturen

  • lifecycle-viewmodel-compose hat jetzt nur noch eine gemeinsame Abhängigkeit von compose-runtime, wodurch die gemeinsame Abhängigkeit von compose-ui entfernt wird. Das Android-Artefakt behält aus Gründen der Kompatibilität seine compose-ui bei. (aosp/3079334, b/339562627)
  • Bei der saveable-Integration von ViewModel mit Attributdelegierten wird jetzt der Klassenname als Teil des automatisch generierten Schlüssels verwendet, um Konflikte zu vermeiden, wenn mehrere Klassen dieselbe SavedStateHandle verwenden. (aosp/3063463)

Version 2.8.0

14. Mai 2024

androidx.lifecycle:lifecycle-*:2.8.0 wird veröffentlicht. Version 2.8.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.7.0

  • LocalLifecycleOwner wurde von der Compose-Benutzeroberfläche zu lifecycle-runtime-compose verschoben, damit die Compose-basierten Hilfs-APIs auch außerhalb der Compose-Benutzeroberfläche verwendet werden können.
  • Das lifecycle-runtime-compose-Artefakt enthält jetzt die dropUnlessResumed- und dropUnlessStarted-APIs, mit denen Sie Klicks oder andere Ereignisse aufzeichnen können, die auch nach dem Absinken des LifecycleOwner unter den angegebenen Lifecycle.State auftreten. Sie kann beispielsweise zusammen mit Navigation Compose verwendet werden, um die Verarbeitung von Click-Events zu vermeiden, nachdem ein Wechsel zu einem anderen Bildschirm bereits begonnen hat: onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
  • ViewModel.viewModelScope ist jetzt ein überschreibbarer Konstruktorparameter, mit dem Sie Ihren eigenen Dispatcher und SupervisorJob() einfügen oder den Standardwert überschreiben können, indem Sie die in runTest verfügbare backgroundScope verwenden. (I2817c, b/264598574)

    class MyViewModel(
      // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate
      viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob()
    ) : ViewModel(viewModelScope) {
      // Use viewModelScope as before, without any code changes
    }
    
    // Allows overriding the viewModelScope in a test
    fun Test() = runTest {
      val viewModel = MyViewModel(backgroundScope)
    }
    
  • ViewModel wurde in Kotlin neu geschrieben und verwendet jetzt AutoClosable anstelle von Closeable. Sie unterstützt jetzt das Hinzufügen von AutoCloseable-Objekten mit einer key, die das Abrufen über getCloseable() ermöglicht.

  • Der Aufruf von LifecycleStartEffect und LifecycleResumeEffect ohne Schlüssel führt jetzt zu einem Fehler. Dabei wird dieselbe Konvention wie bei der DisposableEffect API angewendet, die diese APIs spiegeln.

  • LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) wurde zugunsten von LiveData.toPublisher(lifecycleOwner) verworfen.

  • Die lifecycle-livedata-core-ktx-Kotlin-Erweiterungen wurden in das lifecycle-livedata-core-Modul verschoben.

  • Der NullSafeMutableLiveData wurde überarbeitet, um viele falsch positive Ergebnisse zu vermeiden.

Lebenszyklus der Kotlin Multiplatform-Kompatibilität

Die wichtigsten Lifecycle APIs in Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event und LifecycleRegistry werden jetzt in Artefakten bereitgestellt, die mit Kotlin Multiplatform kompatibel sind.

Betroffene Artefakte:

  • lifecycle-common verlagert die meisten APIs zu common und unterstützt neben Android auch jvm und iOS.
  • lifecycle-runtime verlagert die meisten APIs zu common und unterstützt neben Android auch jvm und iOS.
  • lifecycle-runtime-ktx ist jetzt leer, da alle APIs in lifecycle-runtime verschoben wurden.
  • lifecycle-runtime-compose verlagert alle APIs zu common und stellt ein Android-Artefakt bereit, das der Multiplattformunterstützung von androidx.compose entspricht.

ViewModel Kotlin Multiplatform Compatibility

Das lifecycle-viewmodel-Artefakt und die APIs wie ViewModel, ViewModelStore, ViewModelStoreOwner und ViewModelProvider werden jetzt in Artefakten bereitgestellt, die mit Kotlin Multiplatform kompatibel sind.

Um dieser Änderung Rechnung zu tragen, gibt es für Methoden wie die auf ViewModelProvider, die eine java.lang.Class<T> als Argument erwarteten, jetzt eine entsprechende Methode, die eine kotlin.reflect.KClass<T> erwartet.

Die Binärkompatibilität unter Android wurde beibehalten. Es gibt jedoch einige bemerkenswerte Änderungen, wenn die Android API-Oberfläche mit der gemeinsamen API-Oberfläche verglichen wird:

  • Das Erstellen einer ViewModelProvider-Instanz erfolgt nun über die ViewModelProvider.create()-Methoden, anstatt ihren Konstruktor direkt aufzurufen.
  • ViewModelProvider.NewInstanceFactory und ViewModelProvider.AndroidViewModelFactory sind nur auf Android-Geräten verfügbar.
    • Bei benutzerdefinierten Fabriken wird empfohlen, ViewModelProvider.Factory zu erweitern und die create-Methode zu verwenden, die eine CreationExtras annimmt, oder die viewModelFactory Kotlin DSL.
  • Wenn Sie ViewModelProvider ohne benutzerdefinierte Fabrik auf Nicht-JVM-Plattformen verwenden, führt dies zu einer UnsupportedOperationException. Auf JVM-Plattformen wird die Kompatibilität durch Verwendung des ViewModel-Konstruktors ohne Argumente beibehalten, wenn keine benutzerdefinierte Factory angegeben wird.
  • viewModelScope wird auf Plattformen, auf denen Dispatchers.Main nicht verfügbar ist, auf EmptyCoroutineContext zurückgesetzt (z.B. Linux).

Betroffene Artefakte:

  • lifecycle-viewmodel verlagert die meisten APIs zu common und unterstützt neben Android auch jvm und iOS.
  • lifecycle-viewmodel-ktx ist jetzt leer, da alle APIs in lifecycle-viewmodel verschoben wurden.
  • lifecycle-viewmodel-compose verlagert alle APIs zu common und stellt ein Android-Artefakt bereit, das der Multiplattformunterstützung von androidx.compose entspricht.

Änderungen im Verhalten

  • Bei InitializerViewModelFactory (einschließlich der viewModelFactory-Builderfunktion) wird jetzt eine IllegalArgumentException geworfen, wenn bereits eine initializer mit derselben clazz: KClass<VM : ViewModel> hinzugefügt wurde. (Ic3a36)

Bekannte Probleme

Version 2.8.0-rc01

1. Mai 2024

androidx.lifecycle:lifecycle-*:2.8.0-rc01 wird veröffentlicht. Version 2.8.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem das Baseline-Profil für lifecycle-common-Klassen nicht richtig gepackt wurde. Diese werden jetzt im AAR-File lifecycle-runtime verpackt. (aosp/3038274, b/322382422)
  • Eine unbeabsichtigte Änderung der Reihenfolge, in der AutoCloseable-Instanzen, die an ein ViewModel angehängt sind, gelöscht werden, wurde behoben. Die vorherige Reihenfolge addCloseable(String, AutoCloseable), dann addClosable(AutoCloseable), dann onCleared() wurde wiederhergestellt. (aosp/3041632)
  • Das Standardverhalten beim Erstellen von viewModelScope für native und JVM-Desktopumgebungen wurde verbessert. (aosp/3039221)

Externer Beitrag

  • Vielen Dank an Victor Kropp für die Verbesserung der Prüfung des Hauptthreads auf JVM Desktop. (aosp/3037116)

Version 2.8.0-beta01

17. April 2024

androidx.lifecycle:lifecycle-*:2.8.0-beta01 wurde veröffentlicht. Version 2.8.0-beta01 enthält diese Commits.

Neue Funktionen

  • Das lifecycle-runtime-compose-Artefakt ist jetzt mit Kotlin Multiplatform kompatibel. Der Code wird in common verschoben und es wird ein Android-Artefakt bereitgestellt, das der Multiplattform-Unterstützung für androidx.compose entspricht. (If7a71, I4f4a0, b/331769623)

Version 2.8.0-alpha04

3. April 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha04 wird veröffentlicht. Version 2.8.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Das lifecycle-viewmodel-compose-Artefakt ist jetzt mit Kotlin Multiplatform kompatibel. Der Code wird in common verschoben und es wird ein Android-Artefakt bereitgestellt, das der plattformübergreifenden Unterstützung von androidx.compose entspricht. Um dieser Änderung Rechnung zu tragen, akzeptiert die composable viewModel-Methode jetzt zusätzlich zu einer java.lang.Class auch eine KClass. (b/330323282)

Fehlerkorrekturen

  • NullSafeMutableLiveData wurde refaktoriert, um viele falsch positive Ergebnisse zu vermeiden. (I2d8c1, Iafb18, I03463, I7ecef)

Aktualisierung der Abhängigkeit

  • Das lifecycle-viewmodel-compose-Artefakt hängt jetzt von Compose 1.6.0 ab.
  • Der Lebenszyklus hängt jetzt vom Profile Installer 1.3.1 ab.

Version 2.8.0-alpha03

20. März 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha03 wurde veröffentlicht. Version 2.8.0-alpha03 enthält diese Commits.

Neue Funktionen

  • ViewModel.viewModelScope ist jetzt ein überschreibbarer Konstruktorparameter, mit dem Sie Ihren eigenen Dispatcher und SupervisorJob() einschleusen oder den Standardwert mithilfe der in runTest verfügbaren backgroundScope überschreiben können. (I2817c, b/264598574)

    class MyViewModel(
      // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate
      viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob()
    ) : ViewModel(viewModelScope) {
      // Use viewModelScope as before, without any code changes
    }
    
    // Allows overriding the viewModelScope in a test
    fun Test() = runTest {
      val viewModel = MyViewModel(backgroundScope)
    }
    

Kompatibilität von Kotlin Multiplatform

Das lifecycle-viewmodel-Artefakt und APIs wie ViewModel, ViewModelStore, ViewModelStoreOwner und ViewModelProvider werden jetzt in Artefakten ausgeliefert, die mit Kotlin Multiplatform kompatibel sind. (b/214568825)

Um diese Änderung zu berücksichtigen, verfügen Methoden wie die unter ViewModelProvider, die ein java.lang.Class<T>-Objekt verwendet haben, nun über eine äquivalente Methode, die einen kotlin.reflect.KClass<T>-Vorgang verwendet.

Die Binärkompatibilität unter Android wurde beibehalten. Es gibt jedoch einige bemerkenswerte Änderungen, wenn die Android API-Oberfläche mit der gemeinsamen API-Oberfläche verglichen wird:

  • Das Erstellen einer ViewModelProvider-Instanz erfolgt nun über die ViewModelProvider.create()-Methoden, anstatt ihren Konstruktor direkt aufzurufen.
  • ViewModelProvider.NewInstanceFactory und ViewModelProvider.AndroidViewModelFactory sind nur auf Android-Geräten verfügbar.
    • Bei benutzerdefinierten Fabriken wird empfohlen, ViewModelProvider.Factory zu erweitern und die create-Methode zu verwenden, die eine CreationExtras annimmt, oder die viewModelFactory Kotlin DSL.
  • Wenn Sie ViewModelProvider ohne benutzerdefinierte Fabrik auf Nicht-JVM-Plattformen verwenden, führt dies zu einer UnsupportedOperationException. Auf JVM-Plattformen wird die Kompatibilität durch Verwendung des ViewModel-Konstruktors ohne Argumente beibehalten, wenn keine benutzerdefinierte Factory angegeben wird.
  • viewModelScope wird auf Plattformen, auf denen Dispatchers.Main nicht verfügbar ist (z.B.EmptyCoroutineContext Linux).

Änderungen im Verhalten

  • Bei InitializerViewModelFactory (einschließlich der viewModelFactory-Builderfunktion) wird jetzt eine IllegalArgumentException geworfen, wenn bereits eine initializer mit derselben clazz: KClass<VM : ViewModel> hinzugefügt wurde. (Ic3a36)

Fehlerkorrekturen

  • ViewModel.getCloseable verarbeitet jetzt doppelte Schlüssel: Wenn der key bereits eine AutoCloseable-Ressource zugewiesen ist, wird die alte Ressource sofort ersetzt und geschlossen. (Ibeb67)
  • Der Zugriff auf die viewModelScope eines ViewModel ist jetzt threadsicher. (If4766, b/322407038)

Externer Beitrag

  • LocalLifecycleOwner wurde von der Compose-Benutzeroberfläche zu lifecycle-runtime-compose verschoben, damit die Compose-basierten Hilfs-APIs auch außerhalb der Compose-Benutzeroberfläche verwendet werden können. Vielen Dank an Jake Wharton für den Beitrag. (I6c41b, b/328263448)

Version 2.8.0-alpha02

21. Februar 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha02 wird veröffentlicht. Version 2.8.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Die APIs dropUnlessResumed und dropUnlessStarted wurden hinzugefügt, mit denen Sie Klicks oder andere Ereignisse löschen können, die auftreten, selbst wenn der LifecycleOwner unter den angegebenen Lifecycle.State fällt. Dies kann beispielsweise mit Navigation Compose verwendet werden, um Klickereignisse zu vermeiden, nachdem der Übergang zu einem anderen Bildschirm bereits begonnen hat: onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) } (Icba83, b/317230685)

Kotlin-Conversions

  • ViewModel ist jetzt in Kotlin geschrieben (I16f26, b/214568825)
  • Die lifecycle-viewmodel-ktx-Codierungserweiterungen wurden jetzt in das Basis-Lebenszyklusmodul verschoben. (Id787b, b/274800183)
  • Die lifecycle-runtime-ktx-Kotlin-Erweiterungen wurden in das Basismodul für den Lebenszyklus verschoben. (Ic3686, b/274800183)
  • Die lifecycle-livedata-core-ktx-Codierungserweiterungen wurden jetzt in das Basis-Lebenszyklusmodul verschoben. (I54a3d, b/274800183)

Kotlin-Kompatibilität mit mehreren Plattformen

  • Die wichtigsten Lebenszyklus-APIs in Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event und LifecycleRegistry werden jetzt in Artefakten ausgeliefert, die mit Kotlin Multiplatform kompatibel sind. (b/317249252)

API-Änderungen

  • Der Aufruf von LifecycleStartEffect und LifecycleResumeEffect ohne Schlüssel führt jetzt zu einem Fehler. Dabei wird dieselbe Konvention wie bei der DisposableEffect API angewendet, die diese APIs spiegeln. (Ib0e0c, b/323518079)
  • Für ViewModel wird jetzt AutoCloseable anstelle von Closeable verwendet. Das ist eine abwärtskompatible Änderung. (I27f8e, b/214568825)
  • LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) wurde zugunsten von LiveData.toPublisher(lifecycleOwner) verworfen. (Iabe29, b/262623005)

Externer Beitrag

  • Vielen Dank an Ivan Matkov von Jetbrains, der uns bei der Umstellung von Lifecycle auf Kotlin Multiplatform unterstützt hat. (aosp/2926690, I0c5ac, If445d)

Version 2.8.0-alpha01

24. Januar 2024

androidx.lifecycle:lifecycle-*:2.8.0-alpha01 wird veröffentlicht. Version 2.8.0-alpha01 enthält diese Commits.

Neue Funktionen

  • ViewModel unterstützt jetzt das Hinzufügen von Closeable-Objekten mit einer key, über die sie über getCloseable() abgerufen werden können. (I3cf63)

Version 2.7

Version 2.7.0

10. Januar 2024

androidx.lifecycle:lifecycle-*:2.7.0 wurde veröffentlicht. Version 2.7.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.6.0

  • TestLifecycleOwner enthält jetzt eine Pausierungsfunktion setCurrentState(), die dafür sorgt, dass die Statusänderung und alle LifecycleObserver-Callbacks abgeschlossen sind, bevor die Funktion zurückkehrt. Anders als beim direkten Festlegen der currentState-Property wird hier runBlocking nicht verwendet. Daher kann die Funktion auch in einer Coroutine wie der von runTest verwendet werden.
  • Die LiveData-Erweiterungen von map und switchMap spiegeln jetzt das Verhalten von distinctUntilChanged wider: Wenn für LiveData ein value festgelegt ist, wird die map-/switchMap-Funktion sofort aufgerufen, um den value des zurückgegebenen LiveData zu füllen. Dadurch wird sichergestellt, dass der Anfangswert bei Verwendung mit observeAsState() als Teil der ersten Komposition festgelegt wird. Das Beobachtungsverhalten ändert sich aber nicht. Aktualisierte Werte aus der Quelle LiveData werden erst dann angewendet, wenn Sie mit der Beobachtung von LiveData beginnen.
  • In dieser Version wurde ein Problem behoben, bei dem benutzerdefinierte Parcelable-Klassen nach dem Beenden und Neustarten des Prozesses nicht richtig wiederhergestellt wurden.SavedStateHandle Da vom Android-Framework Typinformationen verloren gehen, erfordern Arrays von benutzerdefinierten Parcelables zusätzliche Arbeit (manuelles Erstellen eines typisierten Arrays des richtigen Typs). In der Dokumentation zu get, getLiveData und getStateFlow wird diese Einschränkung jetzt ausdrücklich erwähnt.
  • Die ProGuard-Aufbewahrungsregeln, die mit LifecycleObserver verknüpft sind, wurden entfernt. Das bedeutet, dass für proguardierten Code, in dem APIs über Reflection verwendet werden sollen (z. B. mit der seit langem veralteten @OnLifecycleEvent-Anmerkung), eigene Regeln für die Beibehaltung für den jeweiligen Anwendungsfall angegeben werden müssen.

Beobachtbarkeit von Lebenszyklusereignissen

  • Alternativ zur Verwendung einer LifecycleEventObserver können Sie jetzt eine Flow von Lifecycle.Event über die Erweiterungsmethode Lifecycle.asFlow() beobachten.
  • Jetpack Compose-Nutzer können jetzt LifecycleEventEffect verwenden, um Compose-Nebeneffekte basierend auf Lifecycle.Event auszuführen.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
  LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
    viewModel.refreshData()
  }
  // …
}
  • Jetpack Compose-Nutzer können LifecycleStartEffect und LifecycleResumeEffect verwenden, um Ereignispaare zu verarbeiten – gestartet zu beendet bzw. fortgesetzt zu pausiert. Diese API entspricht der in DisposableEffect und eignet sich für Fälle, in denen die Änderung, die beim Steigen des Status vorgenommen wird, beim Sinken des Status rückgängig gemacht werden muss.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
  LifecycleStartEffect(viewModel) {
    val timeTracking = viewModel.startTrackingTimeOnScreen()
    onStopOrDispose {
      timeTracking.stopTrackingTimeOnScreen()
    }
  }
  // …
}

Weitere Informationen finden Sie unter Code bei Lebenszyklusereignissen ausführen.

Beobachtbarkeit des Lebenszyklusstatus

  • Der aktuelle Lifecycle.State kann jetzt über das Lifecycle.currentStateFlow-Attribut beobachtet werden. Dieses gibt einen StateFlow zurück, bei dem der value der aktuelle Lifecycle.State ist.
  • Jetpack Compose-Nutzer können die Lifecycle.currentStateAsState()-Erweiterung verwenden, um Lifecycle.State direkt als Compose State bereitzustellen. Dies entspricht lifecycle.currentStateFlow.collectAsState() und ist eine kürzere Alternative.

Weitere Informationen finden Sie unter Lebenszyklusereignisse mithilfe von Abläufen erfassen.

Version 2.7.0-rc02

13. Dezember 2023

androidx.lifecycle:lifecycle-*:2.7.0-rc02 wird veröffentlicht. Version 2.7.0-rc02 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das benutzerdefinierte Parcelable-Klassen nach dem Beenden und Neustarten des Prozesses nicht richtig wiederhergestellt wurden.SavedStateHandle Da die Typinformationen vom Android-Framework verloren gehen, erfordern Arrays von benutzerdefinierten Parcelables zusätzliche Arbeit (manuelles Erstellen eines typisierten Arrays des richtigen Typs). In der Dokumentation zu get, getLiveData und getStateFlow 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 und LifecycleResumeEffect löschen und erstellen den Effektblock jetzt richtig, wenn sich die LifecycleOwner ändert. (Ia25c6)

Version 2.7.0-beta01

1. November 2023

androidx.lifecycle:lifecycle-*:2.7.0-beta01 wird ohne Änderungen veröffentlicht. Version 2.7.0-beta01 enthält diese Commits.

  • Positive Entwicklung der Betaversion, keine größeren Änderungen an dieser Release-Version.

Version 2.7.0-alpha03

18. Oktober 2023

androidx.lifecycle:lifecycle-*:2.7.0-alpha03 wird veröffentlicht. Version 2.7.0-alpha03 enthält diese Commits.

Neue Funktionen

  • lifecycle-runtime-testing enthält jetzt eine neue Lint-Prüfung, um zu verhindern, dass die Lifecycle.State der TestLifecycleOwner über das Feld currentState festgelegt wird, wenn sich der Code in einer Coroutine befindet. Bei der Lint-Prüfung wird jetzt das angehaltene setCurrentState vorgeschlagen, wodurch Lifecycle.State ohne Blockierung festgelegt werden kann. (Icf728, b/297880630)

Fehlerkorrekturen

  • Es wurde ein Problem mit LiveData.switchMap behoben, bei dem die Rückgabe der gleichen LiveData-Instanz sowohl beim ersten als auch bei einem nachfolgenden Aufruf verhindert wurde, dass die LiveData-Instanz als Quelle hinzugefügt wurde. (Ibedcba7)

Version 2.7.0-alpha02

6. September 2023

androidx.lifecycle:lifecycle-*:2.7.0-alpha02 wird veröffentlicht. Version 2.7.0-alpha02 enthält diese Commits.

Neue Funktionen

  • TestLifecycleOwner enthält jetzt die Sperrfunktion setCurrentState(), um Nutzern die Möglichkeit zu geben, TestLifecycleOwner innerhalb einer Koroutine wie der von runTest zu verwenden. (I329de, b/259344129)

API-Änderungen

  • Alle Dateien aus den lifecycle-livedata-ktx-Modulen wurden in das Hauptmodul lifecycle-livedata verschoben. (I10c6f, b/274800183)

Verhaltensänderungen

  • Mit den Erweiterungen LiveData.map() und LiveData.switchMap() wird jetzt die value der zurückgegebenen LiveData festgelegt, wenn für die vorherige LiveData ein Wert festgelegt wurde. So wird sichergestellt, dass die Verwendung der resultierenden LiveData in Jetpack Compose in der ursprünglichen Zusammensetzung den richtigen Status hat. (I91d2b, b/269479952)
  • Die addCloseable() von ViewModel schließt jetzt sofort die Closeable, wenn die ViewModel bereits einen Anruf an onCleared() erhalten hat. (I4712e, b/280294730)

Fehlerkorrekturen

  • Lifecycle 2.6.2: Ein Problem wurde behoben, durch das SavedStateHandle nach dem Ende des Prozesses nicht korrekt wiederhergestellt wurde, wenn der Status wiederhergestellt, save() aufgerufen wurde, ohne den Status im übergeordneten SavedStateRegistry zu speichern, und der Status dann noch einmal wiederhergestellt wurde. Damit wird die Interaktion zwischen rememberSaveable und „Navigation Compose“-NavHost behoben. (aosp/2729289)

Version 2.7.0-alpha01

26. Juli 2023

androidx.lifecycle:lifecycle-*:2.7.0-alpha01 wird veröffentlicht. Version 2.7.0-alpha01 enthält diese Commits.

API-Änderungen

  • Lifecycle.State ist jetzt über Lifecycle.currentStateFlow über Compose-beobachtbar. Lifecycle.currentStateFlow gibt eine StateFlow zurück, wobei value die aktuelle Lifecycle.State ist. (Ib212d, b/209684871)
  • Lifecycle.Event können jetzt als Flow mit Lifecycle.asFlow(). beobachtet werden (If2c0f, b/176311030)
  • Die LifecycleResumeEffect API wurde hinzugefügt, um Compose-SideEffects basierend auf Lifecycle.Event.ON_RESUME- und Lifecycle.Event.ON_PAUSE-Ereignis-Callbacks auszuführen. (I60386, b/235529345)
  • Die LifecycleStartEffect API wurde hinzugefügt, um Compose-SideEffects basierend auf Lifecycle.Event.ON_START- und Lifecycle.Event.ON_STOP-Ereignis-Callbacks auszuführen. (I5a8d1, b/235529345)
  • Die LifecycleEventEffect API wurde hinzugefügt, um SideEffect-Kompositionen auf der Grundlage von Lifecycle.Event auszuführen. (Ic9794, b/235529345)
  • Die Erweiterung „Lifecycle.collectAsState()“ wurde hinzugefügt, um „Lifecycle.State“ direkt als „Schreiben“ State anzuzeigen. Dies entspricht lifecycle.currentStateFlow.collectAsState() und ist eine kürzere Alternative. (I11015, b/235529345)

Fehlerkorrekturen

  • Die LiveData.distinctUntilChanged()-Erweiterung setzt jetzt den value der zurückgegebenen LiveData, wenn für die vorherige LiveData ein Wert festgelegt wurde. Das Beobachtungsverhalten ändert sich dadurch nicht. Aktualisierte Werte aus der Quelle LiveData werden erst dann angewendet, wenn Sie mit der Beobachtung des von distinctUntilChanged() zurückgegebenen LiveData beginnen. (Ib482f)
  • Die ProGuard-Aufbewahrungsregeln, die mit LifecycleObserver verknüpft sind, wurden entfernt. Das bedeutet, dass für proguardierten Code, der APIs über Reflection verwenden soll, eigene Regeln für den jeweiligen Anwendungsfall festgelegt werden müssen. (Ia12fd)

Version 2.6

Version 2.6.2

6. September 2023

androidx.lifecycle:lifecycle-*:2.6.2 wird veröffentlicht. Version 2.6.2 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem SavedStateHandle nach dem Beenden des Prozesses nicht korrekt wiederhergestellt wurde, wenn der Status wiederhergestellt wurde, save() aufgerufen wurde, ohne den Status im übergeordneten SavedStateRegistry zu speichern, und der Status dann noch einmal wiederhergestellt wurde. Dadurch wird die Interaktion zwischen rememberSaveable und NavHost von Navigation Compose korrigiert. (aosp/2729289)

Version 2.6.1

22. März 2023

androidx.lifecycle:lifecycle-*:2.6.1 wurde veröffentlicht. Version 2.6.1 enthält diese Commits.

Abhängigkeitsupdates

Version 2.6.0

8. März 2023

androidx.lifecycle:lifecycle-*:2.6.0 wurde veröffentlicht. Version 2.6.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.5.0

  • LiveData enthält jetzt eine neue isInitialized-Eigenschaft, die angibt, ob für LiveData jemals ein expliziter Wert festgelegt wurde. So können Sie unterscheiden, ob liveData.value null zurückgibt, weil noch kein Wert festgelegt wurde, oder ob ein expliziter null-Wert festgelegt wurde.
  • MediatorLiveData enthält jetzt einen Konstruktor zum Festlegen eines Anfangswerts.
  • Es wurde eine neue Erweiterung für StateFlow und Flow von collectAsStateWithLifecycle() hinzugefügt, die Daten aus Abläufen erfasst und den aktuellen Wert auf Lifecycle-konforme Weise als Compose-Status darstellt.
  • Lifecycle.launchWhenX- und Lifecycle.whenX-Methoden wurden eingestellt, da die Verwendung eines Pausierungs-Dispatchers in einigen Fällen zu verschwendetem Ressourcenverbrauch führen kann. Wir empfehlen, Lifecycle.repeatOnLifecycle zu verwenden. Weitere Informationen dazu, warum das Aufheben der Sperrung für eine einzelne Aufgabe prinzipiell unsicher ist, finden Sie hier.
  • Kotlin-Konvertierung: Eine große Anzahl von Lifecycle-Klassen wurde in Kotlin konvertiert. Alle konvertierten Klassen behalten ihre Binärkompatibilität mit früheren Versionen. Bei den folgenden Klassen wurden nicht mit der Quelle kompatible Änderungen an Klassen vorgenommen, die in Kotlin geschrieben wurden: ViewTreeLifecycleOwner, LiveDataReactiveStreams, HasDefaultViewModelProviderFactory, ViewTreeViewModelStoreOwner, Transformations, ViewModelStoreOwner, LifecycleOwner

In der folgenden Tabelle finden Sie die Quell-Conversions für die neue Version des Lebenszyklus.

Lebenszyklus 2.5 Lebenszyklus 2.5 (KTX) Lebenszyklus 2.6
Transformations.switchMap(liveData) {...} liveData.switchMap {...} liveData.switchMap {...}
Transformations.map(liveData) {...} liveData.map {...} liveData.map {...}
Transformations.distinctUntilChanged(liveData) {...} liveData.distinctUntilChanged{...} liveData.distinctUntilChanged{...}
LiveDataReactiveStreams.fromPublisher(publisher) publisher.toLiveData() publisher.toLiveData()
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) liveData.toPublisher(lifecycleOwner) liveData.toPublisher(lifecycleOwner)
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory override val defaultViewModelProviderFactory = factory
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras override fun getDefaultViewModelCreationExtras(): CreationExtras = extras override val defaultViewModelProviderCreationExtras = extras
ViewTreeLifecycleOwner.set(view, owner) ViewTreeLifecycleOwner.set(view, owner) view.setViewTreeLifecycleOwner(owner)
ViewTreeLifecycleOwner.get(view) view.findViewTreeLifecycleOwner() view.findViewTreeLifecycleOwner()
override fun getViewModelStore(): ViewModelStore = store override fun getViewModelStore(): ViewModelStore = store override val viewModelStore: ViewModelStore = store
override fun getLifecycle(): Lifecycle = registry override fun getLifecycle(): Lifecycle = registry override val lifecycle: Lifecycle get() = registry
  • Die Nullbarkeit der onChanged-Methode einer in Kotlin erstellten Observer stimmt jetzt mit der Nullbarkeit des generischen Typs überein. Wenn Observer.onChanged() einen typlosen Wert akzeptieren soll, müssen Sie Observer mit einem typlosen Wert instanziieren.
  • Diese Klassen wurden ebenfalls in Kotlin konvertiert, sind aber weiterhin mit der Quelle kompatibel: DefaultLifecycleObserver, LifecycleEventObserver, Lifecycle, LifecycleRegistry, LifecycleObserver, ViewModelStore, AndroidViewModel, AbstractSavedStateViewModelFactory, LifecycleService, ServiceLifecycleDispatcher und ProcessLifecycleOwner

Version 2.6.0-rc01

22. Februar 2023

androidx.lifecycle:lifecycle-*:2.6.0-rc01 wird veröffentlicht. Version 2.6.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Die LiveData.distinctUntilChanged()-Erweiterung setzt jetzt den value der zurückgegebenen LiveData, wenn für die vorherige LiveData ein Wert festgelegt wurde. Dies ändert nichts am Beobachtungsverhalten. Aktualisierte Werte aus der Quelle LiveData gelten weiterhin erst, wenn Sie die von distinctUntilChanged() zurückgegebenen LiveData beobachten. (Ib482f)

Version 2.6.0-beta01

8. Februar 2023

androidx.lifecycle:lifecycle-*:2.6.0-beta01 wird veröffentlicht. Version 2.6.0-beta01 enthält diese Commits.

Kotlin-Conversions

  • LifecycleOwner wird jetzt in Kotlin geschrieben. Das ist eine nicht mit der Quelle kompatible Änderung für in Kotlin geschriebene Klassen. Sie müssen jetzt die lifecycle-Eigenschaft überschreiben, anstatt die vorherige getLifecycle()-Funktion zu implementieren. (I75b4b, b/240298691)
  • ViewModelStoreOwner ist jetzt in Kotlin. Diese Änderung ist nicht mit der Quelle kompatibel für Klassen, die in Kotlin geschrieben wurden. Sie müssen jetzt das Attribut viewModelStore überschreiben, anstatt die vorherige getViewModelStore()-Funktion zu implementieren. (I86409, b/240298691)
  • Die Kotlin-Erweiterung für LifecycleOwner, die das Feld lifecycleScope bereitstellt, wurde von lifecycle-runtime-ktx in das lifecycle-common-Artefakt verschoben. (I41d78, b/240298691)
  • Die Kotlin-Erweiterung für Lifecycle, die das Feld coroutineScope bereitstellt, wurde in das Artefakt lifecycle-common von lifecycle-runtime-ktx verschoben. (Iabb91, b/240298691)

Version 2.6.0-alpha05

25. Januar 2023

androidx.lifecycle:lifecycle-*:2.6.0-alpha05 wird veröffentlicht. Version 2.6.0-alpha05 enthält diese Commits.

Kotlin-Conversions

  • Transformations ist jetzt in Kotlin geschrieben. Dies ist eine nicht kompatible Quellcodeänderung für Kotlin-Klassen, in denen direkt Syntax wie Transformations.map verwendet wurde. Kotlin-Code muss jetzt die Syntax der Kotlin-Erweiterungsmethode verwenden, die zuvor nur bei Verwendung von lifecycle-livedata-ktx verfügbar war. Bei Verwendung der Programmiersprache Java werden die Versionen dieser Methoden, die eine androidx.arch.core.util.Function-Methode verwenden, verworfen und durch die Versionen mit einer Kotlin-Function1 ersetzt. Durch diese Änderung wird die Kompatibilität der Binärprogramme beibehalten. (I8e14f)
  • ViewTreeViewModelStoreOwner ist jetzt in Kotlin geschrieben. Das ist eine nicht mit der Quelle kompatible Änderung für Klassen, die in Kotlin geschrieben sind. Sie müssen jetzt die Kotlin-Erweiterungsmethoden für View von androidx.lifecycle.setViewTreeViewModelStoreOwner und androidx.lifecycle.findViewTreeViewModelStoreOwner direkt importieren und verwenden, um einen zuvor festgelegten Eigentümer festzulegen und zu finden. Dies ist binärkompatibel und bleibt für Implementierungen, die in der Programmiersprache Java geschrieben sind, quellkompatibel. (Ia06d8, Ib22d8, b/240298691)
  • Die HasDefaultViewModelProviderFactory-Schnittstelle ist jetzt in Kotlin geschrieben. Dies ist eine nicht mit der Quelle kompatible Änderung für in Kotlin geschriebene Klassen. Sie müssen jetzt die Eigenschaften defaultViewModelProviderFactory und defaultViewModelCreationExtras überschreiben, anstatt die vorherigen entsprechenden Funktionen zu implementieren. (Iaed9c, b/240298691)
  • Observer ist jetzt in Kotlin geschrieben. Für die onChanged()-Methode wird jetzt der Name value für den Parameter verwendet. (Iffef2, I4995e, b/240298691)
  • AndroidViewModel, AbstractSavedStateViewModelFactory, LifecycleService, ServiceLifecycleDispatcher und ProcessLifecycleOwner sind jetzt in Kotlin geschrieben (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691)

Version 2.6.0-alpha04

11. Januar 2023

androidx.lifecycle:lifecycle-*:2.6.0-alpha04 wird veröffentlicht. Version 2.6.0-alpha04 enthält diese Commits.

Neue Funktionen

  • LiveData enthält jetzt eine neue isInitialized-Eigenschaft, die angibt, ob für LiveData jemals ein expliziter Wert festgelegt wurde. So können Sie unterscheiden, ob liveData.value null zurückgibt, weil noch kein Wert festgelegt wurde, oder ob ein expliziter null-Wert festgelegt wurde. (Ibd018)

API-Änderungen

  • Die collectAsStateWithLifecycle() APIs von lifecycle-runtime-compose befinden sich nicht mehr im experimentellen Status. (I09d42, b/258835424)
  • Lifecycle.launchWhenX- und Lifecycle.whenX-Methoden wurden eingestellt, da die Verwendung eines pausierten Disponenten in einigen Fällen zur Verschwendung von Ressourcen führen kann. Wir empfehlen, Lifecycle.repeatOnLifecycle zu verwenden. (Iafc54, b/248302832)

Kotlin-Conversions

  • ViewTreeLifecycleOwner ist jetzt in Kotlin geschrieben. Diese Änderung ist nicht mit der Quelle kompatibel für die in Kotlin geschriebenen Klassen. Sie müssen jetzt die Kotlin-Erweiterungsmethoden von View von androidx.lifecycle.setViewTreeLifecycleOwner und androidx.lifecycle.findViewTreeLifecycleOwner direkt importieren und verwenden, um einen zuvor festgelegten Inhaber festzulegen und zu finden. Dadurch wird die vorherige Kotlin-Erweiterung in lifecycle-runtime-ktx ersetzt. Dies ist binärkompatibel und bleibt für Implementierungen, die in der Programmiersprache Java geschrieben sind, auch weiterhin quellkompatibel. (I8a77a, I5234e, b/240298691)
  • LiveDataReactiveStreams ist jetzt in Kotlin geschrieben. Die Kotlin-Erweiterungen, die zuvor in lifecycle-reactivestreams-ktx enthalten waren, wurden in das Modul lifecycle-reactivestreams verschoben und sind jetzt die primäre Oberfläche für in Kotlin geschriebenen Code. Dies ist eine nicht mit der Quelle kompatible Änderung für in Kotlin geschriebenen Code, wenn Sie die Kotlin-Erweiterungsmethoden-APIs noch nicht verwendet haben. (I2b1b9, I95d22, b/240298691)
  • DefaultLifecycleObserver, LifecycleEventObserver, Lifecycle, LifecycleRegistry, LifecycleObserver und ViewModelStore werden jetzt in Kotlin geschrieben (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691)

Fehlerkorrekturen

  • SavedStateHandle stürzt nicht mehr mit einem ClassCastException ab, wenn get() mit dem falschen Klassentyp aufgerufen wird. (I6ae7c)

Version 2.6.0-alpha03

24. Oktober 2022

androidx.lifecycle:lifecycle-*:2.6.0-alpha03 wird veröffentlicht. Version 2.6.0-alpha03 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das Einschränkungen zwischen verschiedenen Lebenszyklusmodulen nicht wie vorgesehen funktionierten. (I18d0d, b/249686765)
  • Von LifecycleRegistry.moveToState() ausgelöste Fehler enthalten jetzt hilfreichere Fehlermeldungen, die Entwickler über die Komponente informieren, die den Fehler verursacht. (Idf4b2, b/244910446)

Version 2.6.0-alpha02

7. September 2022

androidx.lifecycle:lifecycle-*:2.6.0-alpha02 wurde veröffentlicht. Version 2.6.0-alpha02 enthält diese Commits.

API-Änderungen

  • MediatorLiveData enthält jetzt einen Konstruktor zum Festlegen eines Anfangswerts. (Ib6cc5, b/151244085)

Fehlerkorrekturen

  • Lifecycle-Artefakte enthalten jetzt Einschränkungen, die dafür sorgen, dass alle voneinander abhängigen Lebenszyklus-Artefakte dieselbe Version verwenden. Andere Abhängigkeiten werden bei einem Upgrade automatisch aktualisiert. b/242871265
  • FlowLiveData.asFlow() erstellt jetzt eine callbackFlow, anstatt seine eigene Channel-Implementierung zu verwenden, um für Threadsicherheit und Kontexterhaltung zu sorgen. (I4a8b2, b/200596935)
  • Die asLiveData-Funktion von FlowLiveData behält jetzt den Anfangswert von StateFlow bei, wenn das neue LiveData-Objekt erstellt wird. (I3f530, b/157380488)
  • Aus Lebenszyklus 2.5.1: Bei benutzerdefinierten Implementierungen von AndroidViewModelFactory wird die Funktion create(modelClass) jetzt korrekt aufgerufen, wenn der zustandsorientierte Konstruktor mit Lifecycle ab Version 2.4 (I5b315, b/238011621) verwendet wird.

Version 2.6.0-alpha01

29. Juni 2022

androidx.lifecycle:lifecycle-*:2.6.0-alpha01 wird veröffentlicht. Version 2.6.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Es wurde eine neue Erweiterung für StateFlow und Flow von collectAsStateWithLifecycle hinzugefügt, die Daten aus Abläufen erfasst und den aktuellen Wert auf Lifecycle-konforme Weise als „Compose State“ darstellt. Der Datenfluss wird erfasst und die neue Emission wird auf den Wert des Status festgelegt, wenn sich der Lebenszyklus mindestens in einer bestimmten Lifecycle.State befindet. Wenn der Lebenszyklus unter diesen Lifecycle.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 create(modelClass)-Funktion jetzt korrekt aufgerufen, wenn der zustandsorientierte AndroidViewModelFactory-Konstruktor mit Lifecycle 2.4 oder höher verwendet wird. (I5b315, b/238011621)

Version 2.5.0

29. Juni 2022

androidx.lifecycle:lifecycle-*:2.5.0 wird veröffentlicht. Version 2.5.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.4.0

  • SavedStateHandle bietet jetzt eine getStateFlow() API, die als Alternative zur Verwendung von LiveData einen Kotlin-StateFlow zum Überwachen von Wertänderungen zurückgibt.

  • ViewModel CreationExtras: Beim Schreiben einer benutzerdefinierten ViewModelProvider.Factory muss AndroidViewModelFactory oder AbstractSavedStateViewModelFactory nicht mehr erweitert werden, um Zugriff auf eine Application oder SavedStateHandle zu erhalten. Stattdessen werden diese Felder allen ViewModelProvider.Factory-Unterklassen als CreationExtras über die neue Überladung von create zur Verfügung gestellt: create(Class<T>, CreationExtras). Diese Extras werden automatisch von Ihrer Aktivität oder Ihrem Fragment bereitgestellt, wenn Sie Aktivität 1.5.0 bzw. Fragment 1.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 eine viewModelFactory Kotlin-DSL, mit der Sie Ihre ViewModelProvider.Factory anhand eines oder mehrerer Lambda-Initialisierer definieren können, jeweils einer für jede ViewModel-Klasse, die Ihre benutzerdefinierte Fabrik unterstützt, wobei CreationExtras 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 eine viewModel() API, die eine Lambda-Fabrik zum Erstellen einer ViewModel-Instanz verwendet, ohne dass eine benutzerdefinierte ViewModelProvider.Factory erstellt werden muss.

    // Within a @Composable, you can now skip writing a custom Factory
    // and instead write a lambda to do the initialization of your ViewModel
    val detailViewModel = viewModel {
      // This lambda is only called the first time the ViewModel is created
      // and all CreationExtras are available inside the lambda
      val savedStateHandle = createSavedStateHandle()
      DetailViewModel(savedStateHandle)
    }
    
  • Integration von SavedStateHandle Compose Saver: Das lifecycle-viewmodel-compose-Artefakt enthält jetzt neue experimentelle APIs in SavedStateHandle.saveable, die ein rememberSaveable-ähnliches Verhalten ermöglichen, das vom SavedStateHandle eines ViewModels unterstützt wird.

    class ListScreenViewModel(handle: SavedStateHandle): ViewModel() {
        // This value survives both configuration changes and process death and recreation
        val editMode by handle.saveable { mutableStateOf(false) }
    }
    
  • Es wurde eine addCloseable() API und eine neue Konstruktorüberladung hinzugefügt, mit denen Sie der ViewModel ein oder mehrere Closeable-Objekte hinzufügen können, die geschlossen werden, wenn die ViewModel gelöscht wird, ohne dass in onCleared() manuelle Arbeit erforderlich ist.

    Wenn Sie beispielsweise einen coroutine-Scope erstellen möchten, den Sie in ein ViewModel einschleusen, aber über Tests steuern können, können Sie eine CoroutineScope erstellen, die Closeable implementiert:

    class CloseableCoroutineScope(
        context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate
    ) : Closeable, CoroutineScope {
        override val coroutineContext: CoroutineContext = context
        override fun close() {
            coroutineContext.cancel()
       }
    }
    

    Diese kann dann im Konstruktor von ViewModel verwendet werden, wobei die Lebensdauer von viewModelScope beibehalten wird:

    class TestScopeViewModel(
        val customScope: CloseableCoroutineScope = CloseableCoroutineScope()
    ) : ViewModel(customScope) {
        // You can now use customScope in the same way as viewModelScope
    }
    

Geändertes Verhalten

  • Wenn Sie versuchen, die Lifecycle.State von INITIALIZED nach DESTROYED zu verschieben, wird jetzt immer eine IllegalStateException geworfen, unabhängig davon, ob die Lifecycle einen angehängten Beobachter hat.
  • LifecycleRegistry löscht jetzt seine Beobachter, wenn der Status DESTROYED erreicht wird.

Version 2.5.0-rc02

15. Juni 2022

androidx.lifecycle:lifecycle-*:2.5.0-rc02 wird veröffentlicht. Version 2.5.0-rc02 enthält diese Commits.

Fehlerkorrekturen

  • ViewModelProvider stürzt nicht mehr ab, wenn frühere Versionen von „compileOnly“-Lebenszyklusabhängigkeiten mit Versionen 2.5 und höher kombiniert werden. (I81a66, b/230454566)

Version 2.5.0-rc01

11. Mai 2022

androidx.lifecycle:lifecycle-*:2.5.0-rc01 wird veröffentlicht. Version 2.5.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • MediatorLiveData.addSource() wirft jetzt eine NullPointerException aus, wenn eine null-Quelle übergeben wird, anstatt die null-Quelle an Beobachter weiterzuleiten.(Ibd0fb, b/123085232)

Version 2.5.0-beta01

20. April 2022

androidx.lifecycle:lifecycle-*:2.5.0-beta01 wird veröffentlicht. Version 2.5.0-beta01 enthält diese Commits.

API-Änderungen

  • Es wurden SavedStateHandle.saveable-Attributdelegierte hinzugefügt, um Attributnamen als Schlüssel zum Speichern des Status in der SavedStateHandle zu verwenden (I8bb86, b/225014345)

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem das Verschachteln einer NavHost in einer anderen NavHost auf einem nicht primären Tab der unteren Navigationsleiste bei Verwendung mehrerer Backstacks zu einer IllegalStateException führte. (I11bd5, b/228865698)

Version 2.5.0-alpha06

6. April 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha06 wurde veröffentlicht. Version 2.5.0-alpha06 enthält diese Commits.

Neue Funktionen

  • Fügen Sie SavedStateHandle.saveable die experimentelle MutableState-Überlastung zur Parität mit rememberSaveable hinzu (I38cfe, b/224565154).

API-Änderungen

  • CreationExtras ist jetzt abstrakt und nicht versiegelt. (Ib8a7a)

Fehlerkorrekturen

  • Ein IllegalStateException: Already attached to lifecycleOwner-Fehler, der durch SavedStateHandleController verursacht wurde, wurde behoben. (I7ea47, b/215406268)

Version 2.5.0-alpha05

23. März 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha05 wird veröffentlicht. Version 2.5.0-alpha05 enthält diese Commits.

Neue Funktionen

  • Das Modul lifecycle-viewmodel-compose bietet jetzt SavedStateHandleSaver, eine experimentelle API, die sicherstellt, dass die Werte in einer SavedStateHandle korrekt mit dem gespeicherten Instanzstatus integriert werden, den rememberSaveable verwendet. (Ia88b7, b/195689777)

API-Änderungen

  • Ein Kompatibilitätsproblem mit Lifecycle 2.3 und neueren Lifecycle-Versionen in Java wurde behoben. (I52c8a, b/219545060)

Fehlerkorrekturen

  • SavedStateViewFactory unterstützt jetzt die Verwendung von CreationExtras, auch wenn es mit einer SavedStateRegistryOwner initialisiert wurde. Wenn Extras angegeben werden, werden die initialisierten Argumente ignoriert. (I6c43b, b/224844583)

Version 2.5.0-alpha04

9. März 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha04 wird veröffentlicht. Version 2.5.0-alpha04 enthält diese Commits.

API-Änderungen

  • SavedStateHandle bietet jetzt eine getStateFlow() API, die einen Kotlin-StateFlow zum Überwachen von Wertänderungen zurückgibt, als Alternative zur Verwendung von LiveData. (Iad3ab, b/178037961)

Version 2.5.0-alpha03

23. Februar 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha03 wird veröffentlicht. Version 2.5.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Es wurde eine addCloseable() API und eine neue Konstruktorüberladung hinzugefügt, mit der Sie der ViewModel ein oder mehrere Closeable-Objekte hinzufügen können, die geschlossen werden, wenn die ViewModel gelöscht wird, ohne dass in onCleared() manuelle Arbeit erforderlich ist. (I55ea0)
  • lifecycle-viewmodel bietet jetzt eine InitializerViewModelFactory, mit der Sie Lambda für die Verarbeitung bestimmter ViewModel-Klassen hinzufügen können, wobei CreationExtras als primäre Datenquelle verwendet wird. (If58fc, b/216687549)
  • lifecycle-viewmodel-compose bietet jetzt eine viewModel() API, die eine Lambda-Fabrik zum Erstellen einer ViewModel-Instanz verwendet, ohne dass eine benutzerdefinierte ViewModelProvider.Factory erstellt werden muss. (I97fbb, b/216688927)

API-Änderungen

  • Sie können jetzt über lifecycle-viewmodel-compose ein ViewModel mit CreationExtras erstellen. (I08887, b/216688927)

Geändertes Verhalten

  • Wenn Sie versuchen, die Lifecycle.State von INITIALIZED nach DESTROYED zu verschieben, wird jetzt immer eine IllegalStateException geworfen, unabhängig davon, ob die Lifecycle einen angehängten Beobachter hat. (I7c390, b/177924329)
  • LifecycleRegistry löscht jetzt seine Beobachter, wenn der Status DESTROYED erreicht wird. (I4f8dd, b/142925860)

Version 2.5.0-alpha02

9. Februar 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha02 wird veröffentlicht. Version 2.5.0-alpha02 enthält diese Commits.

API-Änderungen

  • SavedStateHandle und SavedStateViewModelFactory wurden in Kotlin konvertiert. Dadurch wurde die Nullbarkeit der Gattungen in beiden Klassen verbessert. (Ib6ce2, b/216168263, I9647a, b/177667711)
  • Der Funktionsparameter LiveData switchMap kann jetzt eine Ausgabe enthalten, für die Nullwerte zulässig sind. (I40396, b/132923666)
  • Die LiveData-ktx-Erweiterungen sind jetzt mit @CheckResult gekennzeichnet, um sicherzustellen, dass das Ergebnis beim Aufrufen dieser Funktionen verwendet wird. (Ia0f05, b/207325134)

Geändertes Verhalten

  • SavedStateHandle speichert den Standardwert jetzt korrekt, wenn kein Wert für den angegebenen Schlüssel vorhanden ist. (I1c6ce, b/178510877)

Fehlerkorrekturen

  • Seit Lebenszyklus 2.4.1: lifecycle-process wurde so aktualisiert, dass es von Startup 1.1.1 abhängt. So sind standardmäßig Fehlerkorrekturen verfügbar, die verhindern, dass ProcessLifecycleInitializer eine StartupException auslöst. (Ib01df, b/216490724)
  • Es gibt jetzt eine verbesserte Fehlermeldung, wenn benutzerdefinierte AndroidViewModel-Klassen Parameter in der falschen Reihenfolge haben und versucht wird, eine ViewModel zu erstellen. (I340f7, b/177667711)
  • Sie können jetzt mithilfe von CreationExtras ein Ansichtsmodell mit der AndroidViewModelFactory erstellen, ohne eine Anwendung festzulegen. (I6ebef, b/217271656)

Version 2.5.0-alpha01

26. Januar 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha01 wurde veröffentlicht. Version 2.5.0-alpha01 enthält diese Commits.

ViewModel CreationExtras

Mit dieser Version legen wir den Grundstein für die Umstrukturierung des Aufbaus von ViewModel. Statt eines starren Satzes von abgeleiteten Klassen von ViewModelProvider.Factory, die jeweils zusätzliche Funktionen hinzufügen (und einen Application-Konstruktorparameter über AndroidViewModelFactory zulassen und einen SavedStateHandle-Konstruktorparameter über SavedStateViewModelFactory und AbstractSavedStateViewModelFactory usw. zulassen), bewegen wir uns nun auf eine Welt zustandsloser Fabriken um, die auf einem neuen Konzept namens CreationExtras basieren. (Ia7343, b/188691010, b/188541057)

Durch diese Änderung werden von ViewModelProvider keine direkten Aufrufe der vorherigen create(Class<T>)-Methode von ViewModelProvider.Factory mehr ausgeführt. Stattdessen wird eine neue Überladung von create aufgerufen: create(Class<T>, CreationExtras). Das bedeutet, dass jede direkte Implementierung der ViewModelProvider.Factory-Instanz jetzt Zugriff auf alle diese neuen CreationExtras hat:

  • ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY: Dieser String bietet Zugriff auf den benutzerdefinierten Schlüssel, den du an ViewModelProvider.get() übergeben hast.
  • ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY bietet Zugriff auf die Klasse Application.
  • SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY bietet Zugriff auf die SavedStateRegistryOwner, die zum Erstellen dieses ViewModel verwendet wird.
  • SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY bietet Zugriff auf die ViewModelStoreOwner, die zum Erstellen dieses ViewModels verwendet wird.
  • SavedStateHandleSupport.DEFAULT_ARGS_KEY bietet Zugriff auf die Bundle der Argumente, die zum Erstellen einer SavedStateHandle verwendet werden sollen.

Diese Extras stehen standardmäßig zur Verfügung, wenn Sie Aktivität 1.5.0-alpha01, Fragment 1.5.0-alpha01 und Navigation 2.5.0-alpha01 verwenden. Wenn Sie eine ältere Version dieser Bibliotheken verwenden, ist CreationExtras leer. Alle vorhandenen Unterklassen von ViewModelProvider.Factory wurden neu geschrieben, um sowohl den bisherigen Erstellungspfad zu unterstützen, der von älteren Versionen dieser Bibliotheken verwendet wird, als auch den CreationExtras-Pfad, der künftig verwendet wird.

Mit diesen CreationExtras können Sie eine ViewModelProvider.Factory erstellen, die genau die benötigten Informationen an jede ViewModel übergibt, ohne sich auf eine strenge Hierarchie von abgeleiteten Factory-Klassen zu verlassen:

class CustomFactory : ViewModelProvider.Factory {
    override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
        return when (modelClass) {
            HomeViewModel::class -> {
                // Get the Application object from extras
                val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY])
                // Pass it directly to HomeViewModel
                HomeViewModel(application)
            }
            DetailViewModel::class -> {
                // Create a SavedStateHandle for this ViewModel from extras
                val savedStateHandle = extras.createSavedStateHandle()
                DetailViewModel(savedStateHandle)
            }
            else -> throw IllegalArgumentException("Unknown class $modelClass")
        } as T
    }
}

Wir verwenden die Kotlin-Erweiterungsfunktion createSavedStateHandle() für CreationExtras aus SavedStateHandleSupport, um eine SavedStateHandle nur für das eine ViewModel zu erstellen, das sie benötigt. (Ia6654, b/188541057)

Benutzerdefinierte CreationExtras können bereitgestellt werden, indem getDefaultViewModelCreationExtras() in ComponentActivity oder Fragment überschrieben wird. So stehen sie für die benutzerdefinierte ViewModelProvider.Factory als integrierte Form der unterstützten Insertion zur Verfügung. Diese Extras werden Ihrer benutzerdefinierten Factory automatisch zur Verfügung gestellt, wenn Sie sie direkt mit ViewModelProvider oder mit den Kotlin-Property-Erweiterungen by viewModels() und by activityViewModels() verwenden. (I79f2b, b/207012584, b/207012585, b/207012490)

Fehlerkorrekturen

  • Es wurde ein Problem behoben, durch das der für SavedStateHandle angegebene Standardwert nach einem Tod oder einer Neuerstellung von Prozessen wieder angezeigt wurde, auch wenn er explizit aus SavedStateHandle entfernt wurde. Daher werden Standardwerte und wiederhergestellte Werte in SavedStateHandle nicht mehr zusammengeführt. Stattdessen werden nur die wiederhergestellten Werte als vertrauenswürdige Quelle verwendet. (I53a4b)

Version 2.4

Version 2.4.1

9. Februar 2022

androidx.lifecycle:lifecycle-*:2.4.1 wurde veröffentlicht. Version 2.4.1 enthält diese Commits.

Fehlerkorrekturen

  • Backport aus Lifecycle 2.5.0-alpha01: Es wurde ein Problem behoben, durch das der für eine SavedStateHandle angegebene Standardwert nach dem Beenden und Neustarten des Prozesses wieder angezeigt wurde, auch wenn er ausdrücklich aus der SavedStateHandle entfernt wurde. Daher werden Standardwerte und wiederhergestellte Werte in SavedStateHandle nicht mehr zusammengeführt. Stattdessen werden nur die wiederhergestellten Werte als vertrauenswürdige Quelle verwendet. (I53a4b)
  • lifecycle-process hängt jetzt von Androidx Startup 1.1.1 ab, wodurch eine Regression behoben wurde, bei der die Verwendung von ProcessLifecycleInitializer zu einem StartupException führte. (b/216490724)

Version 2.4.0

27. Oktober 2021

androidx.lifecycle:lifecycle-*:2.4.0 wird veröffentlicht. Version 2.4.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.3.0

  • @OnLifecycleEvent wurde eingestellt. Stattdessen sollten LifecycleEventObserver oder DefaultLifecycleObserver verwendet werden.
  • Die Mediathek androidx.lifecycle:lifecycle-viewmodel-compose wurde hinzugefügt. Es bietet viewModel() und LocalViewModelStoreOwner.
    • Funktionsgefährdende Änderung: ViewModelProvider wurde in Kotlin neu geschrieben. Bei der ViewModelProvider.Factory.create-Methode sind keine typlosen Elemente mehr zulässig.
  • Neue Koroutines API wurde androidx.lifecycle:lifecycle-runtime-ktx hinzugefügt:
  • Lifecycle.repeatOnLifecycle, API, die einen Codeblock in einer Coroutine ausführt, wenn sich der Lebenszyklus mindestens in einem bestimmten Zustand befindet. Der Block wird abgebrochen und neu gestartet, wenn der Lebenszyklus den Zielstatus erreicht und wieder verlässt.
  • Flow.flowWithLifecycle, eine API, die Werte aus dem vorgelagerten Ablauf ausgibt, wenn der Lebenszyklus mindestens in einem bestimmten Zustand ist.
  • DefaultLifecycleObserver wurde von lifecycle.lifecycle-common-java8 nach lifecycle.lifecycle-common verschoben. lifecycle.lifecycle-common-java8 bietet keine zusätzlichen Funktionen mehr im Vergleich zu lifecycle.lifecycle-common. Daher kann die Abhängigkeit von lifecycle.lifecycle-common-java8 durch lifecycle.lifecycle-common ersetzt werden.
  • Die nicht coroutines API von lifecycle-viewmodel-ktx wurde in das Modul lifecycle-viewmodel verschoben.
  • lifecycle-process verwendet jetzt androidx.startup, um die ProcessLifecycleOwner zu initialisieren.

    Zuvor wurde dies von androidx.lifecycle.ProcessLifecycleOwnerInitializer durchgeführt.

    Wenn Sie tools:node="remove" verwendet haben, um den Prozesslebenszyklus in der Vergangenheit zu initialisieren, gehen Sie stattdessen so vor:ContentProvider

     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.lifecycle.ProcessLifecycleInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

    (oder)

     <!-- If you want to disable androidx.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

Version 2.4.0-rc01

29. September 2021

androidx.lifecycle:lifecycle-*:2.4.0-rc01 wird ohne Änderungen gegenüber Lifecycle 2.4.0-beta01 veröffentlicht. Version 2.4.0-rc01 enthält diese Commits.

Version 2.4.0-beta01

15. September 2021

androidx.lifecycle:lifecycle-*:2.4.0-beta01 wird veröffentlicht. Version 2.4.0-beta01 enthält diese Commits.

API-Änderungen

  • @OnLifecycleEvent“ wurde eingestellt. Verwenden Sie stattdessen LifecycleEventObserver oder DefaultLifecycleObserver. (I5a8fa)
  • DefaultLifecycleObserver wurde von androidx.lifecycle.lifecycle-common-java8 nach androidx.lifecycle.lifecycle-common verschoben. androidx.lifecycle.lifecycle-common-java8 bietet keine zusätzlichen Funktionen mehr im Vergleich zu androidx.lifecycle.lifecycle-common. Daher kann die Abhängigkeit von androidx.lifecycle.lifecycle-common-java8 durch androidx.lifecycle.lifecycle-common ersetzt werden. (I021aa)
  • Nicht-Koroutinen-API von lifecycle-viewmodel-ktx wurde in das Modul lifecycle-viewmodel verschoben. (I6d5b2)

Externer Beitrag

  • Vielen Dank, dmitrilc, dass du einen Typ in der ViewModel-Dokumentation korrigiert hast. (#221)

Version 2.4.0-alpha03

4. August 2021

androidx.lifecycle:lifecycle-*:2.4.0-alpha03 wird veröffentlicht. Version 2.4.0-alpha03 enthält diese Commits.

API-Änderungen

  • Unterbrechung der Codebasis: ViewModelProvider wurde in Kotlin neu geschrieben. Bei der ViewModelProvider.Factory.create-Methode ist „nullable“ nicht mehr als generischer Typ zulässig. (I9b9f6)

Verhaltensänderungen

  • Lifecycle.repeatOnLifecycle: block wird jetzt bei wiederholter Ausführung immer nacheinander aufgerufen. (Ibab33)

Externer Beitrag

  • Vielen Dank an chao2zhang für die Korrektur der Code-Snippets in der repeatOnLifecycle-Dokumentation. #205.

Version 2.4.0-alpha02

16. Juni 2021

androidx.lifecycle:lifecycle-*:2.4.0-alpha02 wurde veröffentlicht. Version 2.4.0-alpha02 enthält diese Commits.

Neue Funktionen

  • lifecycle-runtime-ktx enthält jetzt eine neue RepeatOnLifecycleWrongUsage-Lint-Prüfung, die erkennt, wenn repeateOnLifecycle in onStart() oder onResume() falsch verwendet wird. (706078, b/187887400)

API-Änderungen

  • Die LifecycleOwner.addRepeatingJob API wird zugunsten von Lifecycle.repeatOnLifecycle entfernt, die strukturierte Parallelität berücksichtigt und einfacher zu verstehen ist. (I4a3a8)
  • Machen Sie ProcessLifecycleInitializer öffentlich, damit andere androidx.startup.Initializers diese als Abhängigkeiten verwenden können. (I94c31)

Fehlerkorrekturen

  • Ein Problem mit der NullSafeMutableLiveData-Lint-Prüfung, wenn das Feld Modifikatoren hat, wurde behoben. (#147, b/183696616)
  • Ein weiteres Problem mit der Lint-Prüfung NullSafeMutableLiveData bei der Verwendung von generischen Elementen wurde behoben. (#161, b/184830263)

Externer Beitrag

Version 2.4.0-alpha01

24. März 2021

androidx.lifecycle:lifecycle-*:2.4.0-alpha01 wurde veröffentlicht. Version 2.4.0-alpha01 enthält diese Commits.

Verhaltensänderungen

  • lifecycle-process verwendet jetzt androidx.startup, um ProcessLifecycleOwner zu initialisieren.

    Zuvor wurde dies von androidx.lifecycle.ProcessLifecycleOwnerInitializer durchgeführt.

    Wenn Sie tools:node="remove" verwendet haben, um den Prozesslebenszyklus in der Vergangenheit zu initialisieren, gehen Sie stattdessen so vor:ContentProvider

     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.lifecycle.ProcessLifecycleInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

    (oder)

     <!-- If you want to disable androidx.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

API-Änderungen

  • Es wurde eine Flow.flowWithLifecycle API hinzugefügt, die Werte aus dem vorgelagerten Fluss ausgibt, wenn der Lebenszyklus mithilfe der Lifecycle.repeatOnLifecycle API mindestens in einem bestimmten Status ist. Dies ist eine Alternative zur ebenfalls neuen LifecycleOwner.addRepeatinJob API. (I0f4cd)

Fehlerkorrekturen

  • Ab Lifecycle 2.3.1: Mit der NonNullableMutableLiveData-Lint-Regel kann jetzt richtig zwischen Feldvariablen mit unterschiedlicher Nullbarkeit unterschieden werden. (b/169249668)

Lifecycle Viewmodel Compose Version 1.0.0

Version 1.0.0-alpha07

16. Juni 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07 wird veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.

Nicht abwärtskompatible API-Änderungen

  • viewModel() verwendet jetzt ein optionales ViewModelStoreOwner, was die Arbeit mit anderen Inhabern als LocalViewModelStoreOwner vereinfacht. So können Sie beispielsweise jetzt mit viewModel(navBackStackEntry) ein ViewModel abrufen, das mit einem bestimmten Navigationsgraphen verknüpft ist. (I2628d, b/188693123)

Version 1.0.0-alpha06

2. Juni 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06 wird veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.

Aktualisiert, um mit Compose-Version 1.0.0-beta08 kompatibel zu sein.

Version 1.0.0-alpha05

18. Mai 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05 wurde veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.

Neue Funktionen

  • Aktualisiert, um mit Compose-Version 1.0.0-beta07 kompatibel zu sein.

Fehlerkorrekturen

  • Die AndroidManifest-Dateien aus „ui-test-manifest“ und „ui-tooling-data“ sind jetzt mit Android 12 kompatibel (I6f9de, b/184718994)

Version 1.0.0-alpha04

7. April 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04 wird veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.

Änderungen an Abhängigkeiten

  • Mit dieser Version können androidx.hilt:hilt-navigation-compose und androidx.navigation:navigation-compose Abhängigkeiten von androidx.compose.compiler:compiler:1.0.0-beta04 und androidx.compose.runtime:runtime:1.0.0-beta04 synchronisieren. Bei Version 1.0.0 müssen Compiler und Laufzeit übereinstimmen.

Version 1.0.0-alpha03

10. März 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03 wurde veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.

API-Änderungen

  • LocalViewModelStoreOwner.current gibt jetzt eine optionale ViewModelStoreOwner zurück, um besser zu bestimmen, ob eine ViewModelStoreOwner in der aktuellen Komposition verfügbar ist. Bei APIs, für die eine ViewModelStoreOwner erforderlich ist, z. B. viewModel() und NavHost, wird weiterhin eine Ausnahme ausgelöst, wenn keine ViewModelStoreOwner festgelegt ist. (Idf39a)

Lifecycle-Viewmodel-Compose Version 1.0.0-alpha02

24. Februar 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02 wird veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.

API-Änderungen

  • LocalViewModelStoreOwner hat jetzt provides-Funktionen, die mit CompositionLocalProvider verwendet werden können und die asProvidableCompositionLocal() API ersetzen. (I45d24)

Lifecycle-Viewmodel-Compose Version 1.0.0-alpha01

10. Februar 2021

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 wird veröffentlicht. Version 1.0.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Das viewModel()-Komposit und LocalViewModelStoreOwner wurden aus androidx.compose.ui.viewinterop in dieses Artefakt im androidx.lifecycle.viewmodel.compose-Paket verschoben. (I7a374)

Version 2.3.1

Lebenszyklusversion 2.3.1

24. März 2021

androidx.lifecycle:lifecycle-*:2.3.1 wurde veröffentlicht. Version 2.3.1 enthält diese Commits.

Fehlerkorrekturen

  • Mit der Lint-Regel NonNullableMutableLiveData kann jetzt richtig zwischen Feldvariablen mit unterschiedlicher Null-Zulässigkeit unterschieden werden. (b/169249668)

Version 2.3.0

Version 2.3.0

10. Februar 2021

androidx.lifecycle:lifecycle-*:2.3.0 wird veröffentlicht. Version 2.3.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.2.0

  • SavedStateHandle-Unterstützung für nicht paketbare Klassen: SavedStateHandle unterstützt jetzt die Lazy-Serialisierung. Sie können setSavedStateProvider() für einen bestimmten Schlüssel aufrufen und einen SavedStateProvider angeben, der einen Rückruf an saveState() erhält, wenn SavedStateHandle aufgefordert wird, seinen Status zu speichern. Weitere Informationen finden Sie unter Nicht teilbare Klassen speichern.
  • Durchsetzung des Lebenszyklusverhaltens:
    • LifecycleRegistry erzwingt jetzt DESTROYED als Endstatus.
    • LifecycleRegistry überprüft jetzt, ob seine Methoden im Hauptthread aufgerufen werden. Das war immer eine Anforderung für die Lebenszyklen von Aktivitäten, Fragmenten usw. Das Hinzufügen von Beobachtern aus nicht primären Threads führte zu schwer zu erkennenden Abstürzen bei der Laufzeit. Bei LifecycleRegistry-Objekten, die zu Ihren eigenen Komponenten gehören, können Sie die Prüfungen mithilfe von LifecycleRegistry.createUnsafe(...) explizit deaktivieren. Sie müssen dann jedoch dafür sorgen, dass eine ordnungsgemäße Synchronisierung vorhanden ist, wenn auf dieses LifecycleRegistry aus verschiedenen Threads zugegriffen wird.
  • Lebenszyklusstatus- und Ereignis-Hilfsmethoden: Lifecycle.Event wurde statische Hilfsmethoden von downFrom(State), downTo(State), upFrom(State) und upTo(State) hinzugefügt, um Event anhand von State und Übergangsrichtung zu generieren. Die Methode getTargetState() wurde hinzugefügt. Sie gibt den State an, zu dem der Lebenszyklus direkt nach dem Event übergeht.
  • withStateAtLeast: Es wurden Lifecycle.withStateAtLeast APIs hinzugefügt, die auf einen Lebenszyklusstatus warten und einen nicht angehaltenen Codeblock synchron zum Zeitpunkt des Statuswechsels ausführen und dann mit dem Ergebnis fortfahren. Diese APIs unterscheiden sich von den vorhandenen when*-Methoden, da sie keinen aussetzenden Code ausführen und keinen benutzerdefinierten Dispatcher verwenden. (aosp/1326081)
  • ViewTree APIs: Mit einer neuen ViewTreeLifecycleOwner.get(View)- und ViewTreeViewModelStoreOwner.get(View) API können Sie die enthaltenen LifecycleOwner- bzw. ViewModelStoreOwner-Elemente anhand einer View-Instanz abrufen. Sie müssen ein Upgrade auf Activity 1.2.0 und Fragment 1.3.0 sowie auf AppCompat 1.3.0-alpha01 oder höher ausführen, um dieses Feld korrekt auszufüllen. Die Kotlin-Erweiterungen findViewTreeLifecycleOwner und findViewTreeViewModelStoreOwner sind in lifecycle-runtime-ktx und lifecycle-viewmodel-ktx verfügbar.
  • Einstellung der Kotlin-Erweiterung LiveData.observe(): Die Kotlin-Erweiterung LiveData.observe(), die für die Verwendung der Lambda-Syntax erforderlich ist, wird eingestellt, da sie bei der Verwendung von Kotlin 1.4 nicht mehr erforderlich ist.

Version 2.3.0-rc01

16. Dezember 2020

androidx.lifecycle:lifecycle-*:2.3.0-rc01 wird veröffentlicht. Version 2.3.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Die keys()-Methode von SavedStateHandle ist jetzt vor und nach dem Speichern des Status konsistent. Sie enthält jetzt zusätzlich zu den Schlüsseln, die mit set() und getLiveData() verwendet werden, auch Schlüssel, die zuvor mit setSavedStateProvider() verwendet wurden. (aosp/1517919, b/174713653)

Externer Beitrag

Version 2.3.0-beta01

1. Oktober 2020

androidx.lifecycle:lifecycle-*:2.3.0-beta01 wird veröffentlicht. Version 2.3.0-beta01 enthält diese Commits.

API-Änderungen

  • Die Kotlin-Erweiterung LiveData.observe(), die für die Verwendung der Lambda-Syntax erforderlich ist, wird jetzt eingestellt, da sie bei der Verwendung von Kotlin 1.4 nicht mehr erforderlich ist. (I40d3f)

Fehlerkorrekturen

Änderungen an der Dokumentation

  • Die Dokumentation für den liveData-Builder und asLiveData() wurde aktualisiert und enthält jetzt Details zum Ändern der angegebenen Zeitüberschreitungswerte. (aosp/1122324)

Version 2.3.0-alpha07

19. August 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha07 wurde veröffentlicht. Version 2.3.0-alpha07 enthält diese Commits.

Fehlerkorrekturen

  • Ein Absturzproblem bei der NullSafeMutableLiveData-Lint-Prüfung wurde behoben. (aosp/1395367)

Version 2.3.0-alpha06

22. Juli 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha06 wurde veröffentlicht. Version 2.3.0-alpha06 enthält diese Commits.

Neue Funktionen

  • Statische Hilfsmethoden von downFrom(State), downTo(State), upFrom(State) und upTo(State) wurden zu Lifecycle.Event hinzugefügt, um Event anhand von State und der Übergangsrichtung zu generieren. Die Methode getTargetState() wurde hinzugefügt. Sie gibt den State an, zu dem der Lebenszyklus direkt nach dem Event übergeht. (I00887)
  • Es wurden Lifecycle.withStateAtLeast APIs hinzugefügt, die auf einen Lebenszyklusstatus warten und einen nicht angehaltenen Codeblock synchron zum Zeitpunkt des Statuswechsels ausführen und dann mit dem Ergebnis fortfahren. Diese APIs unterscheiden sich von den vorhandenen when*-Methoden, da sie die Ausführung von Sperrcode nicht zulassen und keinen benutzerdefinierten Dispatcher verwenden. (aosp/1326081)

Verhaltensänderungen

  • LifecycleRegistry erzwingt jetzt DESTROYED als Endstatus. (I00887)
  • LifecycleRegistry prüft jetzt, ob seine Methoden im Hauptthread aufgerufen werden. Das war immer eine Anforderung für die Lebenszyklen von Aktivitäten, Fragmenten usw. Das Hinzufügen von Beobachtern aus nicht primären Threads führte zu schwer zu erkennenden Abstürzen bei der Laufzeit. Bei LifecycleRegistry-Objekten, die Ihren eigenen Komponenten gehören, können Sie Prüfungen explizit mit LifecycleRegistry.createUnsafe(...) deaktivieren. Dann müssen Sie jedoch dafür sorgen, dass eine ordnungsgemäße Synchronisierung erfolgt, wenn von verschiedenen Threads aus auf dieses LifecycleRegistry zugegriffen wird (Ie7280, b/137392809).

Fehlerkorrekturen

  • Ein Absturz in NullSafeMutableLiveData wurde behoben. (b/159987480)
  • Ein ObsoleteLintCustomCheck für Lint-Prüfungen wurde behoben, die mit lifecycle-livedata-core-ktx (und insbesondere NullSafeMutableLiveData) gebündelt sind. (b/158699265)

Version 2.3.0-alpha05

24. Juni 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha05 wird veröffentlicht. Version 2.3.0-alpha05 enthält diese Commits.

Fehlerkorrekturen

  • LiveData kann jetzt wiedereintretende Fälle besser verarbeiten und doppelte Aufrufe von onActive() oder onInactive() vermeiden. (b/157840298)
  • Ein Problem wurde behoben, bei dem Lint-Prüfungen bei Verwendung von Android Studio 4.1 Canary 6 oder höher nicht ausgeführt wurden. (aosp/1331903)

Version 2.3.0-alpha04

10. Juni 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha04 wird veröffentlicht. Version 2.3.0-alpha04 enthält diese Commits.

Fehlerkorrekturen

  • Ein Absturz bei der NonNullableMutableLiveData Lint-Prüfung wurde behoben. (b/157294666)
  • Die NonNullableMutableLiveData-Lint-Prüfung deckt jetzt deutlich mehr Fälle ab, in denen ein null-Wert für eine MutableLiveData mit einem nicht nullwertigen Typparameter festgelegt wurde. (b/156002218)

Version 2.3.0-alpha03

20. Mai 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha03 wurden freigegeben. Version 2.3.0-alpha03 enthält diese Commits.

Neue Funktionen

  • SavedStateHandle unterstützt jetzt die Lazy-Serialisierung. Sie können setSavedStateProvider() für einen bestimmten Schlüssel aufrufen und dabei einen SavedStateProvider angeben, der einen Callback an saveState() erhält, wenn der SavedStateHandle aufgefordert wird, seinen Status zu speichern. (b/155106862)
  • Mit einer neuen ViewTreeViewModelStoreOwner.get(View) API können Sie die enthaltene ViewModelStoreOwner anhand einer View-Instanz abrufen. Sie müssen auf Activity 1.2.0-alpha05, Fragment 1.3.0-alpha05 und AppCompat 1.3.0-alpha01 umstellen, um diese Informationen korrekt einzugeben. lifecycle-viewmodel-ktx wurde die Kotlin-Erweiterung findViewModelStoreOwner() hinzugefügt. (aosp/1295522)

Fehlerkorrekturen

  • Es wurde ein Problem behoben, durch das die im Lebenszyklus 2.3.0-alpha01 veröffentlichten Lint-Prüfungen MutableLiveData zusammen mit dem Artefakt lifecycle-livedata-core-ktx veröffentlicht wurden. (b/155323109)

Version 2.3.0-alpha02

29. April 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha02 wird veröffentlicht. Version 2.3.0-alpha02 enthält diese Commits.

API-Änderungen

  • Mit SavedStateViewModelFactory können Sie jetzt einen Null-Application an seinen Konstruktor übergeben, um in Fällen zu unterstützen, in denen eine solche nicht verfügbar ist und keine Unterstützung für AndroidViewModel erforderlich ist. (aosp/1285740)

Fehlerkorrekturen

  • Die Leistung beim Kaltstart wurde verbessert, da Fehler bei der Klassenüberprüfung auf Geräten mit API 28 und niedrigerer Version vermieden werden. (aosp/1282118)

Version 2.3.0-alpha01

4. März 2020

androidx.lifecycle:lifecycle-*:2.3.0-alpha01 wird veröffentlicht. Version 2.3.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Mit einer neuen ViewTreeLifecycleOwner.get(View) API können Sie die enthaltene LifecycleOwner anhand einer View-Instanz abrufen. Sie müssen ein Upgrade auf Aktivität 1.2.0-alpha01 und Fragment 1.3.0-alpha01 ausführen, um diese Informationen korrekt einfügen zu können. Eine findViewTreeLifecycleOwner-Kotlin-Erweiterung ist in lifecycle-runtime-ktx verfügbar. (aosp/1182361, aosp/1182956)
  • Es wurde eine neue Lint-Prüfung hinzugefügt, die Sie warnt, wenn Sie einen null-Wert für einen MutableLiveData festlegen, der in Kotlin als nicht null definiert wurde. Dies ist verfügbar, wenn Sie das Artefakt livedata-core-ktx oder livedata-ktx verwenden. (aosp/1154723, aosp/1159092)
  • Es ist ein neues lifecycle-runtime-testing-Artefakt verfügbar, das eine TestLifecycleOwner bereitstellt, die LifecycleOwner implementiert und eine threadsichere mutable Lifecycle bietet. (aosp/1242438)

Fehlerkorrekturen

  • Das lifecycle-runtime-Artefakt hat jetzt einen eindeutigen Paketnamen. (aosp/1187196)

Version 2.2.0

ViewModel-Savedstate Version 2.2.0

5. Februar 2020

androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0 wird veröffentlicht. Version 2.2.0 enthält diese Commits.

Der SavedState des Lifecycle ViewModel hat jetzt dieselbe Version wie andere Lifecycle-Artefakte. Das Verhalten von 2.2.0 ist mit dem von 1.0.0 identisch.

Version 2.2.0

22. Januar 2020

androidx.lifecycle:lifecycle-*:2.2.0 wird veröffentlicht. Version 2.2.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.1.0

  • Integration von Lifecycle-Coroutinen: Das neue lifecycle-runtime-ktx-Artefakt ermöglicht die Integration von Lifecycle und Kotlin-Coroutinen. Die lifecycle-livedata-ktx wurde außerdem um coroutines erweitert. Weitere Informationen finden Sie unter Kotlin-Coroutinen mit Architekturkomponenten verwenden.
  • Einstellung von ViewModelProviders.of(): ViewModelProviders.of() wurde eingestellt. Sie können dem neuen ViewModelProvider(ViewModelStoreOwner)-Konstruktor ein Fragment oder FragmentActivity übergeben, um dieselbe Funktionalität zu erzielen, wenn Sie Fragment 1.2.0 verwenden.
  • Einstellung des lifecycle-extensions-Artefakts: Durch die oben genannte Einstellung von ViewModelProviders.of() wird mit diesem Release auch die letzte API in lifecycle-extensions eingestellt. Dieses Artefakt sollte jetzt vollständig als eingestellt betrachtet werden. Wir empfehlen dringend, die spezifischen Lebenszyklus-Artefakte zu verwenden, die Sie benötigen (z. B. lifecycle-service, wenn Sie LifecycleService verwenden, und lifecycle-process, wenn Sie ProcessLifecycleOwner verwenden), und nicht auf lifecycle-extensions, da es in Zukunft keine 2.3.0-Version von lifecycle-extensions geben wird.
  • Gradle Inkrementeller Annotationsprozessor: Der Annotationsprozessor des Lebenszyklus ist standardmäßig inkrementell. Wenn Ihre App in der Programmiersprache Java 8 geschrieben ist, können Sie stattdessen DefautLifecycleObserver verwenden. Wenn sie in der Programmiersprache Java 7 geschrieben ist, können Sie LifecycleEventObserver verwenden.

Version 2.2.0-rc03

4. Dezember 2019

androidx.lifecycle:lifecycle-*:2.2.0-rc03 wurde veröffentlicht. Version 2.2.0-rc03 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler wurde behoben, der auftrat, wenn eine gemockte ViewModel in ViewModelStore gespeichert und später mit der Standardfabrik abgefragt wurde.
  • Fehler bei der Verwendung von Dispatchers.Main.immediate in launchWhenCreated und ähnlichen Methoden behoben, die während des entsprechenden Lebenszyklusereignisses synchron aufgerufen werden sollen. (aosp/1156203)

Externe Beiträge

  • Vielen Dank an Anders Järleberg für die Behebung dieses Problems. (aosp/1156203)
  • Vielen Dank an Vsevolod Tolstopyatov von Jetbrains für die Überprüfung einer Implementierung der Inline-Ausführung.

Abhängigkeitsänderungen

  • Lebenszykluserweiterungen hängen jetzt vom Fragment 1.2.0-rc03 ab.

Version 2.2.0-rc02

7. November 2019

androidx.lifecycle:lifecycle-*:2.2.0-rc02 wird veröffentlicht. Version 2.2.0-rc02 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler in der ProGuard-Einrichtung der Bibliothek wurde behoben, der Geräte mit API 28 und höher betraf, wenn die Ziel-API unter 29 lag. (b/142778206)

Version 2.2.0-rc01

23. Oktober 2019

androidx.lifecycle:lifecycle-*:2.2.0-rc01 wird veröffentlicht. Version 2.2.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem launchWhenCreated und verwandte Methoden einen Frame nach der zugehörigen Lebenszyklusmethode ausgeführt wurden, da Dispatchers.Main anstelle von Dispatchers.Main.immediate verwendet wurde. (aosp/1145596)

Externe Beiträge

  • Vielen Dank an Nicklas Ansman für die Behebung! (aosp/1145596)

Version 2.2.0-beta01

9. Oktober 2019

androidx.lifecycle:lifecycle-*:2.2.0-beta01 wird veröffentlicht. Version 2.2.0-beta01 enthält diese Commits.

Fehlerkorrekturen

  • Behebung einer Regression, die in Lifecycle 2.2.0-alpha05 bei der Sortierung von ProcessLifecycleOwner und der LifecycleOwner der Aktivität auf Android 10-Geräten aufgetreten ist. (aosp/1128132)
  • Eine Regression wurde behoben, die in Lifecycle 2.2.0-alpha05 eingeführt wurde und bei Verwendung der Version 2.0.0 oder 2.1.0 von lifecycle-process zu einem NullPointerException führte. (b/141536990)

Version 2.2.0-alpha05

18. September 2019

androidx.lifecycle:lifecycle-*:2.2.0-alpha05 wurde veröffentlicht. Version 2.2.0-alpha05 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde eine Race-Bedingung im LiveData-Builder für Tasks behoben. b/140249349

Version 2.2.0-alpha04

5. September 2019

androidx.lifecycle:lifecycle-*:2.2.0-alpha04 wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • Für lifecycleScope, whenCreated, whenStarted, whenResumed, viewModelScope und die zugrunde liegende Implementierung von liveData wird jetzt Dispatchers.Main.immediate anstelle von Dispatchers.Main verwendet. (b/139740492)

Externe Beiträge

  • Vielen Dank an Nicklas Ansman für die Umstellung auf Dispatchers.Main.immediate. (aosp/1106073)

Version 2.2.0-alpha03

7. August 2019

androidx.lifecycle:lifecycle-*:2.2.0-alpha03 wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

API-Änderungen

  • ViewModelProviders.of() wurde eingestellt. Sie können dem neuen Konstruktor ViewModelProvider(ViewModelStoreOwner) eine Fragment oder FragmentActivity übergeben, um dieselbe Funktionalität zu erreichen. (aosp/1009889)

Version 2.2.0-alpha02

2. Juli 2019

androidx.lifecycle:*:2.2.0-alpha02 wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

API-Änderungen

  • LiveDataScope.initialValue wurde durch LiveDataScope.latestValue ersetzt, mit dem der aktuelle ausgestrahlte Wert des Blocks liveData erfasst wird.
  • Dem liveData-Builder wurde eine neue Überladung hinzugefügt, die den timeout-Parameter vom Typ Duration empfängt.

Version 2.2.0-alpha01

7. Mai 2019

androidx.lifecycle:*:2.2.0-alpha01 wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • Diese Version enthält neue Funktionen, die die Unterstützung von Kotlin-Coroutinen für Lifecycle und LiveData bieten. Eine ausführliche Dokumentation dazu finden Sie hier.

ViewModel-SavedState Version 1.0.0

Version 1.0.0

22. Januar 2020

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0 wird veröffentlicht. Version 1.0.0 enthält diese Commits.

Wichtige Funktionen in 1.0.0

  • Die neue Klasse SavedStateHandle wurde hinzugefügt. So können Ihre ViewModel-Klassen auf den gespeicherten Status zugreifen und zu diesem beitragen. Dieses Objekt kann im Konstruktor der Klasse ViewModel empfangen werden. Die von Fragmenten standardmäßig bereitgestellten Fabriken und AppCompatActivity fügen SavedStateHandle automatisch ein.
  • AbstractSavedStateViewModelFactory wurde hinzugefügt. Damit kannst du benutzerdefinierte Factorys für ViewModel erstellen und ihnen Zugriff auf SavedStateHandle gewähren.

ViewModel-Savedstate Version 1.0.0-rc03

4. Dezember 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03 wurde veröffentlicht. Version 1.0.0-rc03 enthält diese Commits.

Änderungen an Abhängigkeiten

  • Der Lifecycle-ViewModel-Speicherstatus hängt jetzt vom Lebenszyklus 2.2.0-rc03 ab.

Viewmodel-Savedstate Version 1.0.0-rc02

7. November 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02 wird veröffentlicht. Version 1.0.0-rc02 enthält diese Commits.

Abhängigkeitsänderungen

  • Jetzt hängt es vom Lebenszyklus 2.2.0-rc02 ab.

ViewModel-SavedState Version 1.0.0-rc01

23. Oktober 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01 wird ohne Änderungen gegenüber 1.0.0-beta01 veröffentlicht. Version 1.0.0-rc01 enthält diese Commits.

ViewModel-Savedstate Version 1.0.0-beta01

9. Oktober 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01 wurde veröffentlicht. Version 1.0.0-beta01 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das beim ersten Zugriff auf ein SavedState-ViewModel in Activity.onActivityResult() eine IllegalStateException zurückgegeben wurde. (b/139093676)
  • Ein Problem mit IllegalStateException bei Verwendung von AbstractSavedStateViewModelFactory wurde behoben. (b/141225984)

ViewModel-SavedState Version 1.0.0-alpha05

18. September 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05 wird veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.

API-Änderungen

  • SavedStateViewModelFactory erweitert AbstractSavedStateViewModelFactory nicht mehr und SavedStateHandle wird nur für ViewModels erstellt, für die es angefordert wurde (aosp/1113593)

ViewModel-SavedState Version 1.0.0-alpha03

7. August 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03 wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Wichtige Änderungen

ViewModel-SavedState Version 1.0.0-alpha02

2. Juli 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02 wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • Es wurde eine SavedStateHandle.getLiveData()-Überlastung hinzugefügt, die einen Standardwert akzeptiert.

API-Änderungen

  • SavedStateVMFactory wird in SavedStateViewModelFactory umbenannt.
  • AbstractSavedStateVMFactory wird in AbstractSavedStateViewModelFactory umbenannt.

ViewModel-Savedstate Version 1.0.0-alpha01

13. März 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01 wird veröffentlicht. Das vollständige Commit-Log für diese erste Version finden Sie hier.

Neue Funktionen

  • Jetzt kann ViewModels zu „savedstate“ beitragen. Dazu verwenden Sie die neu eingeführte ViewModel-Factory SavedStateVMFactory und Ihr ViewModel sollte einen Konstruktor haben, der das SavedStateHandle-Objekt als Parameter empfängt.

Version 2.1.0

Wichtige Änderungen seit Version 2.0.0

  • LifecycleEventObserver wurde für Fälle hinzugefügt, in denen ein Stream von Lebenszyklusereignissen benötigt wird. Es handelt sich um eine öffentliche API und nicht um eine ausgeblendete GenericLifecycleObserver-Klasse.
  • KTX-Erweiterungen für LiveData.observe- und Transformations.*-Methoden wurden hinzugefügt.
  • Transformations.distinctUntilChanged wurde hinzugefügt. Damit wird ein neues LiveData-Objekt erstellt, das erst dann einen Wert ausgibt, wenn der Quellwert LiveData geändert wurde.
  • Unterstützung für Tasks in ViewModels hinzugefügt, indem die Erweiterungseigenschaft ViewModel.viewModelScope hinzugefügt wurde.

Version 2.1.0

5. September 2019

androidx.lifecycle:lifecycle-*:2.1.0 wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Version 2.1.0-rc01

2. Juli 2019

androidx.lifecycle:*:2.1.0-rc01 wird ohne Änderungen gegenüber androidx.lifecycle:*:2.1.0-beta01 veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Version 2.1.0-beta01

7. Mai 2019

androidx.lifecycle:*:2.1.0-beta01 wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • Lebenszyklen werden in die Betaphase überführt: In früheren Alphaversionen eingeführte APIs wie liveData Erweiterungsfunktionen für Transformationen und Beobachtungen, ViewModel Initialisierung mit Property-Delegierung und andere sind stabil und werden nicht mehr geändert.

Version 2.1.0-alpha04

3. April 2019

androidx.lifecycle:*:2.1.0-alpha04 wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

API-Änderungen

  • Wichtige Änderung: Die zugrunde liegende API von by viewModels() und by activityViewModels() wurde geändert, um nicht nur ViewModelStoreOwner, sondern auch ViewModelStore direkt zu unterstützen. (aosp/932932)

Version 2.1.0-alpha03

13. März 2019

androidx.lifecycle:*:2.1.0-alpha03 wird veröffentlicht. Eine vollständige Liste der Commits in dieser Version finden Sie hier.

API-Änderungen

  • "ViewModelProvider.KeyedFactory" wurde entfernt. Neben ViewModelProvider.Factory kam die zweite Oberfläche auch nicht gut mit neuen Funktionen zur Attributdelegierung in Kotlin by viewmodels {} zusammen. (aosp/914133)

Version 2.1.0-alpha02

30. Januar 2019

androidx.lifecycle 2.1.0-alpha02 wird veröffentlicht.

API-Änderungen

  • LifecycleRegistry enthält jetzt eine setCurrentState()-Methode, die die jetzt verworfene setState()-Methode ersetzt. (aosp/880715)

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem simulierte ViewModel-Instanzen abstürzten, wenn die enthaltene ViewModelStore gelöscht wurde. b/122273087

Version 2.1.0-alpha01

17. Dezember 2018

androidx.lifecycle 2.1.0-alpha01 wird veröffentlicht.

Neue Funktionen

  • LifecycleEventObserver wurde hinzugefügt, wenn ein Stream von Lebenszyklusereignissen erforderlich ist. Es ist eine öffentliche API und keine ausgeblendete GenericLifecycleObserver-Klasse.
  • KTX-Erweiterungen für LiveData.observe- und Transformations.*-Methoden wurden hinzugefügt.
  • Die Methode Transformations.distinctUntilChanged wurde hinzugefügt. Es wird ein neues LiveData-Objekt erstellt, das erst dann einen Wert ausgibt, wenn sich der Quell-LiveData-Wert geändert hat.
  • Unterstützung für Tasks in ViewModels: Die Erweiterungseigenschaft ViewModel.viewModelScope wurde hinzugefügt.
  • ViewModelProvider.KeyedFactory wurde hinzugefügt, eine Factory für ViewModels, die key und Class in der create-Methode empfängt.

Version 2.0.0

Version 2.0.0

21. September 2018

Lebenszyklus 2.0.0 wird mit einer Fehlerkorrektur aus 2.0.0-rc01 in ViewModel veröffentlicht.

Fehlerkorrekturen

  • Eine ViewModel-Proguard-Regel wurde behoben, durch die Konstruktoren fälschlicherweise entfernt wurden b/112230489.

Version 2.0.0-beta01

2. Juli 2018

Fehlerkorrekturen

  • Proguard-Regel für LifecycleObserver korrigiert, sodass nur Implementierungen, nicht Unterschnittstellen beibehalten werden b/71389427
  • Die ViewModel-Proguard-Regeln wurden korrigiert, um Verschleierung und Verkleinerung zu ermöglichen.

Versionen vor Android X

Fügen Sie für die folgenden Versionen von Lifecycle vor Android X die folgenden Abhängigkeiten hinzu:

dependencies {
    def lifecycle_version = "1.1.1"

    // ViewModel and LiveData
    implementation "android.arch.lifecycle:extensions:$lifecycle_version"
    // alternatively - just ViewModel
    implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
    // alternatively - just LiveData
    implementation "android.arch.lifecycle:livedata:$lifecycle_version"
    // alternatively - Lifecycles only (no ViewModel or LiveData).
    //     Support library depends on this lightweight import
    implementation "android.arch.lifecycle:runtime:$lifecycle_version"

    annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
    // alternately - if using Java8, use the following instead of compiler
    implementation "android.arch.lifecycle:common-java8:$lifecycle_version"

    // optional - ReactiveStreams support for LiveData
    implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"

    // optional - Test helpers for LiveData
    testImplementation "android.arch.core:core-testing:$lifecycle_version"
}

Version 1.1.1

21. März 2018

Es gibt nur eine kleine Änderung: android.arch.core.util.Function wird von arch:runtime nach arch:common verschoben. Dadurch kann es ohne Laufzeitabhängigkeit verwendet werden, z.B. in paging:common unten.

lifecycle:common ist eine Abhängigkeit von lifecycle:runtime. Diese Änderung wirkt sich also nicht direkt auf lifecycle:runtime aus, sondern nur auf Module, die direkt von lifecycle:common abhängen, wie z. B. das Paging.

Version 1.1.0

22. Januar 2018

Änderungen an der Verpackung

Es sind jetzt neue, viel kleinere Abhängigkeiten verfügbar:

  • android.arch.lifecycle:livedata:1.1.0
  • android.arch.lifecycle:viewmodel:1.1.0

API-Änderungen

  • Die verworfenen LifecycleActivity und LifecycleFragment wurden entfernt. Bitte verwenden Sie FragmentActivity, AppCompatActivity oder unterstützen Sie Fragment.
  • @NonNull Anmerkungen wurden ViewModelProviders und ViewModelStores hinzugefügt
  • Der Konstruktor von ViewModelProviders wurde eingestellt. Verwenden Sie stattdessen die statischen Methoden.
  • ViewModelProviders.DefaultFactory wurde eingestellt – bitte ViewModelProvider.AndroidViewModelFactory verwenden
  • Die statische Methode ViewModelProvider.AndroidViewModelFactory.getInstance(Application) wurde hinzugefügt, um einen statischen Factory abzurufen, der sich zum Erstellen von Instanzen vom Typ ViewModel und AndroidViewModel eignet.