Compose-Laufzeit

Grundlegende Bausteine des Programmiermodells und der Statusverwaltung von Compose sowie die Core-Laufzeit für das Compose Compiler-Plug-in.
Letzte Aktualisierung Stabile Release Releasekandidat Beta-Release Alpha-Release
9. September 2026 1.12.1 - - 1.13.0-alpha03

Struktur

Compose ist eine Kombination aus 7 Maven-Gruppen-IDs innerhalb von androidx. Jede Gruppe enthält eine bestimmte Teilmenge von Funktionen mit jeweils eigenen Versionshinweisen.

In dieser Tabelle werden die Gruppen erläutert und es sind Links zu den einzelnen Versionshinweisen enthalten.

GruppeBeschreibung
compose.animationAnimationen in Jetpack Compose-Anwendungen erstellen, um die User Experience zu verbessern
compose.compiler@Zusammensetzbare Funktionen transformieren und Optimierungen mit einem Kotlin-Compiler-Plug-in ermöglichen
compose.foundationMit den einsatzbereiten Bausteinen können Sie Jetpack Compose-Anwendungen schreiben und die Foundation-Bibliothek erweitern, um eigene Designsystemkomponenten zu erstellen.
compose.materialJetpack Compose-UIs mit einsatzbereiten Material Design-Komponenten erstellen Dies ist der Einstiegspunkt auf höherer Ebene für Compose. Er wurde entwickelt, um Komponenten bereitzustellen, die den auf www.material.io beschriebenen Komponenten entsprechen.
compose.material3Jetpack Compose-UIs mit Material Design 3-Komponenten erstellen – der nächsten Generation von Material Design. Material 3 umfasst aktualisierte Designs und Komponenten sowie Material You-Personalisierungsfunktionen wie dynamische Farben und ist auf den neuen visuellen Stil und die System-UI von Android 12 abgestimmt.
compose.runtimeGrundlegende Bausteine des Programmiermodells und der Statusverwaltung von Compose sowie die Core-Laufzeit für das Compose Compiler-Plug-in.
compose.uiGrundlegende Komponenten der Compose-Benutzeroberfläche, die für die Interaktion mit dem Gerät erforderlich sind, einschließlich Layout, Zeichnen und Eingabe.

Abhängigkeiten deklarieren

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

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

Groovy

dependencies {
    implementation "androidx.compose.runtime:runtime:1.12.1"
    implementation "androidx.compose.runtime:runtime-livedata:1.12.1"
    implementation "androidx.compose.runtime:runtime-rxjava2:1.12.1"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.runtime:runtime:1.12.1")
    implementation("androidx.compose.runtime:runtime-livedata:1.12.1")
    implementation("androidx.compose.runtime:runtime-rxjava2:1.12.1")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

Feedback

Ihr Feedback hilft uns, Jetpack zu verbessern. Wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben, lassen Sie es uns wissen. Bevor Sie ein neues Problem erstellen, sollten Sie sich jedoch die bereits gemeldeten Probleme in dieser Bibliothek ansehen. Wenn Sie sich einer Problemmeldung anschließen möchten, klicken Sie auf den Button mit dem Stern.

Neues Problem melden

Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.

Version 1.13

Version 1.13.0-alpha03

9. September 2026

androidx.compose.runtime:runtime-*:1.13.0-alpha03 ist veröffentlicht. Version 1.13.0-alpha03 enthält diese Commits.

Leistung

  • SlotWriter.forAllDataInRememberOrder inline einfügen, um Zuweisungen zu vermeiden (Ie39f6)

Version 1.13.0-alpha02

26. August 2026

androidx.compose.runtime:runtime-*:1.13.0-alpha02 ist veröffentlicht. Version 1.13.0-alpha02 enthält diese Commits.

API-Änderungen

  • Die Funktion withLocalRetainedValuesStore wurde hinzugefügt, mit der Sie Werte aus dem Content-Lambda zurückgeben können. (I8e871, b/542168593)
  • Es wurden Nullable-Überladungen von rememberSerializable für MutableState hinzugefügt. (I77b83, b/543285462)

Version 1.13.0-alpha01

12. August 2026

androidx.compose.runtime:runtime-*:1.13.0-alpha01 ist veröffentlicht. Version 1.13.0-alpha01 enthält diese Commits.

API-Änderungen

  • Wir haben das Funktions-Flag LinkTable angepasst, um Konflikte in zusammengeführten ProGuard-Regelsätzen zu reduzieren und die Kompatibilität zu erhöhen, wenn eine App außerhalb von Gradle minimiert wird. Die ProGuard-Syntax zum Konfigurieren des Flags hat sich leicht geändert. Siehe unten. Beachten Sie die hinzugefügte Klammer (I419da): -assumevalues public class androidx.compose.runtime.ComposeRuntimeFlags { static boolean isLinkBufferComposerEnabled() return true; }

  • produceState() und Flow.collectAsState() akzeptieren jetzt ein SnapshotMutationPolicy-Argument, um die Gleichheits- und Zusammenführungsrichtlinie des zugrunde liegenden State-Objekts zu steuern. (I0c167, b/405128869)

  • @ComposableTarget wiederholbar gemacht. Weitere Informationen finden Sie in der aktualisierten Dokumentation. (I99a89, b/481422057)

  • RecompositionTracer wurde dem Ablauf zum Ungültigmachen von Kompositionen hinzugefügt (I1dbc1, Ia991d, b/531813367)

  • Der beobachtbare keys wird auf SaveableStateHolder verfügbar gemacht, um die Verwaltung des Navigations- und Backstack-Zustands zu vereinfachen und die Notwendigkeit einer externen key-Verfolgung zu beseitigen. Zugriff über holder.keys; Entfernen mit removeState. (I9bbbb, b/398887924)

  • staticCompositionLocalWithComputedDefaultOf wurde hinzugefügt, um ProvidableCompositionLocals zu erstellen, die bei Angabe statisch sind oder bei Nichtangabe berechnet werden. (I844e4)

Fehlerkorrekturen

  • Ein Problem in GapComposer wurde behoben, das dazu führen konnte, dass RememberObserver-Instanzen nach einem withCompositionLocal-Block ihre Forget-Callbacks fälschlicherweise vor RememberObserver-Instanzen im Block ausführen. (I4d54c)
  • Es wurde eine Ausnahme mit geringem Volumen behoben, die beim Schreiben in ein veränderliches Statusobjekt auftrat. (I48194, b/503110696)
  • Ein Fehler in SnapshotStateSet.writeToParcel wurde behoben, durch den nur der erste Eintrag serialisiert wurde. (I64f4c, b/537461421)
  • Die CancellationException, die zum Abbrechen von LaunchedEffect verwendet werden, und die gespeicherten CoroutineScopes wurden für eine bessere Lesbarkeit in Stacks optimiert. (I89840, b/449897855)
  • Optimierte Initialisierung von Companion-Objekten von compose:runtime-Wertklassen (ComposeStackTraceMode, GroupKind) mithilfe dynamischer Getter. (I50640)
  • Anforderung für compileSdk 37 (If78b4) entfernen

Externer Beitrag

  • Es wurde ein Fehler behoben, durch den übergeordnete Kompositionen nicht mehr reagierten, wenn eine untergeordnete Komposition mit Fehler während der Live-Bearbeitung entfernt wurde. (I3717c)
  • Die Live Edit-Wiederherstellung nach einem Fehler in einer untergeordneten Komposition wurde korrigiert, sodass übergeordnete Kompositionen weiterhin Statusänderungen beobachten. (I63fb5)

Version 1.12

Version 1.12.1

9. September 2026

androidx.compose.runtime:runtime-*:1.12.1 wurde ohne Änderungen seit Version 1.12.0 veröffentlicht. Version 1.12.1 enthält diese Commits.

Version 1.12.0

12. August 2026

androidx.compose.runtime:runtime-*:1.12.0 ist veröffentlicht. Version 1.12.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.11.0:

Aktualisierungen der Tabelle für experimentelle Slots

  • Wir haben Fortschritte bei der Stabilisierung der experimentellen LinkTable-Implementierung gemacht, die in Version 1.11 eingeführt wurde. Die neue Implementierung soll die Leistung bei der Neukomposition verbessern, insbesondere bei kleinen zufälligen Änderungen. Wir empfehlen Nutzern, die neue SlotTable auszuprobieren und alle Probleme zu melden, die auftreten. Weitere Informationen findest du in den ComposeRuntimeFlags.isLinkBufferComposerEnabled.

Nebeneffekt bei der Keys API

  • Es wurde eine Überladung für SideEffect hinzugefügt, die Schlüsselargumente akzeptiert. Mit der neuen API können einmalige SideEffects ausgelöst werden, ohne dass ein LaunchedEffect oder DisposableEffect erforderlich ist, dessen CoroutineScope- oder onDispose-Block nicht verwendet wird. (I528b2, b/476108743)

Version 1.12.0-rc01

29. Juli 2026

androidx.compose.runtime:runtime-*:1.12.0-rc01 ist veröffentlicht. Version 1.12.0-rc01 enthält diese Commits.

Version 1.12.0-beta02

01. Juli 2026

androidx.compose.runtime:runtime-*:1.12.0-beta02 ist veröffentlicht. Version 1.12.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • Ein ArrayIndexOutOfBoundsException im LinkComposer wurde behoben, wenn verschachtelte MovableContent verwendet wurden. (I85daf)

Version 1.12.0-beta01

17. Juni 2026

androidx.compose.runtime:runtime-*:1.12.0-beta01 ist veröffentlicht. Version 1.12.0-beta01 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem Beobachter für das Anwenden von Snapshots nicht benachrichtigt wurden, wenn ein Statusobjekt in einem Snapshot erstellt und dann in einem gleichzeitigen Snapshot geändert wurde, bevor der erste Snapshot angewendet wurde. (Ide27f, b/451479063)
  • Ein potenzielles Speicherleck bei der Nachverfolgung von derivedStateOf()-Werten in der Komposition wurde behoben. Durch das Weiterleiten von Schreibvorgängen an Objekte, die von einem abgeleiteten Status gelesen werden, wurde die derivedStateOf()-Instanz bis zum Ende der Komposition beibehalten. Wenn sich die derivedStateOf() nicht richtig gemerkt wird, kann dieses Leck erheblich sein, da bei jeder Komposition eine neue erstellt werden kann. (Ib5d87, b/516904513)
  • Ein Problem in der LinkComposer wurde behoben, das dazu führen konnte, dass komponierbare Funktionen übersprungen wurden, anstatt neu komponiert zu werden, wenn sie während der Komposition ungültig wurden. (Ie29fe)
  • Ein Problem mit der Vararg-Überladung von remember wurde behoben, das verhinderte, dass der gespeicherte Wert ungültig gemacht wurde, und dazu führte, dass ein falscher Wert von „remember“ zurückgegeben wurde. Das ist passiert, als remember mit weniger Schlüsseln neu zusammengesetzt wurde, die mit den vorherigen Schlüsseln übereinstimmen, abzüglich der Elemente vom Ende des Arrays. Der betroffene Code muss neu kompiliert werden, damit dieser Fix angewendet wird. (I0736b)

Externer Beitrag

  • Ausführliches Tracing für DisposableEffect- und SideEffect-Vorgänge in der Compose-Laufzeit wurde hinzugefügt. (Ie451f)

Version 1.12.0-alpha03

19. Mai 2026

androidx.compose.runtime:runtime-*:1.12.0-alpha03 ist veröffentlicht. Version 1.12.0-alpha03 enthält diese Commits.

Fehlerkorrekturen

  • Es wurden mehrere Probleme in der LinkTable behoben, bei denen diagnostische Stacktraces nicht ausgefüllt waren oder Informationen fehlten (I3918c).
  • Ein Problem in einem internen Datentyp wurde behoben, das in seltenen Fällen mit verschiebbaren Inhalten zu einer Ausnahme führen konnte. (Ic478f, b/507724717)
  • Es wurde ein Problem mit dem Überspringen von Tests in LinkComposer behoben, das zu einem inkonsistenten Verhalten im Vergleich zu GapComposer, einer unerwarteten Neuberechnung von Standardargumenten und Testzeitüberschreitungen führte. (I783dc)

Version 1.12.0-alpha02

6. Mai 2026

androidx.compose.runtime:runtime-*:1.12.0-alpha02 ist veröffentlicht. Version 1.12.0-alpha02 enthält diese Commits.

API-Änderungen

  • Eine Überladung für SideEffect wurde hinzugefügt, die Schlüsselargumente akzeptiert. Mit der neuen API können einmalige SideEffects ausgelöst werden, ohne dass ein LaunchedEffect oder DisposableEffect erforderlich ist, dessen CoroutineScope- oder onDispose-Block nicht verwendet wird. (I528b2, b/476108743)

Version 1.12.0-alpha01

22. April 2026

androidx.compose.runtime:runtime-*:1.12.0-alpha01 ist veröffentlicht. Version 1.12.0-alpha01 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem in der LinkTable wurde behoben, das zu ungültigen Knotenoperationen führen konnte. (I491c3)
  • Das Compose-compileSdk wurde auf API 37 aktualisiert. Das bedeutet, dass bei der Verwendung von Compose mindestens AGP 9.2.0 erforderlich ist. (Id45cd, b/413674743)
  • Ein Caching-Problem in der LinkTable wurde behoben. Bei Inhalts-Einfügungen, die Größenänderungen auslösen, konnten veraltete Werte gelesen werden, was dazu führen konnte, dass CompositionLocals nicht aufgelöst wurden. (I8016c)
  • Es wurde ein Fehler behoben, der dazu führte, dass T.writableRecord unnötige IllegalStateExceptions auslöste (Ia778f, b/440975176).

Laufzeit-Tracing Version 1.7

Version 1.7.0-rc01

18. September 2024

androidx.compose.runtime:runtime-tracing:1.7.0-rc01 ist veröffentlicht. Version 1.7.0-rc01 enthält diese Commits.

Laufzeit-Tracing Version 1.0

Version 1.0.0-beta01

29. November 2023

androidx.compose.runtime:runtime-tracing:1.0.0-beta01 ist veröffentlicht. Version 1.0.0-beta01 enthält diese Commits.

Version 1.0.0-alpha05

15. November 2023

androidx.compose.runtime:runtime-tracing:1.0.0-alpha05 ist veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.

Fehlerkorrekturen

  • Angepinnte Abhängigkeiten an die niedrigsten unterstützten stabilen Versionen (z.B. compose-runtime und tracing-perfetto) – damit wird ein Problem behoben, bei dem compose-runtime-tracing eine neuere Version von compose-runtime in die App einfügen würde.

Version 1.0.0-alpha04

23. August 2023

androidx.compose.runtime:runtime-tracing:1.0.0-alpha04 ist veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Kompatibel mit den neuesten Versionen von Benchmark und Tracing Perfetto, wodurch die Unterstützung für Composition Tracing beim App-Start (Kaltstart) z.B. in AndroidX Benchmark und Android Studio (ab Hedgehog Beta 2) ermöglicht wird.

API-Änderungen

  • androidx.tracing.perfetto.Trace wurde in androidx.tracing.perfetto.PerfettoSdkTrace umbenannt. (I44af8)
  • Die Perfetto SDK-APIs für das Tracing werden an android.os.Trace angeglichen. (I73ba0, b/282199917)
  • Voraussetzungen für das Tracing beim App-Start. (Iad890)
  • Zusammengeführte experimentelle und öffentliche API-Dateien (I0f2e1, b/278769092)

Version 1.0.0-alpha02

8. Februar 2023

androidx.compose.runtime:runtime-tracing:1.0.0-alpha02 ist veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Keine Funktionsänderungen. Mehrere Leistungsoptimierungen in nachgelagerten Abhängigkeiten androidx.tracing:tracing-perfetto*.

Version 1.0.0-alpha01

7. September 2022

androidx.compose.runtime:runtime-tracing:1.0.0-alpha01 ist veröffentlicht. Version 1.0.0-alpha01 enthält diese Commits.

Neue Funktionen

  • androidx.compose.runtime:runtime-tracing ist eine Bibliothek, die in Verbindung mit den entsprechenden Tools (demnächst verfügbar) ein erweitertes Tracing in einer Compose-App ermöglicht. Dieses erste Release hat die Version 1.0.0-alpha01.

Version 1.11

Version 1.11.4

01. Juli 2026

androidx.compose.runtime:runtime-*:1.11.4 ist veröffentlicht. Version 1.11.4 enthält diese Commits.

Version 1.11.3

17. Juni 2026

androidx.compose.runtime:runtime-*:1.11.3 ist veröffentlicht. Version 1.11.3 enthält diese Commits.

Version 1.11.2

19. Mai 2026

androidx.compose.runtime:runtime-*:1.11.2 ist veröffentlicht. Version 1.11.2 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem in einem internen Datentyp wurde behoben, das in seltenen Fällen mit verschiebbaren Inhalten zu einer Ausnahme führen konnte. (Ic478f, b/507724717)

Version 1.11.1

6. Mai 2026

androidx.compose.runtime:runtime-*:1.11.1 ist veröffentlicht. Version 1.11.1 enthält diese Commits.

Version 1.11.0

22. April 2026

androidx.compose.runtime:runtime-*:1.11.0 ist veröffentlicht. Version 1.11.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.10.0:

Neue experimentelle SlotTable

  • Wir haben SlotTable neu geschrieben. Das ist die interne Datenstruktur, die von der Compose-Laufzeit verwendet wird, um die Kompositionshierarchie zu verfolgen, die durch eine Neukomposition verursachten Änderungen zu ermitteln und gespeicherte Werte zu speichern. Bei dieser Neufassung liegt der Fokus auf der Verbesserung der Recomposition-Leistung. Dies wird hauptsächlich durch die Verwendung von wesentlich weniger Speicherkopieroperationen als beim Gap-Buffer SlotTable erreicht. Bestimmte Änderungen an der Kompositionshierarchie, z. B. das Neuanordnen einer langen Liste von Elementen, können mehr als doppelt so schnell neu zusammengesetzt werden wie mit der bisherigen SlotTable. Die meisten anderen Vorgänge werden mit der neuen SlotTable-Implementierung um etwa 10% schneller neu zusammengesetzt. Die von der Laufzeit verwendete SlotTable-Implementierung wirkt sich auf alle zusammensetzbaren Methoden aus und erfordert keine Neukompilierung. Die Verwendung des neuen SlotTable ist eine appweite Änderung, die auch für Abhängigkeiten gilt.
  • Diese SlotTable-Implementierung ist noch experimentell und derzeit standardmäßig deaktiviert. Sie kann aktiviert werden, indem Sie ComposeRuntimeFlags.isLinkBufferComposerEnabled auf true setzen. In Release-Builds mit aktivierter Minimierung wird davon ausgegangen, dass dieser Wert in der mit der Laufzeit bereitgestellten Standarddatei „proguard-rules.pro“ „false“ ist. Damit die neue SlotTable in der Produktion aktiviert werden kann, muss diese Annahme in der Datei proguard-rules.pro der Anwendung in „true“ geändert werden. Weitere Informationen finden Sie in der Dokumentation zu ComposeRuntimeFlags.isLinkBufferComposerEnabled.

Host-Standard-Kompositionslokale

  • compositionLocalWithHostDefaultOf wurde hinzugefügt, um CompositionLocals zu definieren, die für ihre Standardwerte auf die Hostingumgebung zurückgreifen (z.B. Android-View-Tags).

Effizientere snapshotFlow-Beobachtung mit SnapshotFlowManager

  • Die SnapshotFlowManager API wurde eingeführt, um snapshotFlow effizienter zu beobachten. Wenn Sie dieselbe SnapshotFlowManager für mehrere snapshotFlow-Instanzen verwenden, werden weniger Snapshot-Apply-Observer registriert und Statusaktualisierungen schneller verarbeitet.

Version 1.11.0-rc01

8. April 2026

androidx.compose.runtime:runtime-*:1.11.0-rc01 ist veröffentlicht. Version 1.11.0-rc01 enthält diese Commits.

Version 1.11.0-beta02

25. März 2026

androidx.compose.runtime:runtime-*:1.11.0-beta02 ist veröffentlicht. Version 1.11.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem in WASM wurde behoben, bei dem immer 0 für Identitätshashcodes zurückgegeben wurde (I9d70c).
  • Ein Problem wurde behoben, bei dem der abgeleitete Status eines übergeordneten Elements möglicherweise nicht richtig ungültig gemacht wurde, wenn sich die Abhängigkeiten eines verschachtelten abgeleiteten Status änderten (Ia7981, b/481750019).
  • Ein Problem im LinkTable wurde behoben, das nach dem Schließen einer Komposition zu ungültigen Schreibvorgängen führen konnte. (I5c97a)
  • Ein Problem in LinkTable wurde behoben, das zu ungültigen Schreibvorgängen führen kann, wenn die Größe der Tabelle während eines Kopiervorgangs geändert wird (Ie7edf).
  • Behebt ein Problem im LinkTable, bei dem der gespeicherte Wert eines Knotens (I58a4a) fälschlicherweise aktualisiert wird.
  • LinkTable wird jetzt mit einer kleineren Kapazität initialisiert, wodurch OOM-Fehler beim Erstellen vieler untergeordneter Kompositionen auf Geräten mit kleineren Heaps vermieden werden (I112b9).

Version 1.11.0-beta01

11. März 2026

androidx.compose.runtime:runtime-*:1.11.0-beta01 ist veröffentlicht. Version 1.11.0-beta01 enthält diese Commits.

API-Änderungen

  • SnapshotFlowManager und die Überladung von snapshotFlow, die den Parameter manager akzeptieren, sind jetzt als experimentell gekennzeichnet (I5c1a5, b/486077876, I0de71, b/486077876).

Fehlerkorrekturen

  • Absturz „Apply is called on deactivated node“ in pausierbarer Komposition behoben (I880c0, b/484300733)
  • Ein Problem in LinkTable wurde behoben, das bei Verwendung von MovableContent zu ArrayIndexOutOfBoundsExceptions oder Metadatenbeschädigung führen konnte. (I8452b)
  • Ein Problem in der LinkTable wurde behoben, das dazu führte, dass Diagnosetraces nicht korrekt ausgefüllt wurden (I59868).
  • Ein Problem in der neuen SlotTable wurde behoben, bei dem RememberObservers in MovableContent beim Entfernen eine OutOfMemoryError/infinite-Schleife verursachen konnte. (I884e7)

Version 1.11.0-alpha06

25. Februar 2026

androidx.compose.runtime:runtime-*:1.11.0-alpha06 ist veröffentlicht. Version 1.11.0-alpha06 enthält diese Commits.

Version 1.11.0-alpha05

11. Februar 2026

androidx.compose.runtime:runtime-*:1.11.0-alpha05 ist veröffentlicht. Version 1.11.0-alpha05 enthält diese Commits.

API-Änderungen

  • ComposeRuntimeFlags.isMovingNestedMovableContentEnabled, ein Laufzeit-Funktions-Flag, wurde entfernt. (I3ee62, b/455588848)
  • HostDefaultKey wurde von einem open class in ein interface umgewandelt. So können für Schlüssel mehrere Suchmechanismen (z. B. ViewTreeHostDefaultKey) implementiert werden, ohne dass die Vererbung einer einzelnen Klasse die Erweiterbarkeit für benutzerdefinierte Hostingumgebungen einschränkt. (I917a2)
  • HostDefaultProvider und LocalHostDefaultProvider sind jetzt public. So können in benutzerdefinierten Hostingumgebungen Werte für plattformspezifische Lokalisierungen definiert werden. (I5bdbe)

Fehlerkorrekturen

  • Die Möglichkeit von Deadlocks beim gleichzeitigen Ausführen von zwei snapshotFlows in zwei Threads wurde beseitigt. (Ib4339)
  • Es wurde ein Problem in der Linktabelle behoben, das dazu führen konnte, dass in Tools Composables in der Hierarchie ausgelassen und Unterkompositionen falsch verknüpft wurden (I7178e).

Externer Beitrag

  • Falsch-positive Lint-Meldung bei Verwendung eines unären Operators zum Ändern des Werts in einem „produceState“-Block behoben (I1c7c9)

Version 1.11.0-alpha04

28. Januar 2026

androidx.compose.runtime:runtime-*:1.11.0-alpha04 ist veröffentlicht. Version 1.11.0-alpha04 enthält diese Commits.

API-Änderungen

  • Wir haben SlotTable neu geschrieben. Das ist die interne Datenstruktur, die von der Compose-Laufzeit verwendet wird, um die Kompositionshierarchie zu verfolgen, die durch eine Neukomposition verursachten Änderungen zu ermitteln und gespeicherte Werte zu speichern. Bei dieser Überarbeitung liegt der Fokus auf der Verbesserung der Recomposition-Leistung. Dies wird hauptsächlich durch die Verwendung von wesentlich weniger Speicherkopieroperationen als beim Gap-Puffer SlotTable erreicht. Bestimmte Änderungen an der Kompositionshierarchie, z. B. das Neuanordnen einer langen Liste von Elementen, können im Vergleich zum bisherigen SlotTable mehr als doppelt so schnell neu zusammengesetzt werden. Die meisten anderen Vorgänge werden mit der neuen SlotTable-Implementierung um etwa 10% schneller neu zusammengesetzt. Die von der Laufzeit verwendete SlotTable-Implementierung wirkt sich auf alle zusammensetzbaren Methoden aus und erfordert keine Neukompilierung. Die Verwendung des neuen SlotTable ist eine appweite Änderung, die auch für Abhängigkeiten gilt.
  • Diese SlotTable-Implementierung ist derzeit standardmäßig deaktiviert und kann aktiviert werden, indem Sie ComposeRuntimeFlags.isLinkBufferComposerEnabled auf true setzen.
  • In Release-Builds mit aktivierter Minimierung wird davon ausgegangen, dass dieser Wert in der standardmäßigen proguard-rules.pro-Datei, die mit der Laufzeit bereitgestellt wird, false ist. Damit die neue SlotTable in der Produktion aktiviert werden kann, muss diese Annahme in der proguard-rules.pro-Datei der Anwendung in true geändert werden. Weitere Informationen finden Sie in der Dokumentation zu ComposeRuntimeFlags.isLinkBufferComposerEnabled. (Ib741d, b/268366116)

Neue Funktionen

  • compositionLocalWithHostDefaultOf wurde hinzugefügt. Damit können CompositionLocals definiert werden, deren Standardwerte auf die Hostingumgebung zurückgreifen (z. B. Android View-Tags). (I15b81)

Fehlerkorrekturen

  • Es wurde dafür gesorgt, dass Snapshot.sendApplyNotifications-Aufrufe erst zurückgegeben werden können, wenn die erforderlichen Benachrichtigungen zum Anwenden gesendet wurden. (I95f20, b/418800424)
  • Verhindern, dass Quellinformationen-Stacktraces in Fällen, in denen Quellinformationen zur Laufzeit nicht vorhanden sind, auf Gruppenschlüssel herabgestuft werden. (If3712)
  • Stelle ComposeToolingFlags vor. Diese Flags sind dauerhaft (im Gegensatz zu ComposeRuntimeFlags) und werden für Tooling-Funktionen verwendet, die erhebliche Auswirkungen auf die Leistung haben. (I87863)

Externer Beitrag

  • Neue experimentelle RecomposerInfo#errorState API (I0decc)
  • Ändern Sie AnnotationRetention der Annotation FunctionKeyMeta in „BINARY“ (I53495).

Version 1.11.0-alpha03

14. Januar 2026

androidx.compose.runtime:runtime-*:1.11.0-alpha03 ist veröffentlicht. Version 1.11.0-alpha03 enthält diese Commits.

API-Änderungen

  • Die Klasse SnapshotFlowManager wurde eingeführt und der Funktion snapshotFlow wurde ein optionaler Parameter SnapshotFlowManager hinzugefügt. So können Nutzer die Anzahl der Snapshot-Apply-Observer optimieren, die registriert werden. (I6289b, b/446746211)

Fehlerkorrekturen

  • Eine Trace-Annotation für das Einfügen von verschiebbaren Inhalten wurde hinzugefügt (Ibf176).

Version 1.11.0-alpha02

17. Dezember 2025

androidx.compose.runtime:runtime-*:1.11.0-alpha02 ist veröffentlicht. Version 1.11.0-alpha02 enthält diese Commits.

API-Änderungen

  • Das Flag isMovableContentUsageTrackingEnabled wurde entfernt (I71e2b, b/427960130).

Externer Beitrag

  • Ein Fehler wurde behoben, der bei Live Edit auftrat und nicht behoben werden konnte. (Ieb34f)

Version 1.11.0-alpha01

3. Dezember 2025

androidx.compose.runtime:runtime-*:1.11.0-alpha01 ist veröffentlicht. Version 1.11.0-alpha01 enthält diese Commits.

API-Änderungen

  • RetainedValuesStore.getExitedValueOrDefault wird in consumeExitedValueOrDefault umbenannt.c7a0929
  • Die experimentelle API für die gleichzeitige Neuzusammenstellung wurde entfernt.(c8af15d)

Version 1.10

Version 1.10.6

25. März 2026

androidx.compose.runtime:runtime-*:1.10.6 ist veröffentlicht. Version 1.10.6 enthält diese Commits.

Fehlerkorrekturen

  • Absturz „Cannot disable reuse from root if it was caused by other groups“ (Wiederverwendung kann nicht über den Stamm deaktiviert werden, wenn sie durch andere Gruppen verursacht wurde) in pausierbarer Komposition behoben (I474b5, b/488433633)
  • Absturz „Apply is called on deactivated node“ in pausierbarer Komposition behoben (I880c0, b/484300733)

Version 1.10.5

11. März 2026

androidx.compose.runtime:runtime-*:1.10.5 ist veröffentlicht. Version 1.10.5 enthält diese Commits.

Version 1.10.4

25. Februar 2026

androidx.compose.runtime:runtime-*:1.10.4 wird ohne Änderungen seit Version 1.10.3 veröffentlicht. Version 1.10.4 enthält diese Commits.

Version 1.10.3

11. Februar 2026

androidx.compose.runtime:runtime-*:1.10.3 ist veröffentlicht. Version 1.10.3 enthält diese Commits.

Version 1.10.2

28. Januar 2026

androidx.compose.runtime:runtime-*:1.10.2 ist veröffentlicht. Version 1.10.2 enthält diese Commits.

Version 1.10.1

14. Januar 2026

androidx.compose.runtime:runtime-*:1.10.1 ist veröffentlicht. Version 1.10.1 enthält diese Commits.

Version 1.10.0

3. Dezember 2025

androidx.compose.runtime:runtime-*:1.10.0 ist veröffentlicht. Version 1.10.0 enthält diese Commits.

Version 1.10.0-rc01

19. November 2025

androidx.compose.runtime:runtime-*:1.10.0-rc01 ist veröffentlicht. Version 1.10.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Schutz vor Reentrant-Änderungen beim Aufzeichnen abgeleiteter Status in SnapshotStateObserver (I7b862, b/435655844, b/456249373, b/402535073)
  • [Lint] – Ein kleiner Fehler wurde behoben, damit der Detector ordnungsgemäß vor zusammengesetzten Zuweisungen warnt. (I08319, b/456775556)

Version 1.10.0-beta02

5. November 2025

androidx.compose.runtime:runtime-*:1.10.0-beta02 ist veröffentlicht. Version 1.10.0-beta02 enthält diese Commits.

API-Änderungen

  • Wir haben mehrere API-inkompatible Änderungen vorgenommen, um die Installation und Verwaltung von RetainedValuesStores zu vereinfachen. Bestehende Aufrufe von retain und RetainedEffect sind davon nicht betroffen. Für benutzerdefinierte RetainedValuesStores ist jedoch eine Migration erforderlich, damit sie mit dieser Version kompatibel sind. (If3c2f, b/451921682, b/450539803)

  • RetainedValuesStore stellt keine Low-Level-APIs mehr zum Starten/Beenden der Aufbewahrung bereit. Der Aufbewahrungsstatus folgt jetzt automatisch dem Inhalt. LocalRetainedValuesStoreProvider bietet jetzt die Installation von RetainedValuesStore an. LocalRetainedValuesStore sollte nicht direkt angegeben werden. Weitere Informationen zu diesen Änderungen finden Sie in der aktualisierten Dokumentation und den Beispielen.

  • RetainedValuesStoreProvider wird in RetainedValuesStoreRegistry umbenannt. Diese Klasse stellt jetzt nur noch APIs zum Installieren und Verwalten der RetainedValuesStores in der Komposition bereit.

  • ControlledRetainedValuesStore wird durch ManagedRetainedValuesStore ersetzt.

  • RetainedValuesStore ist jetzt eine Schnittstelle.

Bisher sah die Installation eines benutzerdefinierten RetainedValuesStore möglicherweise so aus:

  val retainedValuesStore = retainControlledRetainedValuesStore()
  if (active) {
      CompositionLocalProvider(LocalRetainedValuesStore provides retainedValuesStore) {
          content()
      }

      val composer = currentComposer
      DisposableEffect(retainedValuesStore) {
          val cancellationHandle =
              if (retainedValuesStore.retainExitedValuesRequestsFromSelf > 0) {
                  composer.scheduleFrameEndCallback {
                      retainedValuesStore.stopRetainingExitedValues()
                  }
              } else {
                  null
              }

          onDispose {
              cancellationHandle?.cancel()
              retainedValuesStore.startRetainingExitedValues()
          }
      }
  }

Mit diesen API-Änderungen kann diese Installation stattdessen mit diesem Code ausgedrückt werden:

  val retainedValuesStore = retainManagedRetainedValuesStore()
  if (active) {
      LocalRetainedValuesStoreProvider(retainedValuesStore) {
          content()
      }
  }

Fehlerkorrekturen

  • Überträgt die Ungültigmachung des Bereichs in verschiebbaren Inhalten, bevor diese Inhalte aus der Slot-Tabelle verschoben werden (I9d123, b/451651649)

Version 1.10.0-beta01

22. Oktober 2025

androidx.compose.runtime:runtime-*:1.10.0-beta01 ist veröffentlicht. Version 1.10.0-beta01 enthält diese Commits.

API-Änderungen

  • RetainedValuesStore.getExitedValueOrDefault wurde in RetainedValuesStore.getExitedValueOrElse umbenannt (If9653, b/452340613)
  • isKeepingExitedValues wurde in isRetainingExitedValues umbenannt (I660bf, b/437095756)
  • „RetainScope“ wurde in „RetainedValuesStore“ umbenannt. RetainScopeHolder wurde in RetainedValuesStoreRegistry umbenannt. RetainScopeHolder.RetainScopeProvider wurde in RetainedValuesStoreRegistry.ProvideChildRetainedValuesStore umbenannt. (Idf23a, b/437095756)

Fehlerkorrekturen

  • Verzögerte Initialisierung von SavedState in SaveableStateRegistry bis zur ersten Verwendung. (Ic0a93)

Version 1.10.0-alpha05

8. Oktober 2025

androidx.compose.runtime:runtime-*:1.10.0-alpha05 ist veröffentlicht. Version 1.10.0-alpha05 enthält diese Commits.

Fehlerkorrekturen

  • Füllen Sie den Stacktrace für DiagnosticComposeException im Release-Modus aus. (Ib76cb)
  • Ein Problem im Snapshot-Status wurde behoben. Wenn eine Zusammenführungsrichtlinie für einen Typ verwendet wurde, konnte es passieren, dass der vorherige Wert falsch berechnet wurde. In diesem Fall wurde ein zukünftiger Wert des Status anstelle des vorherigen Werts zurückgegeben. Dies kann passieren, wenn mehr als zwei änderbare Snapshots ausstehen und für mindestens einen der angewendeten Werte eine Zusammenführungsrichtlinie gilt. (I527b5, b/442791065)

Version 1.10.0-alpha04

24. September 2025

androidx.compose.runtime:runtime-*:1.10.0-alpha04 ist veröffentlicht. Version 1.10.0-alpha04 enthält diese Commits.

API-Änderungen

  • Die RetainScopeHolder API wurde hinzugefügt, um eine Sammlung von RetainScopes zu verwalten. So lässt sich die Aufbewahrung für Container und Navigations-Hosts implementieren, die viele untergeordnete Elemente mit unterschiedlichen Aufbewahrungszeiträumen enthalten. (I10e0f)
  • Die APIs RetainedContentHost und retainControlledRetainScope wurden hinzugefügt. Mit ihnen lassen sich automatisch verwaltete RetainScopes für verschwindende Inhalte wie minimierte Bereiche erstellen (If81f6).
  • Die Inline-Überladung von Updater#set ist veraltet, da der bereitgestellte Wert zu oft in eine Wrapperklasse eingeschlossen wurde. Es wurde eine Überladung von Updater#init hinzugefügt, die einen Parameter akzeptiert, sodass keine Lambda-Erfassung erforderlich ist. (Id679e)
  • Einführung von RetainedEffect, einer Side-Effect-API, die DisposableEffect ähnelt, aber dem Aufbewahrungs- statt dem Kompositionslebenszyklus folgt. Diese API ist für Effekte vorgesehen, die an die Beibehaltung eines anderen Objekts gebunden sind, das RetainObserver nicht implementiert oder nicht implementieren kann. (I1c61f, b/177562901)
  • Die Dokumentation von RetainObserver.onRetained wurde korrigiert und RetainObserver.onUnused wurde hinzugefügt, was RememberObserver.onAbandoned entspricht (Ia6fc5).

Fehlerkorrekturen

  • Das Dispatching wird nach der ersten Gruppe in einer Funktion (z. B. einem zusammensetzbaren Aufruf) und vor einer Gruppe, die entfernt werden kann (z. B. einer if-Anweisung), korrigiert, wodurch onForgotten in der falschen Reihenfolge gesendet werden konnte. (I453f6, b/346821372)
  • Vermeiden Sie das Durchlaufen des Coroutine-Kontexts beim Initialisieren von LaunchedEffect. (I8d2c3b)

Version 1.10.0-alpha03

10. September 2025

androidx.compose.runtime:runtime-*:1.10.0-alpha03 ist veröffentlicht. Version 1.10.0-alpha03 enthält diese Commits.

API-Änderungen

  • Einführung von gruppenbasierten Compose-Stacktraces, die in minimierten Apps funktionieren. Das ProGuard-Mapping für diese Traces wird ab Kotlin 2.3.0 vom Compose-Compiler-Gradle-Plug-in generiert. Diese Stacktraces sind standardmäßig deaktiviert. Verwenden Sie ComposeStackTraceMode.GroupKeys, um sie zu aktivieren. (Ifbcb5)
  • Schnittstelle hinzufügen: IdentifiableRecomposeScope für Tooling (Idd5e0, b/434194620)
  • Unnötige Invalidierungen in Composables mit CompositionLocalContexts wurden verhindert (I3fa21, b/412750209).

Fehlerkorrekturen

  • In der Dokumentation und in den Tools wurde klargestellt, dass auch an „retain“ übergebene Schlüssel beibehalten werden. Vermeiden Sie es, Schlüssel zum Beibehalten zu übergeben, die zu einem Speicherleck führen. (Ib553b, b/177562901)
  • Ein Problem wurde behoben, bei dem der Zustand der ausstehenden Benachrichtigungen durcheinander geraten konnte, wenn resume() einer pausierten Komposition in einem anderen Thread aufgerufen wurde und der Hauptthread versuchte, die pausierbare Komposition für den nächsten Frame neu zu komponieren. (Ie5f17, b/442649894)
  • In der Komposition erfasste Ausnahmen protokollieren. (I47d78, b/432799675, b/436878515, b/359623674, b/400436355)

Version 1.10.0-alpha02

27. August 2025

androidx.compose.runtime:runtime-*:1.10.0-alpha02 ist veröffentlicht. Version 1.10.0-alpha02 enthält diese Commits.

API-Änderungen

  • @DoNotRetain wurde hinzugefügt. Damit können Typen annotiert werden, die nicht mit der retain API verwendet werden sollten, da sie möglicherweise Ressourcen freigeben. (Ie5435)
  • Für Projekte, die mit Kotlin 2.0 veröffentlicht wurden, ist KGP 2.0.0 oder höher erforderlich. (Idb6b5)

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das die Vorgänge für den Applier nicht korrekt berechnet wurden, wenn durch verschiebbare Inhalte der Root-Knoten einer Komposition geändert wurde. Beim Berechnen von Änderungen für verschiebbare Inhalte kann ein up()-Aufruf ausstehend bleiben und nicht an den Applier gesendet werden. Dadurch wird der Applier-Status für die nachfolgende Verwendung falsch positioniert. (I7c583), (I47b70)
  • Markiert CheckResult als veraltet, da es nicht verwendet werden soll. (I32934)

Version 1.10.0-alpha01

13. August 2025

androidx.compose.runtime:runtime-*:1.10.0-alpha01 ist veröffentlicht. Version 1.10.0-alpha01 enthält diese Commits.

API-Änderungen

  • Stellt die Retain API vor. Wie rememberSaveable kann „retain“ gespeicherte Werte, die die Kompositionshierarchie verlassen, beibehalten und speichern. Beibehaltene Werte werden nicht serialisiert und haben eine kürzere Lebensdauer als gespeicherte Werte. Sie verhalten sich ähnlich wie ein androidx ViewModel. Weitere Informationen finden Sie in der Dokumentation. (Ia3105, b/177562901)
  • Es wurde eine awaitOrScheduleNextCompositionEnd()-API hinzugefügt, die einen Callback ausgibt, wenn der Recomposer das Komponieren des aktuellen Frames abgeschlossen hat. Wenn der Recomposer gerade keinen Frame erstellt, wird diese API angehalten, bis die Erstellung des nächsten Frames abgeschlossen ist, und es wird ein neuer Frame zur Erstellung geplant. (Ib873c)
  • API zum Hinzufügen eines lokalen Anbieters für Kompositionen, der keinen Unit-Wert zurückgibt (I22521, b/271871288)
  • Es wurde ein Funktions-Flag (isMovableContentUsageTrackingEnabled) hinzugefügt, mit dem die Nutzung von verschiebbaren Inhalten verfolgt werden kann, um beim Erstellen der Inhalte Overhead zu vermeiden. Diese Funktions-Flags sind derzeit standardmäßig deaktiviert. (Ia713d)

Fehlerkorrekturen

  • Behebt einen Absturz bei verschiebbaren Inhalten, wenn sie zwischen Unterkompositionen verschoben werden. (I3fa1e, b/436858107)
  • Ein Fehler wurde behoben, bei dem ein Teil eines zusammensetzbaren Stacktrace fehlte, wenn er sich in mehreren verschachtelten Unterkompositionen befand. (I98c6f)
  • Verschieben des Standard-minSdk von API 21 zu API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
  • Ein Race-Bedingung wurde behoben, die auftrat, wenn der interne Status einer pausierbaren Komposition über mehrere Threads aktualisiert wurde. (I03895)
  • Aktualisiert den Observer für die Registrierung von Kompositionen, sodass er vor der ersten Komposition aufgerufen wird. (I4adca, b/430600932)
  • Ein kleiner Fehler wurde behoben, um AutoboxingStateValuePropertyDetector sowohl mit K1 als auch mit K2 kompatibel zu machen. (Ie81c1)

Externer Beitrag

  • Das Artifact „runtime-rxjava2“ wird zu einem Multiplattform-Artifact und die JVM wird als unterstütztes Ziel hinzugefügt. (I5409e)
  • Das Artifact „runtime-rxjava3“ ist jetzt multiplatform und die JVM wird als unterstütztes Ziel hinzugefügt. (I97e84)

Version 1.9

Version 1.9.5

19. November 2025

androidx.compose.runtime:runtime-*:1.9.5 ist veröffentlicht. Version 1.9.5 enthält diese Commits.

Fehlerkorrekturen

  • Überträgt die Ungültigmachung des Bereichs in verschiebbaren Inhalten, bevor diese Inhalte aus der Slot-Tabelle verschoben werden (I9d123, b/451651649)

Version 1.9.4

22. Oktober 2025

androidx.compose.runtime:runtime-*:1.9.4 ist veröffentlicht. Version 1.9.4 enthält diese Commits.

Version 1.9.3

8. Oktober 2025

androidx.compose.runtime:runtime-*:1.9.3 ist veröffentlicht. Version 1.9.3 enthält diese Commits.

Version 1.9.2

24. September 2025

androidx.compose.runtime:runtime-*:1.9.2 ist veröffentlicht. Version 1.9.2 enthält diese Commits.

Version 1.9.1

10. September 2025

androidx.compose.runtime:runtime-*:1.9.1 ist veröffentlicht. Version 1.9.1 enthält diese Commits.

Fehlerkorrekturen

  • Vermeiden Sie das erneute Zusammensetzen von Kompositionen, die gerade zusammengesetzt werden. (Iacb01)
  • Verhindern, dass Recompose-Bereiche zweimal pausiert werden. (I060b2, b/431584881)

Version 1.9.0

13. August 2025

androidx.compose.runtime:runtime-*:1.9.0 ist veröffentlicht. Version 1.9.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.8.0

  • Für Lint-Prüfungen, die mit Compose ausgeliefert werden, ist jetzt mindestens AGP-Version 8.8.2 erforderlich. Wenn Sie AGP nicht aktualisieren können, können Sie stattdessen Lint aktualisieren, indem Sie android.experimental.lint.version=8.8.2 (oder eine neuere Version) in Ihrer gradle.properties-Datei verwenden. Wenn Sie Compose-Lint-Prüfungen in der IDE ausführen möchten, ist Android Studio Ladybug oder höher erforderlich.
  • Es wurde eine neue Laufzeit-Annotationsbibliothek erstellt. Diese Datei enthält Annotationsdefinitionen ohne Abhängigkeit von der Compose-Laufzeit, sodass sie in Nicht-Compose-Modulen verwendet werden kann.
    • @Stable, @Immutable und @StableMarker wurden in die Laufzeitannotation verschoben, um die Annotation von Nicht-Compose-Modulen zu ermöglichen.
    • @FrequentlyChangingValue und @RememberInComposition wurden der Laufzeitanmerkung hinzugefügt. @FrequentlyChangingValue kennzeichnet Deklarationen, die häufige Neuzusammensetzungen verursachen können, und @RememberInComposition kennzeichnet Deklarationen, die bei der Zusammensetzung berücksichtigt werden sollten. Entsprechende Lint-Prüfungen warnen vor einer falschen Verwendung.
  • androidx.compose.runtime:runtime unterstützt jetzt zusätzliche Plattformen. Die Unterstützung für Desktop-, iOS- und native Ziele wurde aus dem Compose Multiplatform-Projekt von JetBrains übernommen und wird künftig über Google Maven veröffentlicht. Andere Compose-Artefakte sind davon nicht betroffen.

Version 1.9.0-rc01

30. Juli 2025

androidx.compose.runtime:runtime-*:1.9.0-rc01 ist veröffentlicht. Version 1.9.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Aktualisiert den Observer für die Registrierung von Kompositionen, sodass er vor der ersten Komposition aufgerufen wird. (I4adca, b/430600932)

Version 1.9.0-beta03

16. Juli 2025

androidx.compose.runtime:runtime-*:1.9.0-beta03 ist veröffentlicht. Version 1.9.0-beta03 enthält diese Commits.

Version 1.9.0-beta02

2. Juli 2025

androidx.compose.runtime:runtime-*:1.9.0-beta02 ist veröffentlicht. Version 1.9.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • Die Referenzlebensdauer von Werten in der Slot-Tabelle zwischen Kompositionen wurde verkürzt. In einigen Fällen kann eine Referenz in einer Slot-Tabelle ein Frame länger als nötig dauern. (I49e74, b/418516940)
  • Entfernen des Kotlin-Manglings für Hot-Reload-Methoden (Ic56a3, b/426871325)

Version 1.9.0-beta01

18. Juni 2025

androidx.compose.runtime:runtime-*:1.9.0-beta01 ist veröffentlicht. Version 1.9.0-beta01 enthält diese Commits.

API-Änderungen

  • Es wurde eine Tooling-API zum Parsen von Quellinformationen hinzugefügt, die vom Compose-Compiler hinzugefügt werden. (Iceaf9, b/408492167)
  • SnapshotStateSet implementiert jetzt Parcelable auf Android-Geräten und kann als Teil von rememberSaveable { ... } verwendet werden. (I755dd, b/378623803)
  • SnapshotStateList implementiert jetzt Parcelable auf Android und kann als Teil von rememberSaveable { ... } verwendet werden. (Id18be, b/378623803)
  • movableContentOf() ist jetzt mit der Annotation @RememberInComposition gekennzeichnet, sodass Lint falsche Verwendungen erkennen kann (I2738d).
  • Die experimentelle API für Kompositionsbeobachter wurde aktualisiert, um eine umfassendere Beobachtung von Recomposition-Ursachen zu ermöglichen (I32b6a).
  • Ändern Sie setDiagnosticStackTraceEnabled in „experimentell“, um die zukünftige Entwicklung dieser Funktion zu berücksichtigen. (I11db3)
  • currentCompositeKeyHash wurde eingestellt. Verwenden Sie stattdessen currentCompositeKeyHashCode. Die Ersatz-API codiert denselben Hash mit mehr Bits, wodurch die Wahrscheinlichkeit, dass zwei zufällige, nicht zusammenhängende Gruppen in der Kompositionshierarchie denselben Hash-Schlüssel haben, exponentiell sinkt. (I4cb6a, b/177562901)
  • Für Projekte, die mit Kotlin 2.0 veröffentlicht wurden, ist KGP 2.0.0 oder höher erforderlich (Idb6b5).
  • @Stable, @Immutable und @StableMarker wurden (kompatibel) in die Laufzeitannotation verschoben. Sie können jetzt von der Laufzeitannotation abhängig sein, wenn Sie diese Annotationen aus Bibliotheken verwenden möchten, die nicht von Compose abhängig sind. (I23a16)
  • Die Überladung rememberSaveable, die KSerializer akzeptiert, wurde in rememberSerializable umbenannt. Durch diese Änderung wird die beabsichtigte Verwendung mit kotlinx.serialization verdeutlicht. Die direkte Unterstützung allgemeiner kotlinx.Serializable-Klassen in rememberSaveable würde einen reified-Typparameter erfordern, was die Quellkompatibilität beeinträchtigen würde, da alle Aufrufstellen zur Kompilierzeit reifizierte Typinformationen bereitstellen müssten. (Idb875, I38627, b/376028110)

Fehlerkorrekturen

  • Kompositionen mit pausierbaren Inhalten, die gekündigt wurden, müssen entsorgt werden. Das wird jetzt von der Komposition geprüft und es wird ein Fehler ausgegeben, wenn es wiederverwendet wird. (I2daa5, b/406792785)
  • Die pausierbare Komposition wurde korrigiert, sodass beim Entfernen der pausierbaren Komposition nicht mehr fälschlicherweise ein onForgotten an die Observer gesendet wird. RememberObservers in einer gekündigten pausierbaren Komposition sollte nur ein onAbandoned-Callback gesendet werden. (I26f54)
  • Ein Problem mit verschiebbaren Inhalten wurde behoben. Invalidationen, die in späten Phasen der Verarbeitung verschiebbarer Inhalte eintreffen, werden dem Composer hinzugefügt. Diese Invalidationen werden jedoch nicht aktualisiert, wenn die Inhalte verschoben werden, was dazu führt, dass die Inhalte an der falschen Stelle neu zusammengesetzt werden. (Icd2fa, b/409439507)
  • Ein Problem wurde behoben, durch das verschiebbarer Inhalt nach dem Erstellen, aber vor dem Verschieben ungültig wurde. (I99eac, b/229001114)
  • Wenn remove() eines Listeniterators, der von SnapshotStateList erstellt wurde, nach dem Aufrufen von previous() aufgerufen wurde, wurde möglicherweise das falsche Element aus der Liste entfernt. Das Verhalten entsprach nicht dem von ArrayList bei derselben Aufruffolge. (I05ab7, b/417493222)
  • Ein Problem mit der Reihenfolge beim Senden von onForgotton wurde behoben. Dadurch konnte es beispielsweise passieren, dass die onDispose von Einweg-Effekten in der falschen Reihenfolge ausgeführt wurden. (Ic1c91, b/417450712)
  • Problem behoben, das die Wiederverwendung der Statusverwaltung in pausierbaren Composables verhinderte (Ife96e, b/404058957)
  • Der Status wird jetzt korrekt wiederverwendet, wenn eine Komposition pausiert und neu gestartet wird, aber ein zuvor pausierter Status neu zusammengesetzt werden muss, weil sich ein gelesener Status während der Pause geändert hat. (I441d1, b/416209738)
  • Der Fehler beim Dispatching von pausierbaren Composables wurde behoben (b/404058957). Die vorherige Korrektur war unvollständig. (I1afd4, b/404058957)
  • OffsetApplier überschreibt jetzt korrekt apply(), das mit der pausierbaren Komposition eingeführt wurde. Wenn dies nicht der Fall ist, kann es bei der Aktualisierung virtueller Knoten zu einer Ausnahme in der pausierbaren Komposition kommen. (Idbf31, b/409291131)
  • Ein Deadlock wurde behoben, der Molecule-Nutzer betreffen konnte, wenn ein angehaltener Anruf an FrameClock.withFrameNanos abgebrochen wurde, während ein Frame gesendet wurde. (I89cab, b/407027032)
  • Der Recomposer kann bei verschiebbaren Inhalten in den Leerlauf gehen (Ie5416, b/409267170)
  • Die Reihenfolge, in der onReuse und onDeactivate während der pausierbaren Komposition angezeigt werden, kann sich umkehren. Sie treten jetzt garantiert in der Reihenfolge onDeactivate/onReuse auf. (I996e4, b/404058957)
  • Problem mit dem Dispatching von Remember-Beobachtern in pausierbarer Komposition behoben, um zu vermeiden, dass „remembered“/„forgotten“ im selben Apply-Vorgang gesendet wird (I570b2, b/404645679, b/407931790)
  • LifecycleRegistry wurde in Compose Multiplatform in den unsicheren Modus versetzt, um MainThread-Prüfungen zu deaktivieren und Threading-Probleme zu beheben. Weitere Informationen finden Sie unter CMP-8227. (Icee87)

Externer Beitrag

  • Ein Fehler wurde behoben, der Molecule-Nutzer betraf und bei dem die Verwendung von RecompositionMode.Immediate zu verpassten Neuzusammensetzungen führen konnte. (I9f3a9, b/419527812)
  • Es werden PausableComposition-isApplied- und isCancelled-Getter bereitgestellt, mit denen der Status der PausableComposition geprüft werden kann. (I994aa)
  • AnnotationTarget.FUNCTION wurde der FunctionKeyMeta-Annotation hinzugefügt. (I08021)

Version 1.9.0-alpha04

4. Juni 2025

androidx.compose.runtime:runtime-*:1.9.0-alpha04 ist veröffentlicht. Version 1.9.0-alpha04 enthält diese Commits.

API-Änderungen

  • SnapshotStateSet implementiert jetzt Parcelable unter Android und kann als Teil von rememberSaveable { ... } verwendet werden. (I755dd, b/378623803)
  • SnapshotStateList implementiert jetzt Parcelable unter Android und kann als Teil von rememberSaveable { ... } verwendet werden. (Id18be, b/378623803)
  • movableContentOf() ist jetzt mit der Annotation @RememberInComposition gekennzeichnet, sodass Lint falsche Verwendungen erkennen kann (I2738d).
  • Die experimentelle API für Kompositionsbeobachter wurde aktualisiert, um eine umfassendere Beobachtung von Recomposition-Ursachen zu ermöglichen (I32b6a).

Fehlerkorrekturen

  • Ein Problem mit der Reihenfolge beim Senden von onForgotton wurde behoben. Dadurch konnte es beispielsweise passieren, dass die onDispose von Einweg-Effekten in der falschen Reihenfolge ausgeführt wurden. (Ic1c91, b/417450712)
  • Problem behoben, das die Wiederverwendung der Statusverwaltung in pausierbaren Composables verhinderte (Ife96e, b/404058957)
  • Geringfügiger Fehler behoben, um die Erkennung veränderlicher Sammlungen sowohl für K1 als auch für K2 kompatibel zu machen (Ie4878)
  • Es wurde ein kleiner Fehler behoben, damit die Suche nach Anmerkungen für überschriebene Property-Accessoren sowohl für K1 als auch für K2 kompatibel ist (I9900d).

Externer Beitrag

  • Ein Fehler wurde behoben, der Molecule-Nutzer betraf und bei dem die Verwendung von RecompositionMode.Immediate zu verpassten Neuzusammensetzungen führen konnte. (I9f3a9, b/419527812)
  • Die Getter PausableComposition isApplied und isCancelled wurden bereitgestellt, um den Status von PausableComposition zu prüfen. (I994aa)

Version 1.9.0-alpha03

20. Mai 2025

androidx.compose.runtime:runtime-*:1.9.0-alpha03 ist veröffentlicht. Version 1.9.0-alpha03 enthält diese Commits.

API-Änderungen

  • Ändern Sie setDiagnosticStackTraceEnabled in „experimentell“, um die zukünftige Entwicklung dieser Funktion zu berücksichtigen. (I11db3)

Fehlerkorrekturen

  • Der Status für die Wiederverwendung wurde korrigiert, wenn eine Komposition pausiert und neu gestartet wurde, aber ein zuvor pausierter Status neu zusammengesetzt werden musste, weil sich ein gelesener Status während der Pause der Komposition geändert hat. (I441d1, b/416209738)
  • Der Fehler, dass die Zusammensetzung nicht pausiert werden konnte, wurde behoben (Problem b/404058957). Die vorherige Korrektur war unvollständig. (I1afd4, b/404058957)
  • SaveableStateHolder.SaveableStateProvider bietet jetzt eine LocalSavedStateRegistryOwner für seine Inhalte über die Komposition. (Ia2761, b/413108878)
  • androidx.compose.runtime.saveable ist jetzt von androidx.lifecycle.runtime.compose abhängig. (I53228, b/413108878)

Version 1.9.0-alpha02

7. Mai 2025

androidx.compose.runtime:runtime-*:1.9.0-alpha02 ist veröffentlicht. Version 1.9.0-alpha02 enthält diese Commits.

API-Änderungen

  • rememberSaveable mit einem benutzerdefinierten „key“ ist veraltet. Dadurch wird die positionsbezogene Bereichsbegrenzung umgangen, was zu Statusfehlern und inkonsistentem Verhalten führt (z.B. unbeabsichtigte gemeinsame Nutzung oder Verlust des Status, Probleme in verschachtelten LazyLayouts). Entfernen Sie den Parameter „key“, um die positionsbezogene Bereichsbegrenzung für einen konsistenten, lokal begrenzten Status zu verwenden. Weitere Informationen finden Sie in der vollständigen Commit-Nachricht. (I5e6ff, b/357685851)

Fehlerkorrekturen

  • OffsetApplier überschreibt jetzt korrekt apply(), das mit der pausierbaren Komposition eingeführt wurde. Wenn dies nicht vorhanden ist, kann es bei der Aktualisierung virtueller Knoten zu einer Ausnahme in der pausierbaren Komposition kommen. (Idbf31, b/409291131)
  • Ein Deadlock wurde behoben, der Molecule-Nutzer betreffen konnte, wenn ein angehaltener Anruf an FrameClock.withFrameNanos abgebrochen wurde, während ein Frame gesendet wurde. (I89cab, b/407027032)
  • Der Recomposer kann in den Leerlauf gehen, während der Status von verschiebbaren Inhalten noch aussteht. Normalerweise tritt dies nicht auf, da der Status von verschiebbaren Inhalten im Hauptlauf des Recomposers verworfen wird. Dies kann jedoch bei pausierbaren Kompositionen auftreten, wenn die verschiebbaren Inhalte während resume()(Ie5416, b/409267170) verworfen werden.
  • Die Reihenfolge, in der onReuse und onDeactivate während der pausierbaren Komposition angezeigt werden, kann sich umkehren. Sie werden jetzt garantiert in der Reihenfolge onDeactivate/onReuse ausgeführt. (I996e4, b/404058957)

Version 1.9.0-alpha01

23. April 2025

androidx.compose.runtime:runtime-*:1.9.0-alpha01 ist veröffentlicht. Version 1.9.0-alpha01 enthält diese Commits.

Geändertes Verhalten

  • Für Lint-Prüfungen, die mit Compose ausgeliefert werden, ist jetzt mindestens AGP-Version 8.8.2 erforderlich. Wenn Sie AGP nicht aktualisieren können, können Sie stattdessen Lint aktualisieren, indem Sie android.experimental.lint.version=8.8.2 (oder eine neuere Version) in Ihrer gradle.properties verwenden. Wenn Sie Compose-Lint-Prüfungen in der IDE ausführen möchten, ist Android Studio Ladybug oder höher erforderlich.

API-Änderungen

  • currentCompositeKeyHash wurde eingestellt. Verwenden Sie stattdessen currentCompositeKeyHashCode. Die Ersatz-API codiert denselben Hash mit mehr Bits, wodurch die Wahrscheinlichkeit, dass zwei zufällige, nicht zusammenhängende Gruppen in der Kompositionshierarchie denselben Hash-Schlüssel haben, exponentiell sinkt. (I4cb6a, b/177562901)
  • Für Projekte, die mit Kotlin 2.0 veröffentlicht wurden, ist KGP 2.0.0 oder höher erforderlich (Idb6b5).
  • @Stable, @Immutable und @StableMarker wurden (kompatibel) in die Laufzeitannotation verschoben. Sie können jetzt von „runtime-annotation“ abhängig sein, wenn Sie diese Anmerkungen aus Bibliotheken verwenden möchten, die nicht von Compose abhängig sind. (I23a16)
  • Entfernt onCreating und onDisposing, da sie eingestellt und in onPreCreate und onPreDispose umbenannt wurden. Damit ist die Umbenennung abgeschlossen. (I97461)
  • Stellt eine Kompositionslokale zur Verfügung, mit der ein Compose-Stacktrace basierend auf dem Speicherort eines Compose-Knotens in der Komposition angehängt werden kann. (Ie0bda, b/354163858)
  • Diagnose-Compose-Stacktraces basierend auf Quellinformationen in der Komposition einführen. (I3db9f, b/354163858)
  • runWithTimingDisabled wird zugunsten von runWithMeasurementDisabled eingestellt, da der Begriff das Verhalten klarer beschreibt: Alle Messwerte werden pausiert. Außerdem wird die MicrobenchmarkScope-Basisklasse verfügbar gemacht, da die runWithMeasurementDisabled-Funktion nicht neu deklariert werden kann, um den Zugriff zu öffnen, da sie inline ist. (I9e23b, b/389149423, b/149979716)
  • Fügt @FrequentlyChangingValue hinzu: eine Annotation, mit der Funktionen und Property-Getter markiert werden können, um anzugeben, dass sie nicht direkt in der Komposition aufgerufen werden sollten, da dies zu häufigen Recomposition-Vorgängen führen kann. Beispielsweise zum Markieren von Werten für die Scrollposition und animierten Werten. Warnungen werden von einer entsprechenden Lint-Prüfung ausgegeben. (I83630, b/234042500)
  • Fügt @RememberInComposition hinzu: Eine Annotation, mit der Konstruktoren, Funktionen und Property-Getter markiert werden können, um anzugeben, dass sie nicht direkt in der Komposition aufgerufen werden dürfen, ohne dass sie gespeichert werden. Fehler werden durch einen entsprechenden Lint-Check gemeldet. Mit dieser Annotation können Deklarationen markiert werden, die statusbehaftete / veränderliche Objekte zurückgeben, Objekte, deren Identität über Kompositionen hinweg beibehalten werden muss, oder Objekte, die teuer zu instanziieren sind und über Kompositionen hinweg im Cache gespeichert werden sollten. (Ie7db0)
  • Es wurde eine neue rememberSaveable-Überladung hinzugefügt, die KSerializer für die typsichere Statuspersistenz mit KotlinX Serialization unterstützt. Die vorhandene Saver-basierte API wird weiterhin unterstützt. (Iea4ab, b/376028110)

Fehlerkorrekturen

  • Problem mit dem Dispatching von Remember-Beobachtern in pausierbarer Komposition behoben, um zu vermeiden, dass „remembered“/„forgotten“ im selben Apply-Vorgang gesendet wird (I570b2, b/404645679, b/407931790)
  • Die SnapshotObserver-Methoden „onCreating“ wurden in onPreCreate und onDisposing in onPreDispose umbenannt, um den API-Richtlinien zu entsprechen. Die bisherigen Methoden sind veraltet und die neuen Methoden rufen standardmäßig die alten auf. Bestehende Implementierungen dieser Schnittstelle funktionieren also weiterhin, bis die Methoden entfernt werden. Diese Methoden werden in 1.9.0 Alpha in einem nachfolgenden CL entfernt, der in Kürze folgt. Sie werden vor der stabilen Version 1.8 aus der Betaversion 1.8 entfernt. (I6d753)
  • Ein Problem wurde behoben, bei dem gespeicherte Werte fälschlicherweise vergessen und neu berechnet werden konnten, wenn eine ausgelassene Gruppe, die nach einer verschiebbaren Gruppe angezeigt wird, neu zusammengesetzt wurde (I62cab, b/383769314).
  • Unterstützung für das Erstellen von Stacktraces in LaunchedEffect und rememberCoroutineScope hinzugefügt (I705c0, b/354163858)
  • Für Compose-Lint-Prüfungen ist jetzt mindestens AGP 8.8.2 über die Befehlszeile und mindestens Android Studio Ladybug für die IDE-Unterstützung erforderlich. Wenn Sie eine ältere Version von AGP verwenden, können Sie android.experimental.lint.version=8.8.2 in gradle.properties festlegen, um die Lint-Version zu aktualisieren, ohne AGP zu beeinträchtigen. (I6f2a8)

Externer Beitrag

  • AnnotationTarget.FUNCTION wurde der Annotation FunctionKeyMeta hinzugefügt. (I08021)

Version 1.8

Version 1.8.3

18. Juni 2025

androidx.compose.runtime:runtime-*:1.8.3 ist veröffentlicht. Version 1.8.3 enthält diese Commits.

Version 1.8.2

20. Mai 2025

androidx.compose.runtime:runtime-*:1.8.2 ist veröffentlicht. Version 1.8.2 enthält diese Commits.

Version 1.8.1

7. Mai 2025

androidx.compose.runtime:runtime-*:1.8.1 ist veröffentlicht. Version 1.8.1 enthält diese Commits.

Version 1.8.0

23. April 2025

androidx.compose.runtime:runtime-*:1.8.0 ist veröffentlicht. Version 1.8.0 enthält diese Commits.

Version 1.8.0-rc03

09. April 2025

androidx.compose.runtime:runtime-*:1.8.0-rc03 ist veröffentlicht. Version 1.8.0-rc03 enthält diese Commits.

Version 1.8.0-rc02

26. März 2025

androidx.compose.runtime:runtime-*:1.8.0-rc02 ist veröffentlicht. Version 1.8.0-rc02 enthält diese Commits.

Version 1.8.0-rc01

12. März 2025

androidx.compose.runtime:runtime-*:1.8.0-rc01 ist veröffentlicht. Version 1.8.0-rc01 enthält diese Commits.

API-Änderungen

  • Die SnapshotObserver-Methoden „onCreating“ wurden in onPreCreate und onDisposing in onPreDispose umbenannt, um den API-Richtlinien zu entsprechen. Die bisherigen Methoden sind veraltet und die neuen Methoden rufen standardmäßig die alten auf. Daher funktionieren bestehende Implementierungen dieser Schnittstelle weiterhin, bis die Methoden entfernt werden. Diese Methoden werden in 1.9.0 Alpha in einem nachfolgenden CL entfernt, der in Kürze folgt. Sie werden vor der stabilen Version 1.8 aus der Betaversion 1.8 entfernt. (I6d753)

Version 1.8.0-beta03

26. Februar 2025

androidx.compose.runtime:runtime-*:1.8.0-beta03 ist veröffentlicht. Version 1.8.0-beta03 enthält diese Commits.

Version 1.8.0-beta02

12. Februar 2025

androidx.compose.runtime:runtime-*:1.8.0-beta02 ist veröffentlicht. Version 1.8.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • Erfasste Ausnahme in pausierbarer Komposition neu auslösen .(384486d)

Version 1.8.0-beta01

29. Januar 2025

androidx.compose.runtime:runtime-*:1.8.0-beta01 ist veröffentlicht. Version 1.8.0-beta01 enthält diese Commits.

API-Änderungen

  • Es wurde ein Problem behoben, bei dem das Auslösen eines Throwables während der Komposition, das nicht von „Exception“ abgeleitet wird, zu einem Fehler vom Typ „Pending composition has not been applied“ (Ausstehende Komposition wurde nicht angewendet) führen konnte. (I356be, b/382094412)

Version 1.8.0-alpha08

15. Januar 2025

androidx.compose.runtime:runtime-*:1.8.0-alpha08 ist veröffentlicht. Version 1.8.0-alpha08 enthält diese Commits.

Version 1.8.0-alpha07

11. Dezember 2024

androidx.compose.runtime:runtime-*:1.8.0-alpha07 ist veröffentlicht. Version 1.8.0-alpha07 enthält diese Commits.

API-Änderungen

  • Es wurde eine Tooling-API hinzugefügt, mit der der Layout-Inspector Unterkompositionen mit der übergeordneten Komposition korrelieren kann, wenn kein Knoten zum Überbrücken der Kompositionen verwendet wird. (I4ce3d)
  • Die arithmetischen und speziellen Konstanten für SnapshotId sind jetzt intern statt öffentlich. Arithmetische Operationen können für ein SnasphotId ausgeführt werden, indem es mit toInt() bzw. toLong() in ein Int oder Long konvertiert wird. (Ic3a57)

Externer Beitrag

  • Speicher für movableContentOf-Parameter optimieren (ed87177)

Version 1.8.0-alpha06

13. November 2024

androidx.compose.runtime:runtime-*:1.8.0-alpha06 ist veröffentlicht. Version 1.8.0-alpha06 enthält diese Commits.

API-Änderungen

  • Änderungen an der PausableComposition API. Diese Breaking Changes beziehen sich auf frühere Releases von 1.8.0-alpha (seit 1.8.0-alpha02). Da es sich jedoch um neue APIs in 1.8.0 handelt, wird die Abwärtskompatibilität nicht aufrechterhalten, da sich die APIs noch in der Alphaphase befinden. (I39819)
  • Fügt Tooling-APIs hinzu, um die Erstellung neuer Kompositionen in einem Recomposer zu beobachten (Iaeb7e)
  • snapshotId vom Typ Long wurde zu Snapshot hinzugefügt und id wurde eingestellt. Die ID eines Snapshots wurde von Int in Long geändert, um zu verhindern, dass die Snapshot-ID auf Systemen mit sehr hohen Framerates und langen Animationen überläuft. Der Typ wurde als „expect/actual“ festgelegt, damit er auf Plattformen, die keinen nativen Long-Typ haben, Int oder ein anderer Typ sein kann. Bei Plattformen ohne native Long, z. B. JavaScript, sollten hohe Frameraten (über 1.000 FPS) vermieden werden, da Int etwa alle 24 Tage einen Überlauf verursachen würde. (I38ac3, b/374821679)

Fehlerkorrekturen

Version 1.8.0-alpha05

30. Oktober 2024

androidx.compose.runtime:runtime-*:1.8.0-alpha05 ist veröffentlicht. Version 1.8.0-alpha05 enthält diese Commits.

Fehlerkorrekturen

  • Behebe den Stack-Overflow-Fehler beim Hinzufügen von Int.MAX_VALUE zu SnapshotIdSet. (b/370536104, Ic4179f6)
  • Mikrooptimierungen zur Laufzeit (I50c60)
  • R8 erlauben, Debugging-Laufzeitprüfungsaufrufe zu entfernen (I8c44)
  • compoundKeyOf iterativ statt rekursiv gestalten (I5817f)

Externer Beitrag

  • Stacks mit Sammlungslisten implementieren (I7d47c)

Version 1.8.0-alpha04

16. Oktober 2024

androidx.compose.runtime:runtime-*:1.8.0-alpha04 ist veröffentlicht. Version 1.8.0-alpha04 enthält diese Commits.

Leistungsverbesserungen

  • Snapshot-ID für Statusdatensätze im Konstruktor angeben (85c00f)
  • SnapshotState*** umgestalten, um Fehler bei der Klassenprüfung zu vermeiden (6ee4a6)
  • R8-Regeln korrigiert, um das Inlining von „throw“ zu verhindern (5beb92)
  • Vorgänge mikrooptimieren (d73c5c)
  • Optimieren der SynchronizedObject-Zuweisungen in der JVM (2b043f)

Version 1.8.0-alpha03

2. Oktober 2024

androidx.compose.runtime:runtime-*:1.8.0-alpha03 ist veröffentlicht. Version 1.8.0-alpha03 enthält diese Commits.

Leistungsverbesserungen

  • Untergeordneten Kontext für rememberCoroutineScope (f61464) verzögert erstellen
    • rememberCoroutineScope wird in der Regel verwendet, um als Reaktion auf Ereignisse, die nach der Komposition auftreten, Coroutinen zu starten. In einigen Szenarien treten diese Ereignisse möglicherweise nie auf, was zu zusätzlichen Kosten für das Erstellen und Abbrechen von Jobs ohne Nutzen führt.
    • Der von rememberCoroutineScope zurückgegebene Bereich wird erst bei Zugriff auf coroutineContext erstellt. So werden Job-Erstellung und ‑Abbruch vermieden, wenn der Bereich nie verwendet wird.

Version 1.8.0-alpha02

18. September 2024

androidx.compose.runtime:runtime-*:1.8.0-alpha02 ist veröffentlicht. Version 1.8.0-alpha02 enthält diese Commits.

Neue Funktionen

  • PausableComposition wurde hinzugefügt. Damit kann eine Unterkomposition erstellt werden, die während der Komposition pausiert und asynchron auf die Komposition angewendet werden kann. Für das Pausieren ist Compiler-Unterstützung erforderlich, die derzeit entwickelt wird. (I3394b)

Version 1.8.0-alpha01

4. September 2024

androidx.compose.runtime:runtime-*:1.8.0-alpha01 ist veröffentlicht. Version 1.8.0-alpha01 enthält diese Commits.

Version 1.7

Version 1.7.8

12. Februar 2025

androidx.compose.runtime:runtime-*:1.7.8 ist veröffentlicht. Version 1.7.8 enthält diese Commits.

Version 1.7.7

29. Januar 2025

androidx.compose.runtime:runtime-*:1.7.7 ist veröffentlicht. Keine Änderungen gegenüber Version 1.7.6.

androidx.compose.runtime:runtime-*:1.7.6 ist veröffentlicht. Version 1.7.6 enthält diese Commits.

Version 1.7.5

30. Oktober 2024

androidx.compose.runtime:runtime-*:1.7.5 ist veröffentlicht. Version 1.7.5 enthält diese Commits.

Version 1.7.4

16. Oktober 2024

androidx.compose.runtime:runtime-*:1.7.4 ist veröffentlicht. Version 1.7.4 enthält diese Commits.

Version 1.7.3

2. Oktober 2024

androidx.compose.runtime:runtime-*:1.7.3 ist veröffentlicht. Version 1.7.3 enthält diese Commits.

Version 1.7.2

18. September 2024

androidx.compose.runtime:runtime-*:1.7.2 ist veröffentlicht. Version 1.7.2 enthält diese Commits.

Version 1.7.1

10. September 2024

  • An Android-Artefakten wurden keine Änderungen vorgenommen. -desktop Artefakte wurden entfernt und -jvmStubs- und -linuxx64Stubs-Artefakte wurden hinzugefügt. Keines dieser Ziele ist für die Verwendung vorgesehen. Sie sind Platzhalter, um die Bemühungen von Jetbrains Compose zu unterstützen.

Version 1.7.0

4. September 2024

androidx.compose.runtime:runtime-*:1.7.0 ist veröffentlicht. Version 1.7.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.6.0

  • Es wurde die Möglichkeit hinzugefügt, eine Kompositionslokale bereitzustellen, die standardmäßig auf Grundlage der Werte anderer Kompositionslokalen berechnet wird. Dazu kann compositionLocalWithComputedDefault() verwendet werden. Alternativ kann auch eine Lambda-Funktion angegeben werden, mit der der Wert berechnet wird. Dazu wird providesComputed anstelle von provides verwendet.
  • Der Wert eines Kompositions-Locals kann mit der currentValue-Property des Kompositions-Locals abgerufen werden, auf die über die Lambda-Funktion zugegriffen werden kann, mit der der Wert berechnet wird. Diese Variable wird anstelle von current verwendet, auf die nur in @Composable-Funktionen zugegriffen werden kann. (Iadbc0)
  • Neu erstellte Statusobjekte sind mit ihrem ursprünglichen Status sofort über andere Snapshots, einschließlich des globalen Snapshots, zugänglich. Alle nachfolgenden Änderungen sind erst sichtbar, wenn der Snapshot angewendet wird, in dem das Objekt erstellt wurde.
  • Der Ausgangszustand von mutableStateOf() sowie der zugehörigen primitiven Versionen ist der Wert, der als Parameter an mutableStateOf() übergeben wird. Der Ausgangszustand von mutableStateListOf() und mutableStateMapOf() ist leer.
  • Snapshot.isInSnapshot und Snapshot.PreexistingSnapshotId wurden hinzugefügt, um zu ermöglichen, dass ein Zustandsobjekt nach seiner Erstellung sofort über den globalen Snapshot zugänglich ist.
  • Benutzerdefinierte Statusobjekte können sofort zugänglich sein, wenn sie dem Muster der Änderungen an den integrierten Snapshot-Objekten folgen. (I84a17)
  • Aktivieren Sie nonSkippingGroupOptimization für Compose-Bibliotheken. Dadurch wird der generierte Code für alle nicht neu startbaren zusammensetzbaren Funktionen in androidx effizienter. In Zukunft soll diese Funktion standardmäßig aktiviert sein. I(acbc08)
  • Composable-Lambdas in untergeordneten Kompositionen im selben Frame ungültig machen. (98301c)
  • Rufen Sie den onRelease-Callback in derselben Reihenfolge wie onForgotten auf. (2cd790)
  • Modus für starkes Überspringen aktivieren (ed1766)
  • currentCompoundHashKey in mehr Fällen eindeutig machen (d4a872)

Version 1.7.0-rc01

21. August 2024

androidx.compose.runtime:runtime-*:1.7.0-rc01 ist veröffentlicht. Version 1.7.0-rc01 enthält diese Commits.

Version 1.7.0-beta07

7. August 2024

androidx.compose.runtime:runtime-*:1.7.0-beta07 ist veröffentlicht. Version 1.7.0-beta07 enthält diese Commits.

Version 1.7.0-beta06

24. Juli 2024

androidx.compose.runtime:runtime-*:1.7.0-beta06 ist veröffentlicht. Version 1.7.0-beta06 enthält diese Commits.

Version 1.7.0-beta05

10. Juli 2024

androidx.compose.runtime:runtime-*:1.7.0-beta05 ist veröffentlicht. Version 1.7.0-beta05 enthält diese Commits.

Version 1.7.0-beta04

26. Juni 2024

androidx.compose.runtime:runtime-*:1.7.0-beta04 ist veröffentlicht. Version 1.7.0-beta04 enthält diese Commits.

Version 1.7.0-beta03

12. Juni 2024

androidx.compose.runtime:runtime-*:1.7.0-beta03 ist veröffentlicht. Version 1.7.0-beta03 enthält diese Commits.

Version 1.7.0-beta02

29. Mai 2024

androidx.compose.runtime:runtime-*:1.7.0-beta02 ist veröffentlicht. Version 1.7.0-beta02 enthält diese Commits.

Version 1.7.0-beta01

14. Mai 2024

androidx.compose.runtime:runtime-*:1.7.0-beta01 ist veröffentlicht. Version 1.7.0-beta01 enthält diese Commits.

Version 1.7.0-alpha08

1. Mai 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha08 ist veröffentlicht. Version 1.7.0-alpha08 enthält diese Commits.

Version 1.7.0-alpha07

17. April 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha07 ist veröffentlicht. Version 1.7.0-alpha07 enthält diese Commits.

Neue Funktionen

  • Es wurde die Möglichkeit hinzugefügt, eine Kompositionslokale bereitzustellen, die standardmäßig auf Grundlage der Werte anderer Kompositionslokalen berechnet wird. Dazu kann compositionLocalWithComputedDefault() verwendet werden. Alternativ kann auch eine Lambda-Funktion angegeben werden, mit der der Wert berechnet wird. Dazu wird providesComputed anstelle von provides verwendet.
  • Der Wert eines Kompositions-Locals kann mit der currentValue-Property des Kompositions-Locals abgerufen werden, auf die über die Lambda-Funktion zugegriffen werden kann, mit der der Wert berechnet wird. Diese Variable wird anstelle von current verwendet, auf die nur in @Composable-Funktionen zugegriffen werden kann. (Iadbc0)

API-Änderungen

  • Neu erstellte Statusobjekte sind mit ihrem ursprünglichen Status sofort über andere Snapshots, einschließlich des globalen Snapshots, zugänglich. Alle nachfolgenden Änderungen sind erst sichtbar, wenn der Snapshot angewendet wird, in dem das Objekt erstellt wurde.
  • Der Ausgangszustand von mutableStateOf() sowie der zugehörigen primitiven Versionen ist der Wert, der als Parameter an mutableStateOf() übergeben wird. Der Ausgangszustand von mutableStateListOf() und mutableStateMapOf() ist leer.
  • Snapshot.isInSnapshot und Snapshot.PreexistingSnapshotId wurden hinzugefügt, um zu ermöglichen, dass ein Zustandsobjekt nach seiner Erstellung sofort über den globalen Snapshot zugänglich ist.
  • Benutzerdefinierte Statusobjekte können sofort zugänglich sein, wenn sie dem Muster der Änderungen an den integrierten Snapshot-Objekten folgen. (I84a17)

Fehlerkorrekturen

  • Das Zusammenführen von readObserver in verschachtelten Snapshots wurde korrigiert. Dadurch wurden verschachtelte abgeleitete Status bei Verwendung in einem snapshotFlow nicht ausreichend invalidiert. (Idf138)

Version 1.7.0-alpha06

3. April 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha06 ist veröffentlicht. Version 1.7.0-alpha06 enthält diese Commits.

Fehlerkorrekturen

  • Fehlerbehebung bei der Verarbeitung einzelner Werte providesDefault (538f45)
  • Deadlock beim Zugriff des Recomposers auf die Frame-Clock vermeiden (07e5c6)

Version 1.7.0-alpha05

20. März 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha05 ist veröffentlicht. Version 1.7.0-alpha05 enthält diese Commits.

Fehlerkorrekturen

  • Späte Änderungen an deaktivierter Komposition löschen (5950bc)

Version 1.7.0-alpha04

6. März 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha04 ist veröffentlicht. Version 1.7.0-alpha04 enthält diese Commits.

Leistungsverbesserungen

  • Snapshot.current einmal pro Auswertung des abgeleiteten Status aufrufen (ee7daf)
  • currentRecord einmal pro Beobachtung in der Zusammensetzung lesen (b882b2)
  • Entfernen der versehentlichen Iteratorzuweisung in snapshotFlow (231e56)
  • Aktivieren Sie nonSkippingGroupOptimization für Compose-Bibliotheken. Dadurch wird der generierte Code für alle nicht neu startbaren zusammensetzbaren Funktionen in androidx effizienter. In Zukunft soll diese Funktion standardmäßig aktiviert werden. I(acbc08)

Version 1.7.0-alpha03

21. Februar 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha03 ist veröffentlicht. Version 1.7.0-alpha03 enthält diese Commits.

API-Änderungen

  • Einführung von Ersetzungsgruppen zur Verbesserung der Erkennung von Änderungen (0941b5)

Leistungsverbesserungen

  • Arbeitsspeicherzuweisung bei der Erkennung von Änderungen verbessern (53e7fd)
  • Speicherleck im Composer behoben (0e097d)
  • ScopeMap verwenden, um beim Neuzusammenstellen Invalidierungen zu übergeben (e19a7e)
  • Die Karte mit ungültigen Elementen wird optimiert, sodass nur abgeleitete Status beibehalten werden (f11c44).
  • IdentityArraySet-Verwendungen durch ScatterSet ersetzen (db572e)
  • removeScope in ScopeMap optimieren (bb0530)

Version 1.7.0-alpha02

7. Februar 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha02 ist veröffentlicht. Version 1.7.0-alpha02 enthält diese Commits.

Fehlerkorrekturen

  • Composable-Lambdas in untergeordneten Kompositionen im selben Frame ungültig machen. (98301c)
  • Rufen Sie den onRelease-Callback in derselben Reihenfolge wie onForgotten auf. (2cd790)
  • Filtert geänderte Status heraus, die in snapshotFlow nicht beobachtet werden. (796b80)

Leistungsverbesserungen

  • Snapshot-Beobachter direkt ändern, wenn er bereits transparent ist (f60f30)
  • Optimieren SnapshotIdSet.lowest() (7ae149)
  • Verwenden Sie eine zuteilungsfreie fold() in SnapshotIdSet. (532b7d)
  • Entfernen der Iteratorzuweisung (83f96b)

Version 1.7.0-alpha01

24. Januar 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha01 ist veröffentlicht. Version 1.7.0-alpha01 enthält diese Commits.

Leistungsoptimierungen

  • Möglichkeit hinzugefügt, Slots zu erstellen, nachdem eine untergeordnete Gruppe hinzugefügt wurde (b5960c)
  • Aufzeichnung von Änderungen an Snapshot-Zuständen optimieren (28c3fe)
  • Modus für starkes Überspringen aktivieren (ed1766)

Fehlerkorrekturen

  • Standardparametermeta in der intrinsischen Erinnerung berücksichtigen (096665)
  • currentCompoundHashKey in mehr Fällen eindeutig machen (d4a872)
  • Gruppen beim Beenden des Inline-Funktionsaufrufs realisieren (2a90fc)

Version 1.6

Version 1.6.8

12. Juni 2024

androidx.compose.runtime:runtime-*:1.6.8 ist veröffentlicht. Version 1.6.8 enthält diese Commits.

Version 1.6.7

1. Mai 2024

androidx.compose.runtime:runtime-*:1.6.7 ist veröffentlicht. Version 1.6.7 enthält diese Commits.

Version 1.6.6

17. April 2024

androidx.compose.runtime:runtime-*:1.6.6 ist veröffentlicht. Keine Änderungen seit der letzten Version.

Version 1.6.5

3. April 2024

androidx.compose.runtime:runtime-*:1.6.5 ist veröffentlicht. Version 1.6.5 enthält diese Commits.

Version 1.6.4

20. März 2024

androidx.compose.runtime:runtime-*:1.6.4 ist veröffentlicht. Version 1.6.4 enthält diese Commits.

Version 1.6.3

6. März 2024

androidx.compose.runtime:runtime-*:1.6.3 ist veröffentlicht. Version 1.6.3 enthält diese Commits.

Version 1.6.2

21. Februar 2024

androidx.compose.runtime:runtime-*:1.6.2 ist veröffentlicht. Version 1.6.2 enthält diese Commits.

Version 1.6.1

7. Februar 2024

androidx.compose.runtime:runtime-*:1.6.1 ist veröffentlicht. Version 1.6.1 enthält diese Commits.

Fehlerkorrekturen

  • Rufen Sie den onRelease-Callback in derselben Reihenfolge wie onForgotten auf. (2cd790)
  • Filtert geänderte Status heraus, die in snapshotFlow nicht beobachtet werden. (796b80)

Version 1.6.0

24. Januar 2024

androidx.compose.runtime:runtime-*:1.6.0 ist veröffentlicht. Version 1.6.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.5.0

Neue Funktionen

  • Ausnahmen, die während der Recomposition-Schleife abgefangen werden, noch einmal auslösen (4dff9a)

Leistungsoptimierungen

  • Optimierung der Aufzeichnung von Änderungen an Snapshot-Zuständen (28c3fe)
  • Optimieren rememberSaveable (f01d79)
  • Das erneute Lesen abgeleiteter Status wird aufgeschoben, bis Änderungen aufgezeichnet werden (f38099)
  • Lokale Werte für die Komposition verbessern (a337ea)

Fehlerkorrekturen

  • Speicherleck in der Slot-Tabelle behoben (73fcfe)
  • Überspringen Sie die Neuzusammenstellung von untergeordneten Kompositionen, die entfernt werden. (Ieeb99, b/254645321)
  • Lösen Sie RememberObserver-Zyklen nur aus, wenn sie in der Berechnung für die Erinnerung gespeichert sind. (f6b4dc)
  • Beschränken Sie die Erfassung von $dirty auf Inline-Lambdas. (acfca0)
  • Problem behoben, bei dem für verschiebbare Inhalte manchmal die falschen Kompositions-Locales festgelegt wurden. (035cd6)

Version 1.6.0-rc01

10. Januar 2024

androidx.compose.runtime:runtime-*:1.6.0-rc01 ist veröffentlicht. Version 1.6.0-rc01 enthält diese Commits.

Version 1.6.0-beta03

13. Dezember 2023

androidx.compose.runtime:runtime-*:1.6.0-beta03 ist veröffentlicht. Version 1.6.0-beta03 enthält diese Commits.

Version 1.6.0-beta02

29. November 2023

androidx.compose.runtime:runtime-*:1.6.0-beta02 ist veröffentlicht. Version 1.6.0-beta02 enthält diese Commits.

Version 1.6.0-beta01

15. November 2023

androidx.compose.runtime:runtime-*:1.6.0-beta01 ist veröffentlicht. Version 1.6.0-beta01 enthält diese Commits.

API-Änderungen

  • Bestimmte Stabilitätswerte in Anmerkungen weitergeben. (274a4c)

Fehlerkorrekturen

  • Verwenden Sie die referenzielle Richtlinie für den lokalen Status der Zusammensetzung im Kontext. (83361c)
  • Beschränken Sie die Erfassung von $dirty auf Inline-Lambdas. (acfca0)
  • Problem behoben, bei dem für verschiebbare Inhalte manchmal die falschen Kompositions-Locales festgelegt wurden. (035cd6)
  • Schnellere Hashmaps ohne Zuweisung in RecomposeScopeImpl verwenden. (d79494)
  • ObjectIntMap in DerivedState verwenden. (21862e)
  • Verwenden Sie IntRef für int SnapshotThreadLocal in DerivedState. (04eaf4)

Version 1.6.0-alpha08

18. Oktober 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha08 ist veröffentlicht. Version 1.6.0-alpha08 enthält diese Commits.

Fehlerkorrekturen

  • Lösen Sie RememberObserver-Zyklen nur aus, wenn sie in der Berechnung für die Erinnerung gespeichert sind. (f6b4dc)
  • Die Sortierung der Zuweisungen in der Liste der Ungültigmachungen wurde verbessert. (954d63)
  • Neue nicht zuordnende Karten in SnapshotStateObserver verwenden (4303ce)
  • Ungültigmachungen löschen, wenn die Komposition deaktiviert wird. (e001be)

Version 1.6.0-alpha07

4. Oktober 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha07 ist veröffentlicht. Version 1.6.0-alpha07 enthält diese Commits.

API-Änderungen

  • SnapshotStateList ist jetzt als RandomAccess gekennzeichnet, damit die Version der Listen-Helfer mit direkter Indexierung verwendet werden kann. (I5210c, b/219554654)

Version 1.6.0-alpha06

20. September 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha06 ist veröffentlicht. Version 1.6.0-alpha06 enthält diese Commits.

Version 1.6.0-alpha05

6. September 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha05 ist veröffentlicht. Version 1.6.0-alpha05 enthält diese Commits.

Version 1.6.0-alpha04

23. August 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha04 ist veröffentlicht. Version 1.6.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Ausnahmen, die während der Recomposition-Schleife abgefangen werden, noch einmal auslösen (4dff9a)

API-Änderungen

  • Es wurde eine Methode zum Deaktivieren von ReusableComposition hinzugefügt, mit der Beobachtungen entfernt, Knoten aber beibehalten werden. Die deaktivierte Komposition kann durch Aufrufen von setContent wieder aktiviert werden. (Ib7f31)
  • Die ReusableComposition-Schnittstelle zum Verwalten des Lebenszyklus und der Wiederverwendung von Unterkompositionen wurde hinzugefügt. (I812d1, b/252846775)

Version 1.6.0-alpha03

9. August 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha03 ist veröffentlicht. Version 1.6.0-alpha03 enthält diese Commits.

Fehlerkorrekturen

  • Fehlerbehebung bei der neuen CompositionLocalProvider-Optimierung (3118e88)
  • Korrektur der Zerlegung von verschiebbaren Inhaltsknoten. (5e3d59b)

Version 1.6.0-alpha02

26. Juli 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha02 ist veröffentlicht. Version 1.6.0-alpha02 enthält diese Commits.

Neue Funktionen und Leistungsverbesserungen

  • Optimieren rememberSaveable (f01d79)
  • Das erneute Lesen abgeleiteter Status wird aufgeschoben, bis Änderungen aufgezeichnet werden (f38099)
  • Lokale Werte für die Komposition verbessern (a337ea)
  • SideEffect ist als @ExplicitGroupsComposable markiert, um die Erstellung einer Gruppe zu vermeiden. (I74815)
  • Vergleich von lokalen Karten zur Zusammensetzung bei der Wiederverwendung vermeiden (782071)

API-Änderungen

  • Es wurde eine spezielle Fallüberladung für CompositionLocalProviders hinzugefügt, die den Overhead vermeidet, der zum Bereitstellen mehrerer Werte erforderlich ist. Dies beschleunigt die Bereitstellung mehrerer Werte, führt aber zu Overhead, wenn nur ein einzelner Wert bereitgestellt wird. (I6d640, b/288169379)

Fehlerkorrekturen

  • Speicherleck in der Slot-Tabelle behoben (73fcfe)
  • Beheben Sie, wie wir rememberSaveable wiederherstellen, wenn stateSaver „null“ zurückgibt (90748c).

Version 1.6.0-alpha01

21. Juni 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha01 ist veröffentlicht. Version 1.6.0-alpha01 enthält diese Commits.

Fehlerkorrekturen

  • Überspringen Sie die Neuzusammenstellung von untergeordneten Kompositionen, die entfernt werden. (Ieeb99, b/254645321)
  • Weniger Zuweisungen beim Anwenden von Snapshots. (I65c09)
  • Berechnung von readableHash in DerivedState vermeiden, wenn der Snapshot nicht geändert wurde (68c565)

Version 1.5

Version 1.5.4

18. Oktober 2023

androidx.compose.runtime:runtime-*:1.5.4 ist veröffentlicht. Version 1.5.4 enthält diese Commits.

Version 1.5.3

4. Oktober 2023

androidx.compose.runtime:runtime-*:1.5.3 ist veröffentlicht. Version 1.5.3 enthält diese Commits.

Version 1.5.2

27. September 2023

androidx.compose.runtime:runtime-*:1.5.2 ist veröffentlicht. Version 1.5.2 enthält diese Commits.

Version 1.5.1

6. September 2023

androidx.compose.runtime:runtime-*:1.5.1 ist veröffentlicht. Version 1.5.1 enthält diese Commits.

Version 1.5.0

9. August 2023

androidx.compose.runtime:runtime-*:1.5.0 ist veröffentlicht. Version 1.5.0 enthält diese Commits.

API-Änderungen

  • Zuweisungen in der Neukomposition, Farbanimationen und AndroidComposeView wurden entfernt. (Ib2bfa)
  • Die Annotation @StateFactoryMarker wurde hinzugefügt, um Funktionen zu kennzeichnen, die Status erstellen und in einen remember-Aufruf eingeschlossen werden müssen. (I64550)
  • Primitive Versionen von „State“ und MutableState hinzufügen (fb3d89)
  • Snapshot.isApplyObserverNotificationPending hinzugefügt (I672a5)
  • Es wurden primitive Versionen der State-API hinzugefügt, mit denen Int-, Long-, Float- und Double-Werte in State-Objekten erfasst werden können, ohne dass Strafen für das automatische Boxing anfallen. Verwenden Sie die neuen Factory-Methoden mutableIntState(Int), mutableFloatStateOf(Float) usw., um diese zu nutzen. (I48e43)

Fehlerkorrekturen

  • Überspringen Sie die Neuzusammenstellung von untergeordneten Kompositionen, die entfernt werden. (Ieeb99, b/254645321)
  • Snapshot-Referenz in ComposerImpl nicht beibehalten (0206f7)
  • Zusammensetzung nicht zweimal anwenden (f5791b)
  • Ungültigmachung für nicht initialisierte abgeleitete Statuswerte sicherstellen (aa2a92)
  • Rufe onEndChanges während des Verwerfens der Komposition auf. (62cc8c)
  • Fehler beim Verschieben von Inhalten in eine Unterkomposition beheben (4beb41)
  • Mögliche Deadlocks beheben (c1a425 und 8edce0)
  • Der für ein Android-Fenster erstellte Recomposer blockiert jetzt nur noch Aufrufe von withFrameNanos anstelle der gesamten Komposition, wenn er eine ON_STOP-Benachrichtigung erhält. Das bedeutet, dass Fenster, die mit beendeten Aktivitäten verknüpft sind, weiterhin neu zusammengesetzt werden, wenn sich Daten ändern. Die Animationen oder andere Aufrufer von withFrameNanos werden jedoch blockiert. (Id9e7f, b/240975572)
  • Deaktivierungs-Callbacks für LayoutNode ausführen, bevor Effekte verworfen werden 3784073
  • Geänderte Flags für neu gestartete Lambdas korrigieren ea81df9
  • Regressionsproblem bei der Live-Bearbeitung für Composable mit Knoten 73fd4d8 behoben
  • ON_STOP sollte die Frame-Clock-Broadcasts anstelle der Komposition ae276f1 pausieren.
  • SnapshotStateObserver-Bereiche für unveränderte abgeleitete Status ungültig machen 84d9b1c
  • Möglichen Deadlock beim Schließen von Kompositionen behoben 28761fc
  • Fehler beim Verschieben von Inhalten in eine Unterkomposition beheben 92d4156
  • Geänderte Flags für neu gestartete Lambdas korrigieren (8a03e9)
  • Deaktivierungs-Callbacks für LayoutNode vor dem Entfernen von Effekten ausführen (8b0fa4)
  • Fehler endToMarker() beim Beenden von Knotengruppen behoben. (d71d980)
  • Aktuelle SlotWriter-Gruppe für die Prüfung bei der Deaktivierung verwenden (a0b518b)
  • Entferne die fill in SlotTable.moveSlotGapTo() und verschiebe sie in den Abschnitt „Schließen“ (81f9935).
  • Fehlende Ungültigmachungen beheben, während sich verschiebbarer Inhalt bewegt (1d7c024)
  • Sofortige Ungültigmachung für verschobene bewegliche Inhalte korrigieren (8676618)

Leistungsverbesserungen

  • Vermeiden Sie die Berechnung von readableHash in DerivedState, wenn der Snapshot nicht geändert wurde. (307102)
  • Reduzierte Zuweisungen (I65c09, d7ea77, 727974 und 445808)
  • Schnelles Abbrechen des Verfassens von CoroutineScopes (a55362 und bd382f)
  • Einträge von Statusobjekten mit nicht zugänglichen Statuseinträgen überschreiben (c986960)
  • Composer mit dem richtigen Umfang verwenden, wenn Gruppen realisiert werden (9a5e5b6)
  • IdentityArraySet zum Speichern von Snapshot-Ungültigmachungen verwenden (7f60cca)
  • Zuweisungen für Snapshot-Beobachtungen reduzieren (5bc535f)

Version 1.5.0-rc01

26. Juli 2023

androidx.compose.runtime:runtime-*:1.5.0-rc01 ist veröffentlicht. Version 1.5.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Das erneute Lesen abgeleiteter Status wird aufgeschoben, bis Änderungen aufgezeichnet werden (f38099)

  • Es ist eine optionale Prüfung verfügbar, mit der empfohlen wird, mutableStateOf()-Aufrufe zu den entsprechenden spezialisierten Typen für Primitiven zu migrieren. Die Lint-ID lautet AutoboxingStateCreation. Bisher war diese Prüfung standardmäßig für alle Projekte aktiviert. Wenn Sie diese Warnung im Editor von Android Studio und in den Lint-Ausgaben Ihres Projekts sehen möchten, ändern Sie den Schweregrad von „Informational“ zu „Warning“ (oder höher), indem Sie warning "AutoboxingStateCreation" in der build.gradle- oder build.gradle.kts-Konfiguration Ihres Moduls deklarieren, wie unten gezeigt (I34f7e):

        android {
            lint {
                warning "AutoboxingStateCreation"
            }
            ...
        }
    

Version 1.5.0-beta03

28. Juni 2023

androidx.compose.runtime:runtime-*:1.5.0-beta03 ist veröffentlicht. Version 1.5.0-beta03 enthält diese Commits.

Fehlerkorrekturen

  • Überspringen Sie die Neuzusammenstellung von untergeordneten Kompositionen, die entfernt werden. (Ieeb99, b/254645321)

Version 1.5.0-beta02

7. Juni 2023

androidx.compose.runtime:runtime-*:1.5.0-beta02 ist veröffentlicht. Version 1.5.0-beta02 enthält diese Commits.

Leistungsverbesserungen

  • Vermeiden Sie die Berechnung von readableHash in DerivedState, wenn der Snapshot nicht geändert wurde. (307102)

Version 1.5.0-beta01

24. Mai 2023

androidx.compose.runtime:runtime-*:1.5.0-beta01 ist veröffentlicht. Version 1.5.0-beta01 enthält diese Commits.

API-Änderungen

  • Entfernte Zuweisungen in der Neukomposition, Farbanimationen und AndroidComposeView (Ib2bfa)
  • Die Annotation @StateFactoryMarker wurde hinzugefügt, um Funktionen zu kennzeichnen, die Status erstellen und in einen remember-Aufruf eingeschlossen werden müssen. (I64550)
  • Primitive Versionen von „State“ und MutableState hinzufügen (fb3d89)
  • Snapshot.isApplyObserverNotificationPending hinzugefügt (I672a5)

Fehlerkorrekturen

  • Reduzierte Zuweisungen (I65c09, d7ea77, 727974 und 445808)
  • Snapshot-Referenz in ComposerImpl nicht beibehalten (0206f7)
  • Schnelles Abbrechen des Verfassens von CoroutineScopes (a55362 und bd382f)
  • Zusammensetzung nicht zweimal anwenden (f5791b)
  • Ungültigmachung für nicht initialisierte abgeleitete Zustandswerte sicherstellen (aa2a92)
  • Rufe onEndChanges während des Verwerfens der Komposition auf. (62cc8c)
  • Fehler beim Verschieben von Inhalten in eine Unterkomposition beheben (4beb41)
  • Mögliche Deadlocks beheben (c1a425
  • ON_STOP sollte die Übertragungen der Frame-Clock anstelle der Komposition pausieren (f4a2d1)
  • Geänderte Flags für neu gestartete Lambdas korrigieren (8a03e9)
  • Deaktivierungs-Callbacks für LayoutNode vor dem Entfernen von Effekten ausführen (8b0fa4)

Externer Beitrag

  • Snapshot.isApplyObserverNotificationPending hinzugefügt (I672a5)

Version 1.5.0-alpha04

10. Mai 2023

androidx.compose.runtime:runtime-*:1.5.0-alpha04 ist veröffentlicht. Version 1.5.0-alpha04 enthält diese Commits.

API-Änderungen

  • Es wurden primitive Versionen der State-API hinzugefügt, mit denen Int-, Long-, Float- und Double-Werte in State-Objekten erfasst werden können, ohne dass Strafen für das automatische Boxing anfallen. Verwenden Sie die neuen Factory-Methoden mutableIntState(Int), mutableFloatStateOf(Float) usw., um diese zu nutzen. (I48e43)

Fehlerkorrekturen

  • Rufe onEndChanges während des Verwerfens der Komposition auf. Fokus-Knoten, die während Composition.dispose entfernt wurden, abonnieren onEndChanges, um den Fokus zurückzusetzen.(03d4a47)

  • Sorgen Sie für die Ungültigmachung von nicht initialisierten abgeleiteten Statuswerten. Jeder abgeleitete Status ist mit einer Liste seiner Abhängigkeiten in SnapshotStateObserver verknüpft. Diese Liste wird verwendet, um Bereiche zu invalidieren, die mit dem abgeleiteten Status verknüpft sind, wenn sich eine Abhängigkeit ändert. Die Abhängigkeitsänderung wird beim Snapshot-Fortschritt registriert, der nach dem Lesen des abgeleiteten Status erfolgen kann (aufgrund des Aufrufs von Snapshot.notifyObjectsInitialized()).

    In der bisherigen Logik für abgeleitete Statusbeobachtungen in SnapshotStateObserver wurden alte Abhängigkeiten bereinigt und dann der neue Wert gelesen. Dies führte zu einer Race-Bedingung, bei der die Invalidierung in einem bereinigten Zustand erfolgte und die Invalidierung der Abhängigkeit nicht registriert wurde.

    Durch diese Änderung werden das Lesen des abgeleiteten Status und das Bereinigen von Abhängigkeiten neu angeordnet. So wird sichergestellt, dass die Ungültigmachung immer in einem gültigen Zustand erfolgt. (c472be6)

Version 1.5.0-alpha03

19. April 2023

androidx.compose.runtime:runtime-*:1.5.0-alpha03 ist veröffentlicht. Version 1.5.0-alpha03 enthält diese Commits.

API-Änderungen

  • Der für ein Android-Fenster erstellte Recomposer blockiert jetzt nur noch Aufrufe von withFrameNanos anstelle der gesamten Komposition, wenn er eine ON_STOP-Benachrichtigung erhält. Das bedeutet, dass Fenster, die mit beendeten Aktivitäten verknüpft sind, weiterhin neu zusammengesetzt werden, wenn sich Daten ändern. Die Animationen oder andere Aufrufer von withFrameNanos werden jedoch blockiert. (Id9e7f, b/240975572)

Fehlerkorrekturen

  • Möglichen Deadlock in Snapshot-Liste und ‑Karte beheben 5c1a425
  • Deaktivierungs-Callbacks für LayoutNode ausführen, bevor Effekte verworfen werden 3784073
  • Geänderte Flags für neu gestartete Lambdas korrigieren ea81df9
  • Regressionsproblem bei der Live-Bearbeitung für Composable mit Knoten 73fd4d8 behoben
  • ON_STOP sollte die Frame-Clock-Broadcasts anstelle der Komposition ae276f1 pausieren.
  • SnapshotStateObserver-Bereiche für unveränderte abgeleitete Status ungültig machen 84d9b1c
  • Möglichen Deadlock beim Schließen von Kompositionen behoben 28761fc
  • Fehler beim Verschieben von Inhalten in eine Unterkomposition beheben 92d4156

Version 1.5.0-alpha02

5. April 2023

androidx.compose.runtime:runtime-*:1.5.0-alpha02 ist veröffentlicht. Version 1.5.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Der getValue-Operator von Kotlin kann jetzt zusammensetzbar sein (f174f6e)

Fehlerkorrekturen, Leistungsverbesserungen

  • Einträge von Statusobjekten mit nicht zugänglichen Statuseinträgen überschreiben (c986960)
  • Composer mit dem richtigen Bereich verwenden, wenn Gruppen realisiert werden (9a5e5b6)
  • Fehler endToMarker() beim Beenden von Knotengruppen behoben. (d71d980)
  • Aktuelle SlotWriter-Gruppe für die Prüfung bei der Deaktivierung verwenden (a0b518b)
  • IdentityArraySet zum Speichern von Snapshot-Ungültigmachungen verwenden (7f60cca)
  • Entferne die fill in SlotTable.moveSlotGapTo() und verschiebe sie in den Abschnitt „Schließen“ (81f9935).
  • Fehlende Ungültigmachungen beheben, während sich verschiebbarer Inhalt bewegt (1d7c024)
  • Sofortige Ungültigmachung für verschobene bewegliche Inhalte korrigieren (8676618)
  • Zuweisungen für Snapshot-Beobachtungen reduzieren (5bc535f)

Version 1.5.0-alpha01

22. März 2023

androidx.compose.runtime:runtime-*:1.5.0-alpha01 ist veröffentlicht. Version 1.5.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Fügt Modifier.Node#coroutineScope hinzu, damit Modifier.Nodes Koroutinen starten kann (I76ef9)
  • Ermöglichen Sie Modifier.Nodes, CompositionLocals zu lesen, indem Sie die CompositionLocalConsumerModifierNode-Schnittstelle implementieren. (Ib44df)

Version 1.4

Version 1.4.3

3. Mai 2023

androidx.compose.runtime:runtime-*:1.4.3 wird ohne Änderungen veröffentlicht.

Version 1.4.2

19. April 2023

androidx.compose.runtime:runtime-*:1.4.2 ist veröffentlicht. Version 1.4.2 enthält diese Commits.

Fehlerkorrekturen

  • Potenziellen Deadlock in der Snapshot-Liste und auf der Karte behoben 2eb6570

  • Wenn Sie einem SnapshotStateList oder SnapshotStateMap Inhalte hinzufügen, kann es zu einem Deadlock kommen, wenn die Änderung gleichzeitig mit einem direkten Schreiben in den Statusdatensatz erfolgt. Durch die Änderungen in 93fcae828b, bei denen nicht verwendete Datensätze direkt geschrieben werden, ist dieses Problem deutlich wahrscheinlicher geworden.

  • Die Sperren werden jetzt so angeordnet, dass niemals versucht wird, eine Snapshot-Sperre zu setzen, wenn eine Karten- oder Listensperre aktiv ist.

Version 1.4.1

5. April 2023

androidx.compose.runtime:runtime-*:1.4.1 ist veröffentlicht. Version 1.4.1 enthält diese Commits.

Fehlerkorrekturen

  • Fehler endToMarker() beim Beenden von Knotengruppen behoben. d71d980

Version 1.4.0

22. März 2023

androidx.compose.runtime:runtime-*:1.4.0 ist veröffentlicht. Version 1.4.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.3.0

  • Verwende den initialisierten Wert aus LiveData für die erste Komposition 3680e25.
  • Fügen Sie ComposeNodeLifecycleCallback hinzu, um den Lebenszyklus von Compose-Knoten zu beobachten. 8b6a258
  • Attribut parameterTypes zu ComposableMethod 7b6c7ad hinzufügen

Fehlerkorrekturen und Leistungsverbesserungen

  • Löschen Sie beide Bereichsindexe in SnapshotStateObserver 29f4a3e.
  • Fügen Sie Gruppen hinzu, die im Text von nicht überspringbaren Lambdas benötigt werden. 7d06752
  • Verbesserung der Speicherreferenzmerkmale des Snapshot-Status 93fcae8
  • Entfernen von Umrahmungen bei lokalen Kompositions-Lookups 0875717
  • Verwenden Sie den richtigen Schlüssel für nicht wiederverwendbare Knotengruppen 6388d8d.
  • SnapshotStateObserver vor rekursiven und gleichzeitigen Anwendungen schützen 98cb6ba
  • In der Methode „get“ von IdentityArraySet wurde eine Prüfung auf Indexgrenzen hinzugefügt. 35a77d3
  • Compose-Modul zur Verwendung von ViewTreeLifecycleOwner-Erweiterungen aktualisieren 21c2122
  • Benachrichtigungen zum Anwenden senden, nachdem der Recomposer den Frame fertiggestellt hat. 98f2641
  • Behebung des Index-out-of-bounds-Absturzes beim Abbrechen des Recomposers 8f8656f
  • Neuzusammenstellung immer erzwingen, wenn sich übergeordnete Anbieter der Komposition geändert haben 9526fcc
  • Toleranz des Recomposers für abgebrochene Jobs a55f7ed
  • Invalidierungen für eine große Anzahl von Composern besser verarbeiten 9b7ed67
  • Fehler beim Generieren von Abschlussgruppen für nicht lokale Rückgaben beheben b6f590c

Version 1.4.0-rc01

8. März 2023

androidx.compose.runtime:runtime-*:1.4.0-rc01 ist veröffentlicht. Version 1.4.0-rc01 enthält diese Commits.

Fehlerkorrekturen

Version 1.4.0-beta02

22. Februar 2023

androidx.compose.runtime:runtime:1.4.0-beta02 und androidx.compose.runtime:runtime-saveable:1.4.0-beta02 sind veröffentlicht. Version 1.4.0-beta02 enthält diese Commits.

Version 1.4.0-beta01

8. Februar 2023

androidx.compose.runtime:runtime-*:1.4.0-beta01 ist veröffentlicht. Version 1.4.0-beta01 enthält diese Commits.

API-Änderungen

  • ComposeNodeLifecycleCallback wurde hinzugefügt, um den Lebenszyklus von Compose-Knoten zu beobachten (I3731b).
  • @TestOnly wurde zu Composer.disableSourceInformation() hinzugefügt, da diese Funktion nur in einem Test sicher aufgerufen werden kann. (I896c8)

Fehlerkorrekturen

  • Entfernen von Begrenzungen bei lokalen Lookups für die Zusammensetzung (62f66a)
  • Speicherreferenzmerkmale des Snapshot-Status verbessern (dfb451)

Version 1.4.0-alpha05

25. Januar 2023

androidx.compose.runtime:runtime:1.4.0-alpha05 und androidx.compose.runtime:runtime-saveable:1.4.0-alpha05 sind veröffentlicht. Version 1.4.0-alpha05 enthält diese Commits.

API-Änderungen

  • Mehr Typen/Nullwerte für Inline-/veraltete/ausgeblendete Funktionen (I24f91)

Version 1.4.0-alpha04

11. Januar 2023

androidx.compose.runtime:runtime-*:1.4.0-alpha04 ist veröffentlicht. Version 1.4.0-alpha04 enthält diese Commits.

API-Änderungen

  • TestMonotonicFrameClock verwendet jetzt die korrekte experimentelle Annotation. (I95c9e)

Fehlerkorrekturen

  • SnapshotStateObserver vor rekursiven und gleichzeitigen Anwendungen schützen (d902fb)

Version 1.4.0-alpha03

7. Dezember 2022

androidx.compose.runtime:runtime-*:1.4.0-alpha03 ist veröffentlicht. Version 1.4.0-alpha03 enthält diese Commits.

API-Änderungen

  • Hinzufügen einer neuen öffentlichen Methode zur Klasse ComposableMethod analog zu java.lang.reflect.Method#getParameterTypes() (Iab0c3)

Fehlerkorrekturen

  • Benachrichtigungen zum Anwenden von Snapshots werden jetzt gesendet, nachdem Recomposer die Änderungen angewendet hat. (Iad6c0, b/222093277)

Version 1.4.0-alpha02

9. November 2022

androidx.compose.runtime:runtime-*:1.4.0-alpha02 ist veröffentlicht. Version 1.4.0-alpha02 enthält diese Commits.

Version 1.4.0-alpha01

24. Oktober 2022

androidx.compose.runtime:runtime-*:1.4.0-alpha01 ist veröffentlicht. Version 1.4.0-alpha01 enthält diese Commits.

API-Änderungen

  • SnapshotStateList und SnapshotStateMap haben jetzt explizite Implementierungen von toList() bzw. toMap(). Diese Methoden geben ihren aktuellen Inhalt zurück, ohne eine Kopie zu erstellen, da sie die internen unveränderlichen Daten zurückgeben, die zum Speichern ihres Inhalts verwendet werden. Dieser Wert kann beispielsweise verwendet werden, um mit snapshotFlow einen Fluss von Werten zu erzeugen, ohne dass die Daten kopiert werden müssen. (Ica2bd)

Version 1.3

Version 1.3.3

11. Januar 2023

androidx.compose.runtime:runtime-*:1.3.3 ist veröffentlicht. Version 1.3.3 enthält diese Commits.

  • Keine Änderungen seit Version 1.3.2

Version 1.3.2

7. Dezember 2022

androidx.compose.runtime:runtime-*:1.3.2 ist veröffentlicht. Version 1.3.2 enthält diese Commits.

Fehlerkorrekturen

  • Aktualisiert zur Unterstützung von androidx.compose.ui 1.3.2

Version 1.3.1

9. November 2022

androidx.compose.runtime:runtime-*:1.3.1 ist veröffentlicht. Version 1.3.1 enthält diese Commits.

Version 1.3.0

24. Oktober 2022

androidx.compose.runtime:runtime-*:1.3.0 ist veröffentlicht. Version 1.3.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.2.0

Ausnahmebehandlung / Live Edit-Unterstützung

Composition-Tracing

Composable Reflection APIs

Laufzeitkorrekturen

Snapshot-System

Version 1.3.0-rc01

5. Oktober 2022

androidx.compose.runtime:runtime-*:1.3.0-rc01 ist veröffentlicht. Version 1.3.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Der Fehler ArrayIndexOutOfBoundsException aus der Slot-Tabelle wurde behoben. (b/249076084)

Version 1.3.0-beta03

21. September 2022

androidx.compose.runtime:runtime-*:1.3.0-beta03 ist veröffentlicht. Version 1.3.0-beta03 enthält diese Commits.

Funktionsgefährdende Verhaltensänderung

  • Der Parameter für remember und rememberCoroutineScope wurde in crossinline geändert. Dadurch wird ein Fehler für vorzeitige Rückgaben gemeldet, anstatt eine vorzeitige Rückgabe zuzulassen, die später zu einem internen Fehler führt.
  • Diese Änderung kann möglicherweise zu neuen Compilerfehlern führen, die gemeldet werden. In diesem Fall müssen die nicht lokalen Rückgaben aus den Lambdas entfernt werden, die an diese Funktionen übergeben werden. (Ibea62)

Version 1.3.0-beta02

7. September 2022

androidx.compose.runtime:runtime-*:1.3.0-beta02 ist veröffentlicht. Version 1.3.0-beta02 enthält diese Commits.

Fehlerkorrekturen

Version 1.3.0-beta01

24. August 2022

androidx.compose.runtime:runtime-*:1.3.0-beta01 ist veröffentlicht. Version 1.3.0-beta01 enthält diese Commits.

API-Änderungen

  • Der Klasse CompositionData wurde eine find-Methode hinzugefügt, damit Entwicklertools, die diese API verwenden, schnell eine Untergruppe einer Komposition anhand ihrer Identität finden können. (I5794f)

Version 1.3.0-alpha03

10. August 2022

androidx.compose.runtime:runtime-*:1.3.0-alpha03 ist veröffentlicht. Version 1.3.0-alpha03 enthält diese Commits.

Version 1.3.0-alpha02

27. Juli 2022

androidx.compose.runtime:runtime-*:1.3.0-alpha02 ist veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.

API-Änderungen

  • ComposerKt.traceEventStart(Int, String) wurde aus Gründen der Abwärtskompatibilität wieder hinzugefügt (I6e6de).

Version 1.3.0-alpha01

29. Juni 2022

androidx.compose.runtime:runtime-*:1.3.0-alpha01 ist veröffentlicht. Version 1.3.0-alpha01 enthält diese Commits.

API-Änderungen

  • Dienstfunktionen in die Laufzeit verschieben (I4f729)

Version 1.2

Version 1.2.1

10. August 2022

androidx.compose.runtime:runtime-*:1.2.1 ist veröffentlicht. Version 1.2.1 enthält diese Commits.

Fehlerkorrekturen

  • Behebung von Speicherlecks: Verschachtelte Snapshots, die aus transparenten Snapshots erstellt wurden, werden verworfen. b/239603305

Version 1.2.0

27. Juli 2022

androidx.compose.runtime:runtime-*:1.2.0 ist veröffentlicht. Version 1.2.0 enthält diese Commits.

Wichtige Änderungen seit 1.1.0

  • In Compose Runtime 1.2.0 wurden einige Funktionen eingeführt und viele Fehler behoben, um die Stabilität zu verbessern. Die wichtigste Neuerung war die Einführung der movableContentOfAPI, mit der sich komplexe UX wie Übergänge zwischen gemeinsamen Elementen ermöglichen lassen. Die movableContentOf API konvertiert eine zusammensetzbare Lambda-Funktion in eine Lambda-Funktion, die ihren Status und die entsprechenden Knoten an einen beliebigen neuen Speicherort verschiebt, an dem sie aufgerufen wird. Wenn der vorherige Aufruf die Komposition verlässt, wird der Status vorübergehend beibehalten. Wenn ein neuer Aufruf des Lambda in die Komposition eingeht, werden der Status und die zugehörigen Knoten an den Ort des neuen Aufrufs verschoben. Wenn kein neuer Anruf hinzugefügt wird, wird der Status dauerhaft entfernt und die Remember-Beobachter werden benachrichtigt.

  • Wenn ein movableContentOf-Lambda mehrmals in derselben Komposition aufgerufen wird, werden für jeden Aufruf neue Status und Knoten erstellt. Wenn Aufrufe die Komposition verlassen und neue Aufrufe eingehen, wird der Status in der Reihenfolge, in der sie aufgerufen werden, von den ersten verlassenen Aufrufen zu den eingehenden Aufrufen verschoben. Alle Status, die nicht durch neue Anrufe beansprucht werden, werden dauerhaft entfernt.

  • Neben dieser und einigen anderen neuen Funktionen wurde viel Zeit darauf verwendet, das Laufzeit- und Snapshot-Status-System zu stabilisieren. Es wurden verschiedene Speicherlecks entfernt und Codepfade optimiert.

  • Eine zusammengefasste Liste der Änderungen finden Sie unten:

Neue Funktionen in 1.2

Leistung in 1.2

Fehlerkorrekturen in 1.2

Version 1.2.0-rc03

29. Juni 2022

androidx.compose.runtime:runtime-*:1.2.0-rc03 ist veröffentlicht. Version 1.2.0-rc03 enthält diese Commits.

Fehlerkorrekturen

  • Abgeleitete Statusbeobachtungen wurden zuvor bedingungslos aus dem Bereich „Recompose“ und der Komposition entfernt, was andere Bereiche beeinträchtigte, in denen der abgeleitete Status möglicherweise noch beobachtet wurde. Durch diese Änderung werden abgeleitete Statusinstanzen nur entfernt, wenn sie nicht mehr von anderen Bereichen beobachtet werden. (b/236618362)

Version 1.2.0-rc02

22. Juni 2022

androidx.compose.runtime:runtime-*:1.2.0-rc02 ist veröffentlicht. Version 1.2.0-rc02 enthält diese Commits.

Version 1.2.0-rc01

15. Juni 2022

androidx.compose.runtime:runtime-*:1.2.0-rc01 ist veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.

API-Änderungen

  • Schnittstellen in Compose-Bibliotheken werden jetzt mit JDK8-Standardmethoden für Schnittstellen erstellt (I5bcf1).

Version 1.2.0-beta03

1. Juni 2022

androidx.compose.runtime:runtime-*:1.2.0-beta03 ist veröffentlicht. Version 1.2.0-beta03 enthält diese Commits.

Version 1.2.0-beta02

18. Mai 2022

androidx.compose.runtime:runtime-*:1.2.0-beta02 ist veröffentlicht. Version 1.2.0-beta02 enthält diese Commits.

Version 1.2.0-beta01

11. Mai 2022

androidx.compose.runtime:runtime-*:1.2.0-beta01 ist veröffentlicht. Version 1.2.0-beta01 enthält diese Commits.

Neue Funktionen

  • Dies ist die erste Betaversion von 1.2.

API-Änderungen

  • Experimentelle Snapshot.unsafeEnter/unsafeLeave wurde hinzugefügt. (I108f3)
  • Experimentelle Snapshot.asContextElement() API wurde hinzugefügt. (Iff072)
  • Die Annotation @ComposableTarget und mit @ComposableTargetMarker gekennzeichnete Annotationen können jetzt mit dem Präfix @file auf Dateiebene verwendet werden. Wenn Sie eine Zielanmerkung auf Dateiebene verwenden, geht der Compiler davon aus, dass alle zusammensetzbaren Funktionen in der Datei auf den zugehörigen Applier ausgerichtet werden sollen. Wenn Sie beispielsweise @file:UiComposable verwenden, wird deklariert, dass alle @Composable-Funktionen auf den Compose-UI-Applier ausgerichtet sind. Eine Funktion, die auf einen anderen Applier ausgerichtet werden muss, muss die Zielmarkierungsanmerkung für den gewünschten Applier explizit angeben. (I40804)

Version 1.2.0-alpha08

20. April 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha08 ist veröffentlicht. Version 1.2.0-alpha08 enthält diese Commits.

API-Änderungen

  • TracingInProgress wurde der CompositionTracer-Schnittstelle hinzugefügt. (Ic6f12)
  • recomposeScopeIdentity zu Composer hinzufügen (I0c873)
  • Eingeschränkte Tracing-APIs (Composer.setTracer) auf OptIn(InternalComposeTracingApi). (I9187f)
  • ResuableContentHost wurde hinzugefügt, um die Lebensdauer des für wiederverwendbare Inhalte erstellten Status besser steuern zu können. Wenn eine untergeordnete Komposition beispielsweise vorübergehend nicht verwendet wird, kann der Inhalt deaktiviert werden. Dadurch wird der gesamte gespeicherte Status in der Komposition vergessen, was beispielsweise alle Einweg-Effekte auslöst. (I2c0f2, b/220322704)

Version 1.2.0-alpha07

6. April 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha07 ist veröffentlicht. Version 1.2.0-alpha07 enthält diese Commits.

API-Änderungen

  • Die neue Funktion Snapshot.withoutReadObservation { ... } wurde hinzugefügt. Damit können Nutzer das übergebene Lambda ausführen, ohne die Änderungen der Statuswerte zu abonnieren, die während dieses Blocks gelesen werden. Das kann in Anwendungsfällen nützlich sein, in denen Sie von den Snapshot-basierten threadsicheren Schreib-/Lesevorgängen profitieren möchten, den Wert aber lesen möchten, ohne unnötige Neukompositionen oder ‑messungen zu verursachen. (I9f365, b/214054486)

Version 1.2.0-alpha06

23. März 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha06 ist veröffentlicht. Version 1.2.0-alpha06 enthält diese Commits.

Version 1.2.0-alpha05

9. März 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha05 ist veröffentlicht. Version 1.2.0-alpha05 enthält diese Commits.

Externer Beitrag

  • Aktualisiert auf Kotlinx-Koroutinen 1.6.0 (I3366d)

Version 1.2.0-alpha04

23. Februar 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha04 ist veröffentlicht. Version 1.2.0-alpha04 enthält diese Commits.

API-Änderungen

  • ComposableTarget, ComposableTargetMarker und ComposableOpenTarget wurden hinzugefügt, um zur Kompilierzeit zu melden, wenn eine zusammensetzbare Funktion für einen Applier aufgerufen wird, für den sie nicht vorgesehen ist.

    In den meisten Fällen können die Anmerkungen vom Compose-Compiler-Plug-in abgeleitet werden. Die direkte Verwendung dieser Anmerkungen sollte daher selten sein. Die Fälle, die nicht abgeleitet werden können, umfassen das Erstellen und Verwenden eines benutzerdefinierten Appliers, abstrakte zusammensetzbare Funktionen (z. B. Schnittstellenmethoden), Felder oder globale Variablen, die zusammensetzbare Lambdas sind (lokale Variablen und Parameter werden abgeleitet), oder wenn ComposeNode oder eine zugehörige zusammensetzbare Funktion verwendet wird.

    Für benutzerdefinierte Applier müssen die zusammensetzbaren Funktionen, die ComposeNode oder ReusableComposeNode aufrufen, eine CompoableTarget-Annotation für die Funktion und alle zusammensetzbaren Lambda-Parametertypen hinzufügen. Es wird jedoch empfohlen, eine Anmerkung zu erstellen, die mit ComposableTargetMarker annotiert ist, und dann die markierte Anmerkung anstelle von ComposableTarget direkt zu verwenden. Eine mit ComposableTargetMarker gekennzeichnete Composable-Annotation entspricht einem ComposbleTarget mit dem voll qualifizierten Namen der Attributklasse als „applier“-Parameter. Ein Beispiel für die Verwendung von ComposableTargetMarker finden Sie unter anroidx.compose.ui.UiComposable. (I38f11)

Version 1.2.0-alpha03

9. Februar 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha03 ist veröffentlicht. Version 1.2.0-alpha03 enthält diese Commits.

API-Änderungen

  • movableContentOf wurde hinzugefügt. Damit wird ein zusammensetzbares Lambda in ein Lambda umgewandelt, das seinen Status und die entsprechenden Knoten an jeden neuen Speicherort verschiebt, an dem es aufgerufen wird. Wenn der vorherige Aufruf die Komposition verlässt, wird der Status vorübergehend beibehalten. Wenn ein neuer Aufruf der Lambda-Funktion in die Komposition eintritt, werden der Status und die zugehörigen Knoten an den Ort des neuen Aufrufs verschoben. Wenn kein neuer Anruf hinzugefügt wird, wird der Status dauerhaft entfernt und die Remember-Beobachter werden benachrichtigt.

    Wenn ein movableContentOf-Lambda mehrmals in derselben Komposition aufgerufen wird, werden für jeden Aufruf neue Status und Knoten erstellt. Wenn Aufrufe die Komposition verlassen und neue Aufrufe eingehen, wird der Status in der Reihenfolge, in der sie aufgerufen werden, von den ersten verlassenen Aufrufen zu den eingehenden Aufrufen verschoben. Alle Status, die nicht durch neue Anrufe beansprucht werden, werden dauerhaft entfernt. (Ib4850)

  • Der Komposition wurde eine Tracing-API hinzugefügt, damit Tools detailliertere Tracing-Informationen zu zusammensetzbaren Funktionen bereitstellen können. Der Compiler generiert jetzt Aufrufe der Tracing API, die Quellinformationen enthalten. (Ib0eb5)

    Wenn Sie diese Aufrufe und die zugehörigen Quellinformationen aus einem Release-Build entfernen möchten, fügen Sie die folgende Proguard-Regel hinzu:

      -assumenosideeffects public class androidx.compose.runtime.ComposerKt {
          boolean isTraceInProgress();
          void traceEventStart(int,java.lang.String);
          void traceEventEnd();
      }
    
  • Fügen Sie InternalComposeScope hinzu, damit Tools ein Composable bei Recompositions identifizieren können. (I07a3f)

Version 1.2.0-alpha02

26. Januar 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha02 ist veröffentlicht. Version 1.2.0-alpha02 enthält diese Commits.

Version 1.2.0-alpha01

12. Januar 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha01 ist veröffentlicht. Version 1.2.0-alpha01 enthält diese Commits.

API-Änderungen

  • Das Feld identity wurde CompositionData hinzugefügt, um im Layout Inspector invariante IDs zu generieren. (Ic116e)

Abhängigkeitsupdates

  • Jetzt hängt von Kotlin 1.6.10 ab.

Version 1.1

Version 1.1.1

23. Februar 2022

androidx.compose.runtime:runtime-*:1.1.1 ist veröffentlicht. Version 1.1.1 enthält diese Commits.

Fehlerkorrekturen

  • Fehler bei NullPointerException in androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList korrigieren (aosp/1947059, b/206677462)
  • Ein Absturz wurde behoben, der durch Zwischenablageinhalte beim Lesen aus der Zwischenablage unter Android verursacht wurde. (I06020, b/197769306)
  • RTL in LazyVerticalGrid korrigiert (aosp/1931080, b/207510535)

Version 1.1.0

9. Februar 2022

androidx.compose.runtime:runtime-*:1.1.0 ist veröffentlicht. Version 1.1.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.0.0

  • Stabile Unterstützung für den Overscroll-Effekt in Android 12
  • Verbesserungen bei der Größe von Berührungszielbereichen
  • Im Vergleich zu Compose 1.0 wird der Layoutbereich von Material-Komponenten erweitert, um die Richtlinien für Bedienungshilfen von Material Design für die Größe von Berührungszielen zu erfüllen. Der Berührungszielbereich einer Schaltfläche wird beispielsweise auf eine Mindestgröße von 48x48dp erweitert, auch wenn Sie die Größe der Schaltfläche kleiner festlegen. So wird Compose Material an das gleiche Verhalten von Material Design-Komponenten angepasst und bietet ein einheitliches Verhalten, wenn Sie Views und Compose mischen. Diese Änderung sorgt auch dafür, dass beim Erstellen der Benutzeroberfläche mit Compose Material-Komponenten die Mindestanforderungen für die Barrierefreiheit von Berührungszielbereichen erfüllt werden.
  • Stabile Unterstützung für Navigation Rail
  • Eine Reihe von zuvor experimentellen APIs wird als stabil eingestuft.
  • Unterstützung für neuere Versionen von Kotlin

Version 1.1.0-rc03

26. Januar 2022

androidx.compose.runtime:runtime-*:1.1.0-rc03 ist veröffentlicht. Version 1.1.0-rc03 enthält diese Commits.

Fehlerkorrekturen

  • Aktualisiert, um Compose Material 1.1.0-rc03 zu unterstützen

Version 1.1.0-rc01

15. Dezember 2021

androidx.compose.runtime:runtime-*:1.1.0-rc01 ist veröffentlicht. Version 1.1.0-rc01 enthält diese Commits.

Version 1.1.0-beta04

1. Dezember 2021

androidx.compose.runtime:runtime-*:1.1.0-beta04 ist veröffentlicht. Version 1.1.0-beta04 enthält diese Commits.

Neue Funktionen

  • Aktualisiert, um mit Kotlin 1.6.0 kompatibel zu sein

Version 1.1.0-beta03

17. November 2021

androidx.compose.runtime:runtime-*:1.1.0-beta03 ist veröffentlicht. Version 1.1.0-beta03 enthält diese Commits.

Version 1.1.0-beta02

3. November 2021

androidx.compose.runtime:runtime-*:1.1.0-beta02 ist veröffentlicht. Version 1.1.0-beta02 enthält diese Commits.

API-Änderungen

  • Der Snapshot-Code wurde in mehrere Dateien aufgeteilt, befindet sich aber weiterhin in derselben JVM-Klasse. (Ic6c98)

Version 1.1.0-beta01

27. Oktober 2021

androidx.compose.runtime:runtime-*:1.1.0-beta01 ist veröffentlicht. Version 1.1.0-beta01 enthält diese Commits.

Version 1.1.0-alpha06

13. Oktober 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha06 ist veröffentlicht. Version 1.1.0-alpha06 enthält diese Commits.

API-Änderungen

  • InternalCompilerApi aus Composer-Methoden entfernt, die modulübergreifend aufgerufen werden müssen (I1aa0b)
  • Recomposer.state wurde eingestellt und durch Recomposer.currentState ersetzt, um den Typ in einen StateFlow zu ändern (Ic2ab3, b/197773820).

Version 1.1.0-alpha05

29. September 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha05 ist veröffentlicht. Version 1.1.0-alpha05 enthält diese Commits.

Version 1.1.0-alpha04

15. September 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha04 ist veröffentlicht. Version 1.1.0-alpha04 enthält diese Commits.

Version 1.1.0-alpha03

1. September 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha03 ist veröffentlicht. Version 1.1.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Der Compose-Compiler unterstützt jetzt ältere Versionen der Compose-Laufzeit (1.0). Vor dieser Änderung war der Compose-Compiler nur mit der Compose-Laufzeit derselben Version oder einer späteren Version kompatibel. Nach dieser Änderung ist der Compose-Compiler mit einer älteren Version der Compose-Laufzeit (1.0) kompatibel. (aosp/1796968)
  • Compose 1.1.0-alpha03 wurde aktualisiert und hängt jetzt von Kotlin 1.5.30 ab. (I74545)

Version 1.1.0-alpha02

18. August 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha02 ist veröffentlicht. Version 1.1.0-alpha02 enthält diese Commits.

Version 1.1.0-alpha01

4. August 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha01 ist veröffentlicht. Version 1.1.0-alpha01 enthält diese Commits.

Version 1.0

Version 1.0.5

3. November 2021

androidx.compose.runtime:runtime-*:1.0.5 ist veröffentlicht. Version 1.0.5 enthält diese Commits.

Fehlerkorrekturen

  • Ein Absturz beim Tracking von „derivedStateOf“-Instanzen wurde behoben. (aosp/1792247)

Version 1.0.4

13. Oktober 2021

androidx.compose.runtime:runtime-*:1.0.4 ist veröffentlicht. Version 1.0.4 enthält diese Commits.

Abhängigkeitsupdates

  • Aktualisiert, um von Kotlin 1.5.31 abhängig zu sein

Version 1.0.3

29. September 2021

androidx.compose.runtime:runtime-*:1.0.3 ist veröffentlicht. Version 1.0.3 enthält diese Commits.

Abhängigkeitsupdates

  • Aktualisiert, um von Kotlin 1.5.30 abhängig zu sein

Version 1.0.2

1. September 2021

androidx.compose.runtime:runtime-*:1.0.2 ist veröffentlicht. Version 1.0.2 enthält diese Commits.

Aktualisiert, um die Compose-Version 1.0.2 zu unterstützen. Compose 1.0.2 ist weiterhin mit Kotlin 1.5.21 kompatibel.

Version 1.0.1

4. August 2021

androidx.compose.runtime:runtime-*:1.0.1 ist veröffentlicht. Version 1.0.1 enthält diese Commits.

Abhängigkeitsupdates

  • Die Abhängigkeit von Kotlin 1.5.21 wurde aktualisiert.

Version 1.0.0

28. Juli 2021

androidx.compose.runtime:runtime-*:1.0.0 ist veröffentlicht. Version 1.0.0 enthält diese Commits.

Wichtige Funktionen von Version 1.0.0

Dies ist die erste stabile Version von Compose. Weitere Informationen finden Sie im offiziellen Compose-Versionsblog.

Bekannte Probleme

  • Wenn Sie Android Studio Bumblebee Canary 4 oder AGP 7.1.0-alpha04/7.1.0-alpha05 verwenden, kann es zu folgendem Absturz kommen:

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    Um das Problem zu beheben, erhöhen Sie vorübergehend die minSdkVersion in der Datei build.gradle auf 24 oder höher. Dieses Problem wird in der nächsten Version von Android Studio Bumblebee und AGP 7.1 behoben. (b/194289155)

Version 1.0.0-rc02

14. Juli 2021

androidx.compose.runtime:runtime-*:1.0.0-rc02 ist veröffentlicht. Version 1.0.0-rc02 enthält diese Commits.

  • Race-Bedingungen in SnapshotStateObserver behoben, die zu sporadischen NullPointerExceptions führten. (aosp/1763445, aosp/1758105, b/192677711)
  • Probleme mit Laufzeit-Snapshots, die zu java.lang.IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied-Abstürzen führten, wurden behoben. (b/193006595, b/192570897)

Version 1.0.0-rc01

1. Juli 2021

androidx.compose.runtime:runtime-*:1.0.0-rc01 ist veröffentlicht. Version 1.0.0-rc01 enthält diese Commits.

Version 1.0.0-beta09

16. Juni 2021

androidx.compose.runtime:runtime-*:1.0.0-beta09 ist veröffentlicht. Version 1.0.0-beta09 enthält diese Commits.

Hinzugefügte Profilregeln

In dieser Version wurden den folgenden Compose-Modulen Profilregeln hinzugefügt (I14ed6):

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.foundation
  • androidx.compose.foundation-layout
  • androidx.compose.material
  • androidx.compose.material-ripple
  • androidx.compose.runtime
  • androidx.compose.ui
  • androidx.compose.ui.geometry
  • androidx.compose.ui.graphics
  • androidx.compose.ui.text
  • androidx.compose.ui.text
  • androidx.compose.ui.unit
  • androidx.compose.ui.util

Was sind Profilregeln?

  • Profilregeln für eine Bibliothek werden in einer Textdatei baseline-prof.txt angegeben, die sich im Verzeichnis src/main oder einem entsprechenden Verzeichnis befindet. In der Datei wird eine Regel pro Zeile angegeben. Eine Regel ist in diesem Fall ein Muster, das mit Methoden oder Klassen in der Bibliothek abgeglichen wird. Die Syntax für diese Regeln ist eine Obermenge des für Menschen lesbaren ART-Profilformats, das bei der Verwendung von adb shell profman --dump-classes-and-methods ... verwendet wird. Diese Regeln können entweder auf Methoden oder auf Klassen ausgerichtet sein.

  • Eine Methodenregel hat das folgende Muster:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • Eine Klassenregel hat das folgende Muster:

    <CLASS_DESCRIPTOR>
    
  • Dabei steht <FLAGS> für ein oder mehrere der Zeichen H, S und P, um anzugeben, ob diese Methode als „Hot“, „Startup“ oder „Post Startup“ gekennzeichnet werden soll.

  • <CLASS_DESCRIPTOR> ist der Deskriptor für die Klasse, zu der die Zielmethode gehört. Die Klasse androidx.compose.runtime.SlotTable hätte beispielsweise den Deskriptor Landroidx/compose/runtime/SlotTable;.

  • <METHOD_SIGNATURE> ist die Signatur der Methode und enthält den Namen, die Parametertypen und die Rückgabetypen der Methode. Die Methode fun isPlaced(): Boolean für LayoutNode hat beispielsweise die Signatur isPlaced()Z.

  • Diese Muster können Platzhalter (**, * und ?) enthalten, damit eine einzelne Regel mehrere Methoden oder Klassen abdeckt.

Was bewirken die Regeln?

  • Eine Methode mit dem Flag H ist eine „heiße“ Methode und sollte im Voraus kompiliert werden.

  • Eine Methode mit dem Flag S wird beim Start aufgerufen und sollte vorab kompiliert werden, um die Kosten für die Kompilierung und Interpretation der Methode beim Start zu vermeiden.

  • Eine Methode mit dem Flag P wird nach dem Start aufgerufen.

  • Eine Klasse, die in dieser Datei vorhanden ist, weist darauf hin, dass sie beim Start verwendet wird und im Heap vorab zugewiesen werden sollte, um die Kosten für das Laden der Klasse zu vermeiden.

So funktioniert's

  • Bibliotheken können diese Regeln definieren, die in AAR-Artefakten enthalten sind. Wenn dann eine App erstellt wird, die diese Artefakte enthält, werden diese Regeln zusammengeführt und die zusammengeführten Regeln werden verwendet, um ein kompaktes binäres ART-Profil zu erstellen, das spezifisch für die App ist. ART kann dieses Profil dann verwenden, wenn die App auf Geräten installiert wird, um ein bestimmtes Subset der Anwendung vorab zu kompilieren und so die Leistung der Anwendung zu verbessern, insbesondere beim ersten Ausführen. Hinweis: Dies hat keine Auswirkungen auf debugfähige Anwendungen.

Version 1.0.0-beta08

2. Juni 2021

androidx.compose.runtime:runtime-*:1.0.0-beta08 ist veröffentlicht. Version 1.0.0-beta08 enthält diese Commits.

API-Änderungen

  • State<T> heißt jetzt State<out T> (I69049)
  • ControlledComposition API-Änderung, um das Neuzusammenstellen von Änderungen in einem einzigen Durchlauf zu ermöglichen. (Iaafd1, b/184173932)

Version 1.0.0-beta07

18. Mai 2021

androidx.compose.runtime:runtime-*:1.0.0-beta07 ist veröffentlicht. Version 1.0.0-beta07 enthält diese Commits.

API-Änderungen

  • Es wurden neue Compose-Compiler-APIs hinzugefügt, mit denen die vom Compiler generierten Quellinformationen während der Quellcode-Minimierung entfernt werden können. (Ia34e6)
  • Führt ReusableContent ein, mit dem versucht wird, die Knoten im Inhalt wiederzuverwenden, anstatt sie zu ersetzen, wenn der Schlüssel geändert wird. Wenn der Schlüssel geändert wird, werden die vorherigen Werte in der Slot-Tabelle für den Inhalt ignoriert, mit Ausnahme der generierten Knoten und der Werte, die zum Aktualisieren der Knoten verwendet wurden.

    Führt ReusableComposeNode ein, bei dem der ausgegebene Knoten wiederverwendet wird, anstatt ihn wie bei ComposeNode zu ersetzen. (I1dd86)

  • @ComposeCompilerApi nicht mehr @RequiresOptIn (Iab690)

Fehlerkorrekturen

  • In LazyColumn/Row bleiben jetzt bis zu zwei zuvor sichtbare Elemente aktiv (werden nicht verworfen), auch wenn sie bereits herausgescrollt wurden. So kann die Komponente die aktiven Unterkompositionen wiederverwenden, wenn ein neues Element zusammengesetzt werden muss. Das verbessert die Scrollleistung. (Ie5555)

Version 1.0.0-beta06

5. Mai 2021

androidx.compose.runtime:runtime-*:1.0.0-beta06 ist veröffentlicht. Version 1.0.0-beta06 enthält diese Commits.

API-Änderungen

  • @ComposeCompilerApi nicht mehr @RequiresOptIn (Iab690)

Version 1.0.0-beta05

21. April 2021

androidx.compose.runtime:runtime-*:1.0.0-beta05 ist veröffentlicht. Version 1.0.0-beta05 enthält diese Commits.

API-Änderungen

  • @InternalComposeApi für das Lesen und Schreiben von Aufzeichnungssnapshots entfernt (Id134d)

Fehlerkorrekturen

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

Version 1.0.0-beta04

7. April 2021

androidx.compose.runtime:runtime-*:1.0.0-beta04 ist veröffentlicht. Version 1.0.0-beta04 enthält diese Commits.

Fehlerkorrekturen

  • Vor dieser Änderung konnten lokale zusammensetzbare Funktionen basierend auf ihren Parametern übersprungen werden. Nach dieser Änderung werden keine lokalen zusammensetzbaren Funktionen mehr übersprungen. Diese Änderung wurde vorgenommen, weil es üblich und zu erwarten ist, dass lokale Funktionen Parameter vom übergeordneten Element erfassen. Das Überspringen von Parametern ist eine häufige Fehlerquelle.

    Zusammenfassend lässt sich das anhand des folgenden Beispiels veranschaulichen:

    @Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) {
      @Composable fun ShowCount() { Text("Count: $count") }
      ShowCount()
      Button(onClick={ onCountChange(count + 1) }) {
        Text("Increment")
      }
    }
    

    Vor dieser Änderung wurde die zusammensetzbare Funktion ShowCount immer übersprungen, auch nachdem der Parameter count aktualisiert wurde. Diese Änderungen haben wir jedoch nicht vorgenommen (I5648a)

  • Das Problem wurde behoben, bei dem rememberSaveable() den alten Wert wiederhergestellt hat, wenn es mit Eingabeparametern verwendet wurde (I1b110, b/182403380).

Version 1.0.0-beta03

24. März 2021

androidx.compose.runtime:runtime-*:1.0.0-beta03 ist veröffentlicht. Version 1.0.0-beta03 enthält diese Commits.

API-Änderungen

  • DefaultMonotonicFrameClock wurde verworfen. Wenn Sie withFrameNanos oder Recomposer.runRecomposeAndApplyChanges ohne MonotonicFrameClock aufrufen, wird jetzt IllegalStateException ausgegeben. (I4eb0d)

Version 1.0.0-beta02

10. März 2021

androidx.compose.runtime:runtime-*:1.0.0-beta02 ist veröffentlicht. Version 1.0.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • Einschränkungen für die öffentliche Nutzung experimenteller APIs erzwingen (I6aa29, b/174531520)
  • Es wurde ein Fehler behoben, der auftrat, wenn rememberSaveable { mutableStateOf(0) } in einem Ziel von „navigation-compose“ verwendet wurde. (I1312b, b/180042685, b/180701630)

Version 1.0.0-beta01

24. Februar 2021

androidx.compose.runtime:runtime-*:1.0.0-beta01 ist veröffentlicht. Version 1.0.0-beta01 enthält diese Commits.

Dies ist die erste Version von Compose 1.0.0 Beta.

API-Änderungen

  • Fügen Sie Recomposer.runRecomposeConcurrentlyAndApplyChanges hinzu, um eine experimentelle API zum Neuzusammenstellen ungültiger Kompositionen außerhalb der Haupt-Frame-Schleife zu verwenden. (I342d0)
  • Alle Composables, die mit @ReadOnlyComposable gekennzeichnet sind, werden jetzt zur Kompilierzeit validiert, um sicherzustellen, dass sie nur andere @ReadOnlyComposables aufrufen (I58961).
  • Die defaultFactory für compositionLocalOf und staticCompositionLocalOf ist jetzt erforderlich und nicht mehr optional.

    Durch diese Änderung wird ein potenzieller Typfehler für nicht nullable Typen entfernt, für die keine Standardfactory angegeben wurde. Bisher wurde dadurch eine Nullreferenz für einen Typ ohne Nullwerte bereitgestellt.

    Für Typen mit zulässigen Nullwerten sollten Sie { null } als Standard-Factory angeben.

    Wir raten davon ab, lokale Variablen mit nicht nullable-Typen zu verwenden, es sei denn, es kann ein sinnvoller Standardwert angegeben werden. Wenn kein sinnvoller Standardwert vorhanden ist, sollte die Lambda-Funktion defaultFactory eine Ausnahme auslösen. Wenn jedoch eine Ausnahme ausgelöst wird, haben die Nutzer des Lokals eine implizite Abhängigkeit davon, dass es bereitgestellt wird, die nicht vom Typsystem erzwungen wird. (Ifbd2a)

  • Veraltete Symbole wurden aus der Compose-Laufzeit entfernt (I3252c)

  • Die eingestellte Funktion emptyContent() wurde entfernt. Verwenden Sie stattdessen {}. (Idb33f, b/179432510)

  • „Providers“ wurde in „CompositionLocalProvider“ umbenannt.

    • Der Composition-Konstruktor akzeptiert keinen Schlüsselparameter mehr und wurde eingestellt.
    • „currentCompositeKeyHash“ ist jetzt eine zusammensetzbare Property der obersten Ebene anstelle einer zusammensetzbaren Funktion der obersten Ebene.
    • „CompositionData“ und „CompositionGroup“ wurden in den Namespace „androidx.compose.runtime.tooling“ verschoben.
    • ComposableLambda ist jetzt eine Schnittstelle anstelle einer konkreten Klasse und hat keine Typparameter mehr.
    • ComposableLambdaN ist jetzt eine Schnittstelle anstelle einer konkreten Klasse und hat keine Typparameter mehr.
    • Die Funktion „snapshotFlow“ wurde in den Namespace „androidx.compose.runtime“ verschoben.
    • Die Zusammenführungsmethode von SnapshotMutationPolicy ist nicht mehr experimentell.
    • Die Funktion „clearRoots“ auf oberster Ebene mit dem Hinweis „@TestOnly“ wurde entfernt. Das ist nicht mehr erforderlich.
    • Die Funktionen „keySourceInfoOf“ und „resetSourceInfo“ wurden entfernt. Sie sind nicht mehr erforderlich.
    • Composer.collectKeySourceInformation wurde entfernt. Das ist nicht mehr erforderlich.
    • Die Methoden „isJoinedKey“, „joinedKeyLeft“ und „joinedKeyRight“ wurden entfernt. Sie sind nicht mehr erforderlich.
    • Verschiedene APIs der obersten Ebene wurden verschoben und in verschiedenen Dateien neu organisiert. Aufgrund der Dateiklassensemantik von Kotlin wird die binäre Kompatibilität, nicht aber die Quellkompatibilität beeinträchtigt. Das sollte für die meisten Nutzer kein Problem darstellen.
    • (I99b7d, b/177245490)
  • SnapshotStateObserver ist nicht mehr experimentell (Id2e6a)

  • Einige zuvor verworfene APIs wurden gelöscht (Ice5da, b/178633932).

  • Die folgenden Änderungen an der Material API wurden vorgenommen:

    • Der Parameter „contentPadding“ wurde der Top/BottomAppBar hinzugefügt, um das Anpassen des Standardabstands zu ermöglichen.
    • Die Parameter in „BackdropScaffold“ wurden neu angeordnet, um den API-Richtlinien zu entsprechen, nach denen erforderliche Parameter vor optionalen Parametern stehen.
    • Der Parameter icon in BottomNavigationItem wurde nach selected und onClick verschoben.
    • Der Parameter alwaysShowLabels in BottomNavigationItem wurde in alwaysShowLabel umbenannt.
    • Die bodyContent-Parameter in einigen Komponenten wurden in content umbenannt.
    • Die Parameter in ButtonDefaults.buttonColors() wurden neu angeordnet. Da sich der Typ der Parameter nicht geändert hat, führt dies nicht zu einem Fehler in Ihrem Code. Achten Sie jedoch darauf, dass Sie entweder benannte Parameter verwenden oder die Reihenfolge manuell aktualisieren, da Ihr Code sonst nicht wie zuvor funktioniert.
    • Der Parameter secondaryVariant wurde zu darkColors() hinzugefügt. Diese Farbe ist in der Regel dieselbe wie secondary im dunklen Design, wird aber zur Konsistenz und für weitere Anpassungen hinzugefügt.
    • ElevationDefaults und animateElevation() wurden aus der öffentlichen API entfernt, da sie nicht häufig verwendet wurden.
    • onValueChangeEnd in Slider wurde in onValueChangeFinished umbenannt und als „nullable“ festgelegt.
    • Der Parameter text in Snackbar wurde aus Konsistenzgründen in content umbenannt.
    • Der Parameter contentPadding wurde zu DropdownMenuItem hinzugefügt, um das Anpassen des Standardabstands zu ermöglichen. Außerdem ist content jetzt eine Erweiterung von RowScope.
    • ModalDrawerLayout wurde in ModalDrawer umbenannt.
    • BottomDrawerLayout wurde in BottomDrawer umbenannt.
    • (I1cc66)

Version 1.0.0-alpha12

10. Februar 2021

androidx.compose.runtime:runtime-*:1.0.0-alpha12 ist veröffentlicht. Version 1.0.0-alpha12 enthält diese Commits.

API-Änderungen

  • Die Unterstützung für ViewGroups wurde aus UiApplier entfernt. Die eingestellten emitView-Composables wurden entfernt. (Ifb214)
  • CompositionReference in CompositionContext umbenannt (I53fcb)
  • ComponentActivity.setContent wurde in das Modul androidx.activity:activity-compose verschoben und befindet sich jetzt unter androidx.activity.compose.setContent. (Icf416)
  • Die Snapshot API wurde aktualisiert, um den API-Richtlinien besser zu entsprechen. Außerdem werden interne Implementierungsklassen in der öffentlichen API ausgeblendet. (Id9e32)
  • Umbenennung von „Ambients“ entsprechend der Umbenennung von „Ambient“ -> „CompositionLocal“. Ambients hießen früher „AmbientFoo“, jetzt heißen CompositionLocals „LocalFoo“. (I2d55d)
  • „Ambient“ wurde in „CompositionLocal“ und „ambientOf“ / „staticAmbientOf“ in „compositionLocalOf“ / „staticCompositionLocalOf“ umbenannt. Durch diese Änderung wird der Zweck von CompositionLocal deutlicher: ein Mechanismus zum Bereitstellen / Abrufen von Werten, die für eine Komposition lokal sind. CompositionLocal-Instanzen sollten mit Local beginnen, z. B. val LocalFoo = compositionLocalOf { Foo() }. (Ia55b6)
  • takeMutableSnapshot und takeSnapshot sind jetzt Companion-Methoden von Snapshot. (I91f19)
  • @ComposableContract wurde zugunsten von drei spezifischeren Anmerkungen eingestellt.

    @ComposableContract(restartable = false) wurde zu @NonRestartableComposable. @ComposableContract(readonly = true) wurde zu @ReadOnlyComposable. @ComposableContract(preventCapture = true) wurde zu @DisallowComposableCalls. @ComposableContract(tracked = true) wurde entfernt. (I60a9d)

  • Die Hilfsfunktionen „emptyContent()“ und „(@Composable () -> Unit).orEmpty()“ sind veraltet, da sie keine positiven Auswirkungen auf die Leistung mehr haben (I0484d).

  • snapshotFlow und withMutableSnapshot sind nicht mehr experimentell (I6a45f)

  • Recomposers können jetzt geschlossen werden. Geschlossene Recomposers führen die Recomposition so lange fort, bis die untergeordneten Coroutinen der Komposition abgeschlossen sind. „Recomposer.shutDown“ wurde in „cancel“ umbenannt, um es von „close“ abzugrenzen. (Ib6d76)

  • Das Artefakt compose:runtime-dispatch wird nicht mehr unterstützt. MonotonicFrameClock befindet sich jetzt in compose:runtime und AndroidUiDispatcher in compose:ui. (Ib5c36)

  • Die API, auf die das Compose-Compiler-Plug-in ausgerichtet ist, wurde umgestaltet, sodass jetzt eine Schnittstelle anstelle einer konkreten Klasse verwendet wird. Die Schnittstelle verwendet auch keinen Typparameter mehr.

    Dies ist eine interne Änderung, die sich nicht auf die Quellcodekompatibilität auswirken sollte, aber eine binäre funktionsgefährdende Änderung ist. (I3b922, b/169406779)

  • SnapshotMutableState wurde eingeführt (Icfd03)

  • „DisposableEffectDisposable“ wurde in „DisposaleEffectResult“ umbenannt (Ica7c6)

  • „Recomposer.current()“ wurde entfernt. [Abstract]ComposeView verwendet jetzt standardmäßig Recomposers, die lazy erstellt werden und auf das Fenster beschränkt sind. Sie werden vom ViewTreeLifecycleOwner für das Fenster gesteuert. Die Neukomposition und auf „withFrameNanos“ basierende Animations-Ticks werden pausiert, wenn der Host-Lebenszyklus beendet wird. (I38e11)

  • Recomposer.runningRecomposers bietet jetzt einen globalen StateFlow von schreibgeschützten RecomposerInfo-Objekten, mit denen der laufende Kompositionsstatus im Prozess beobachtet werden kann. Diese API sollte gegenüber Recomposer.current() bevorzugt werden, da diese jetzt eingestellt ist. (If8ebe)

  • „DisposableEffectDisposable“ wurde in „DisposaleEffectResult“ umbenannt (I3ea68).

Version 1.0.0-alpha11

28. Januar 2021

androidx.compose.runtime:runtime-*:1.0.0-alpha11 ist veröffentlicht. Version 1.0.0-alpha11 enthält diese Commits.

API-Änderungen

  • „onCommit“, „onDispose“ und „onActive“ wurden zugunsten der APIs „SideEffect“ und „DisposableEffect“ eingestellt (If760e).
  • Die emit()-API und alle Überladungen wurden eingestellt und in ComposeNode umbenannt. Die APIs sind identisch, nur der Name ist anders, um den Namenskonventionen von Compose zu entsprechen (I4137b).
  • invalidate und compositionReference() sind jetzt zugunsten von currentRecomposeScope bzw. rememberCompositionReference veraltet. (I583a8)
  • RememberObserver ersetzt CompositionLifecycleObserver und CompositionLifecycleObserver ist jetzt veraltet.

    RememberObserver ist ein Ersatz für CompositionLifecycleObserver mit geänderter Semantik und umbenannten Methoden. Die Umstellung auf die neue API kann mechanisch für Objekte erfolgen, die nur einmal gespeichert werden. Das ist und bleibt die empfohlene Vorgehensweise. Wenn sich eine Referenz jedoch mehrmals in einer Komposition befindet, wird onRemembered für jede Referenz aufgerufen, während onEnter nur einmal aufgerufen wird. onEnter wurde mehrmals aufgerufen, wenn das Objekt in untergeordneten Kompositionen wie WithConstraints und Scaffold verwendet wurde. Dadurch war die Garantie für einen einzelnen onEnter-Aufruf nicht zuverlässig und wurde für RememberObserver entfernt.

    RememberObserver fügt onAbandoned hinzu, das aufgerufen wird, wenn die RememberObserver-Instanz aus dem Callback zurückgegeben wird, der an remember übergeben wurde, aber nicht im Kompositionsstatus gespeichert wurde und daher nie onRemembered aufgerufen wird. Das kann passieren, wenn die Komposition aufgrund einer Ausnahme vorzeitig beendet wird oder wenn die Komposition verworfen wird, weil der Status, für den sie erstellt wurde, nicht mehr aktuell oder anderweitig nicht mehr erforderlich ist. Wenn die Instanz von RememberObserver, die der Empfehlung für Einzelverweise oben folgt, eine externe Ressource verfolgt, geben sowohl onForgotten als auch onAbandoned an, dass die Ressource nicht mehr benötigt wird. Wenn das Objekt die in onRemembered begonnene Arbeit oder zugewiesene Ressourcen verfolgt, kann onAbandoned ignoriert werden, da es nicht aufgerufen wird, wenn onRemembered aufgerufen wird. (I02c36)

  • collectAsState()-Funktionen nicht als Inline markieren (Ia73e4)

Fehlerkorrekturen

  • WithConstraints wurde als BoxWithConstraints überarbeitet und nach foundation.layout verschoben. (I9420b, b/173387208)
  • TestCoroutineDispatcher in Tests verwenden (I532b6)

Version 1.0.0-alpha10

13. Januar 2021

androidx.compose.runtime:runtime-*:1.0.0-alpha10 ist veröffentlicht. Version 1.0.0-alpha10 enthält diese Commits.

Funktionsgefährdende Änderung

  • Durch die Umstrukturierung der internen Compiler-API können Änderungen an den Knoten, die als Ergebnis der Komposition generiert werden, in der Phase „apply changes“ (Änderungen anwenden) der Komposition zusammengefasst werden, nachdem alle @Composable-Funktionen abgeschlossen sind.

    Dies ist eine Verhaltensänderung, die sich auf Anwendungscode auswirken kann, da Knoten erst nach der Anwendung von Änderungen über interne und experimentelle APIs verfügbar sind. In der Regel lässt sich das Problem umgehen, indem Sie Code mit solchen Abhängigkeiten in einer SideEffect-Composable umschließen, um die Ausführung des Codes aufzuschieben, bis die Knoten erstellt und initialisiert wurden. (I018da)

API-Änderungen

  • Es wurde eine Möglichkeit hinzugefügt, um zu verfolgen, ob der Recomposer Änderungen angewendet hat. (I1b3e2)
  • Erweitern Sie die [Abstract]ComposeView-APIs, um das Wiederverwenden von Compose-basierten Ansichten zu ermöglichen. Dabei wird die Komposition verworfen, um sie später neu zu erstellen. APIs zum Installieren und Erkennen von Recomposern mit Fensterbereich und CompositionReferences zum Erstellen von untergeordneten Kompositionen hinzugefügt.

    Fügen Sie ViewCompositionStrategy hinzu, um die Strategie für die Kompositionsentsorgung von [Abstract]ComposeViews zu konfigurieren. Das Standardverhalten ist die Entsorgung beim Trennen des Fensters. (I860ab)

Fehlerkorrekturen

  • Recomposer stellt jetzt einen Flow seines aktuellen Status zur Verfügung, sodass seine Aktivität und die Aktivität zugehöriger Effekte überwacht werden können. (Ifb2b9)
  • Auf das native „keyEvent“ kann jetzt über „keyEvent.nativeKeyEvent“ zugegriffen werden (I87c57, b/173086397).

Version 1.0.0-alpha09

16. Dezember 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha09 ist veröffentlicht. Version 1.0.0-alpha09 enthält diese Commits.

API-Änderungen

  • SlotTable, SlotReader und SlotWriter wurden aus der öffentlichen API entfernt. Diese wurden zuvor als „InternalComposeAPI“ markiert. Sie sind jetzt intern im Compose-Modul.

    CompositionData und CompositionGroup wurden als Ersatz für die ui-tooling API hinzugefügt, um Kompositionsinformationen zu extrahieren. Diese sind öffentlich, aber nicht für die Verwendung außerhalb der UI-Tooling API vorgesehen, da sie die Rohinformationen liefern, die die UI-Tooling API interpretiert (I31a9c).

  • Die Applier-Klasse wird nicht mehr als (Id85b0) betrachtet.

  • Die Applier-Schnittstelle wurde geändert, um das Erstellen von Bäumen von unten nach oben statt von oben nach unten zu vereinfachen.

    Die Methode insert() wurde in insertTopDown() umbenannt.

    Die neue Methode insertBottomUp() wurde hinzugefügt.

    Ein Applier fügt Knoten in den Baum ein, den er bearbeitet, indem er je nach Leistung insertTopDown() oder insertBottomUp() verwendet.

    Einige Bäume, z. B. LayoutNode und View, lassen sich viel effizienter von unten nach oben als von oben nach unten erstellen. Vor dieser Änderung war ein Stapel von Einfügungen erforderlich, um die Bottom-up-Methode zu implementieren. Dieser musste in jeden Applier kopiert werden, der eine Bottom-up-Konstruktion für die Leistung benötigte. Mit dieser Änderung wird Applier durch insertBottomUp() überschrieben, um einen Baum von unten nach oben zu erstellen, und insertTopDown(), um den Baum von oben nach unten zu erstellen. (Icbdc2)

  • Compose unterstützt Property-Getter, die Aufrufe von Composables ermöglichen. Die Unterstützung dafür wird nicht eingestellt, aber die Syntax zum Deklarieren eines Property-Getters als @Composable ändert sich.

    Die jetzt eingestellte Syntax dafür bestand darin, das Attribut selbst zu kommentieren:

        @Composable val someProperty: Int get() = ...
    

    Die korrekte Syntax dafür ist jetzt, den Getter der Property zu annotieren:

       val someProperty: Int @Composable get() = ...
    

    Beide Syntaxen funktionieren noch eine Weile, aber die eingestellte Syntax führt schließlich zu einem Kompilierungsfehler. (Id9197)

Fehlerkorrekturen

Version 1.0.0-alpha08

2. Dezember 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha08 ist veröffentlicht. Version 1.0.0-alpha08 enthält diese Commits.

API-Änderungen

  • Es wurde eine Lint-Prüfung für die Benennung und Position von zusammensetzbaren Lambda-Parametern hinzugefügt, um die Einhaltung der Compose-Richtlinien zu prüfen. Außerdem wurden einige APIs, die children als Namen für ihr nachgestelltes Lambda verwenden, gemäß dem Lint-Check und der Anleitung zu content migriert. (Iec48e)
  • Recomposer akzeptiert keinen EmbeddingContext mehr. Erforderliche Planungsabhängigkeiten werden aus dem effectCoroutineContext abgerufen. FrameManager ist veraltet. Plattformintegrationen sollten ihre eigene globale Snapshot-Verarbeitung initialisieren. (I02369)
  • Die Funktion „RestorableStateHolder.withRestorableState“ wurde in „RestorableStateProvider“ umbenannt (I66640).

Fehlerkorrekturen

  • Wir haben die verworfenen Ambients mit dem Suffix Ambient ersetzt und neue Eigenschaften mit dem Präfix „Ambient“ eingeführt, die den Richtlinien für andere Ambients und die Compose API entsprechen. (I33440)
  • Altes ui-test-Modul und zugehörige Stubs entfernen (I3a7cb)

Version 1.0.0-alpha07

11. November 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha07 ist veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.

Neue Funktionen

API-Änderungen

  • Die Anmerkung „@UnionType“ wurde eingestellt (I57cde)
  • „provideDefault“ wurde als Alternative zu „provide“ zum Bereitstellen von Umgebungen hinzugefügt. Damit können Sie Umgebungswerte angeben, die nur festgelegt werden, wenn noch kein Umgebungswert vorhanden ist. (Id6635, b/171024925)
  • „LaunchedTask“ wurde aus Konsistenzgründen mit den APIs „SideEffect“ und „DisposableEffect“ in „LaunchedEffect“ umbenannt. LaunchedEffect ohne Subjektparameter ist nicht zulässig, um Best Practices zu fördern. (Ifd3d4)
  • „Applier“ hat jetzt die Callbacks „onBeginChanges“/„onEndChanges“, die aufgerufen werden, wenn ein Composer mit dem Anwenden von Änderungen am Baum beginnt bzw. damit fertig ist. Diese können bei Bedarf für die Batchverarbeitung der Ressourcenverwaltung verwendet werden. (Icf476)
  • Recomposer erfordert jetzt beim Erstellen einen CoroutineContext (Ic4610)
  • Änderungen an der internen SlotTable-Implementierung, die sich nicht auf die öffentliche API auswirken sollten. (If9828)
  • Die veralteten rxjava2-Adapter, die den Anfangswert nicht berücksichtigen, wurden entfernt (Idb72f).

Fehlerkorrekturen

  • foundation.Text wurde eingestellt und durch material.Text ersetzt. Eine einfache Text-API, die keine Werte aus einem Theme verwendet, finden Sie unter androidx.compose.foundation.BasicText. (If64cb)
  • BaseTextField ist veraltet. Verwenden Sie stattdessen „BasicTextField“. (I896eb)
  • Mehrere layoutbezogene Symbole wurden von androidx.compose.ui nach androidx.compose.layout.ui verschoben. (I0fa98, b/170475424)

Externer Beitrag

  • Das Modul runtime-rxjava3 wurde für das Verfassen hinzugefügt. Ähnlich wie runtime-rxjava2 (I02cbf)

Version 1.0.0-alpha06

28. Oktober 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha06 ist veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.

API-Änderungen

  • „Recomposer“ ist jetzt eine „CompositionReference“ und ein gültiges übergeordnetes Element für die Komposition. Der explizite Recomposer ist jetzt an weniger Stellen erforderlich. (I4036f)
  • Es wurde eine DisposableEffect-Counterpart-API für SideEffect hinzugefügt, die die Rolle von onCommit-with-params übernimmt, aber ein erforderliches onDispose hat.
    • Die API „rememberUpdatedState“ wurde hinzugefügt, um Daten aus der Neukomposition in laufenden oder langlebigen Prozessen wie „DisposableEffects“ oder „LaunchedTasks“ zu veröffentlichen.
    • (Id50b9)
  • MutableVector implementiert jetzt RandomAccess (I85d73, b/170461551)
  • Die zusammensetzbare Funktion „SideEffect“ wurde hinzugefügt, um Nebeneffekte der Komposition auf Objekte anzuwenden, die von der Komposition verwaltet werden. SideEffect soll die kombinierbare Funktion onCommit ersetzen. (Ia77c2)
  • Neue experimentelle API „RestorableStateHolder“ Damit kann der mit [savedInstanceState] und [rememberSavedInstanceState] definierte Zustand für den Unterbaum gespeichert werden, bevor er verworfen wird. So kann er beim nächsten Mal mit dem wiederhergestellten Zustand neu zusammengesetzt werden. (I66884, b/166586419)

Fehlerkorrekturen

  • Übergänge in ComposeTestRule aktivieren; Option zum Aktivieren des blinkenden Cursors aus ComposeTestRule entfernen. (If0de3)

Version 1.0.0-alpha05

14. Oktober 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha05 ist veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.

API-Änderungen

  • Experimenteller Modifier.pointerInput-Modifier für das Anhalten von Eingaben (Ia77d2)
  • Die Scrollleistung von LazyColumn/Row wird verbessert, indem bei jedem Scrollvorgang weniger Arbeit in der Unterkomposition ausgeführt wird. Für die Klasse „Composition“ wurde die neue Methode „hasInvalidations()“ hinzugefügt. Die Methode „hasPendingChanges()“ aus „Recomposer“ wurde in „hasInvalidations()“ umbenannt (Ib2f32, b/168293643, b/167972292, b/165028371).
  • Die API „produceState“ wurde hinzugefügt, um Coroutinen aus der Komposition heraus zu starten, die einen einzelnen State<T>-Wert im Laufe der Zeit aktualisieren (Id4a57).
  • „launchInComposition“ wurde in „LaunchedTask“ umbenannt, um den Compose-API-Richtlinien zu entsprechen (I99a8e).
  • Die Reihenfolge der place()-Aufrufe in benutzerdefinierten Layouts bestimmt jetzt die Zeichenreihenfolge für die untergeordneten Elemente (Ibc9f6).

Version 1.0.0-alpha04

1. Oktober 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha04 ist veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.

API-Änderungen

  • „OwnerScope“ wurde hinzugefügt, um die Erfassung von Beobachtungsbereichen für Layout und Zeichnung zu ermöglichen, sobald sie nicht mehr gültig sind. (Ic4cf8)
  • Die API „derivedStateOf“ wurde hinzugefügt, um State-Objekte auf Grundlage einer Berechnung zu erstellen, bei der andere State-Objekte gelesen und abgeleitet werden können (If758b).
  • TestOnly-API für SnapshotStateObserver hinzugefügt (I6e2a9)

Fehlerkorrekturen

  • foundation.Box wurde eingestellt. Verwenden Sie stattdessen foundation.layout.Box. (Ie5950, b/167680279)

Version 1.0.0-alpha03

16. September 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha03 ist veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.

API-Änderungen

  • CompositionCoroutineScope implementiert MonotonicFrameClock nicht mehr. Aufrufer von withFrameNanos sollten die Funktion auf oberster Ebene explizit importieren. (Icb642, b/166778123)

Fehlerkorrekturen

  • Globale Testfunktionen wie onNode oder waitForIdle sind jetzt veraltet. Migrieren Sie zu den neuen Entsprechungen, die in ComposeTestRule definiert sind (I7f45a).
  • launchInComposition startet keine nicht zugewiesenen Coroutinen mehr (Ief6af, b/166486000)

Version 1.0.0-alpha02

2. September 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha02 ist veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.

API-Änderungen

  • snapshotFlow- und withMutableSnapshot-APIs zum Abrufen und Erstellen von Snapshot-Datenänderungen hinzugefügt. (I3e722)
  • Die Aufrufkonvention für zusammensetzbare Funktionen hat sich geändert. Dies ist eine binäre funktionsgefährdende Änderung. Alle Bibliotheken müssen neu kompiliert werden, damit sie mit dieser Version des Compose-Compiler-Plug-ins funktionieren.

    Diese Änderung führt nicht zu einem Quellcode-Breaking Change, da nur Compiler-APIs geändert wurden, für die eine explizite Einwilligung erforderlich ist. (I7afd2, b/158123185)

  • Planungsmethoden aus EmbeddingContext entfernt (I7b9be)

  • onPreCommit ist veraltet. onCommit hat jetzt das Verhalten von onPreCommit.

    „onCommit“ und „onActive“ werden jetzt im selben Choreographer-Frame ausgeführt, in dem die Änderungen an der Komposition übernommen werden, und nicht am Anfang des nächsten Choreographer-Frames. (I70403)

Version 1.0.0-alpha01

26. August 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha01 ist veröffentlicht. Version 1.0.0-alpha01 enthält diese Commits.

Version 0.1.0-dev

Version 0.1.0-dev17

19. August 2020

androidx.compose.runtime:runtime-*:0.1.0-dev17 ist veröffentlicht. Version 0.1.0-dev17 enthält diese Commits.

API-Änderungen

  • Bei benutzerdefinierten Emits kann jetzt deklariert werden, dass einer oder mehrere Setter übersprungen und unabhängig vom Emit neu zusammengesetzt werden können. (Ibbd13)
  • Nicht mehr unterstützte FrameManager-Aufrufe wurden entfernt.

    Interne Compose-APIs wurden geändert, um den Aufwand für die Nachverfolgung von Statusobjekten wie mutableStateof() (I80ba6) zu reduzieren.

  • Die zusammensetzbare Funktion state { ... } wird jetzt zugunsten expliziter Aufrufe von remember { mutableStateOf(...) } eingestellt, um die Übersichtlichkeit zu verbessern. Dadurch wird die gesamte API-Oberfläche und die Anzahl der Konzepte für die Statusverwaltung reduziert und entspricht dem by mutableStateOf()-Muster für die Delegierung von Klasseneigenschaften. (Ia5727)

  • Bei Flow.collectAsState wird der Standard-Dispatcher jetzt aus der Komposition selbst abgeleitet, anstatt standardmäßig Dispatchers.Main zu verwenden. (I9c1d9)

  • Ein Absturz, der auftrat, wenn in der For-Schleife etwas verwendet wurde, das den Status speichert, wurde behoben. Jetzt ist es zulässig, denselben Schlüssel in savedInstanceState() zu haben. Die API von UiSavedStateRegistry wurde an diese neue Anforderung angepasst (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561).

Fehlerkorrekturen

  • emitView wurde eingestellt. Verwenden Sie nach Möglichkeit AndroidView, um Views in Compose auszugeben. Das direkte Erstellen von Ansichten und Ansichtsgruppen wird in Zukunft nicht mehr unterstützt, es sei denn, es handelt sich um Blätter im Kompositionsbaum. In diesem Fall kann dies mit AndroidView erreicht werden. (I29b1e, b/163871221)

Version 0.1.0-dev16

5. August 2020

androidx.compose.runtime:runtime-*:0.1.0-dev16 ist veröffentlicht. Version 0.1.0-dev16 enthält diese Commits.

API-Änderungen

  • Die Standardrichtlinie für Mutationen von mutableStateOf(), ambientOf() und savedInstanceStateOf() wurde von referentialEqualityPolicy() in structuralEqualityPolicy() geändert.

    Die Standardeinstellung für die Entscheidung, ob ein neuer Wert, der einer mutableStateOf()-Instanz zugewiesen wird, als Änderung betrachtet wird, ist jetzt == anstelle von ===.

    Weitere Informationen finden Sie unter https://kotlinlang.org/docs/reference/equality.html.

    ambientOf() und savedInstanceStateOf() verwenden mutableStateOf() in ihren Implementierungen. Daher wurden sie geändert, um mit mutableStateOf() konsistent zu sein.

    Die Verwendung der strukturellen Gleichheit entspricht eher den Erwartungen von Entwicklern.

    Beispiel:

    val state = mutableStateOf(1f)
    

    gefolgt von

    state.value = 1f
    

    wird nicht mehr als Änderung an state betrachtet und die Verwendung von state während der Komposition muss nicht mehr neu zusammengesetzt werden.

    Dies ist eine wichtige Änderung, die in den meisten Fällen (z. B. bei Verwendung von Klassen, die equals() nicht überschreiben) keine spürbaren Auswirkungen auf eine Anwendung hat.

    Bei Klassen, die equals() überschreiben, z. B. data-Klassen, kann es zu Leistungseinbußen kommen, da ihre equals()-Methoden jetzt standardmäßig aufgerufen werden, wenn sie einer mutableStateOf() zugewiesen sind.

    Das vorherige Verhalten kann wiederhergestellt werden, indem Sie den Richtlinienparameter policy = referentialEqualityPolicy() zu Aufrufen von mutableStateOf(), ambientOf() und savedInstanceStateOf() hinzufügen. (Ic21a7)

  • Row und Column sind jetzt Inline-Funktionen, wodurch der Aufwand für die Verwendung deutlich reduziert wird. (I75c10)

Fehlerkorrekturen

  • setViewContent wurde eingestellt. Verwenden Sie stattdessen setContent. (I7e497, b/160335130)
  • MonotonicFrameAnimationClock wurde hinzugefügt. Damit können Sie eine MonotonicFrameClock als AnimationClockObservable verwenden, um die Lücke zwischen den neuen auf Coroutinen basierenden Taktgebern und APIs zu schließen, die weiterhin die alten auf Callbacks basierenden Taktgeber verwenden.

    Die MonotonicFrameClock-Entsprechung von ManualAnimationClock ist jetzt ManualFrameClock. (I111c7, b/161247083)

  • Modifier.stateDraggable wurde vollständig überarbeitet und in Modifier.swipeable umbenannt. Es wurde eine neue SwipeableState-Klasse eingeführt und DrawerState und BottomDrawerState wurden so umgestaltet, dass sie von ihr erben. [Modal/Bottom]DrawerLayout akzeptiert keinen onStateChange-Parameter mehr. (I72332, b/148023068)

  • „Modifier.plus“ wurde eingestellt. Verwenden Sie stattdessen „Modifier.then“. „Dann“ ist ein stärkeres Signal für die Reihenfolge und verhindert gleichzeitig die Eingabe von Modifier.padding().background() + anotherModifier, was die Kette unterbricht und das Lesen erschwert (Iedd58, b/161529964).

  • SubcomposeLayout wurde hinzugefügt. Es handelt sich um ein Low-Level-Primitive, mit dem die untergeordneten Elemente während der Messung zusammengesetzt werden können, wenn wir einige Werte verwenden möchten, die erst später während der Messung für die Zusammensetzung des Teilbaums verfügbar sind. WithConstraints wird beispielsweise nicht mit SubcomposeLayout implementiert. (I25cc8)

  • „Material FilledTextField“ wurde in „TextField“ umbenannt und „foundational TextField“ in „BaseTextField“, damit die gewünschte API einfacher zu finden und zu verwenden ist (Ia6242, b/155482676).

  • Modifier.drawBackground wurde in Modifier.background umbenannt (I13677)

Version 0.1.0-dev15

22. Juli 2020

androidx.compose.runtime:runtime-*:0.1.0-dev15 ist veröffentlicht. Version 0.1.0-dev15 enthält diese Commits.

Aktualisierung von Abhängigkeiten

  • Wenn Sie die 0.1.0-dev15-Version von Compose verwenden möchten, müssen Sie Ihre Abhängigkeiten gemäß den neuen Code-Snippets oben unter Abhängigkeiten deklarieren aktualisieren.

API-Änderungen

  • Die Anmerkung „@Model“ wurde eingestellt. Verwenden Sie stattdessen „state“ und „mutableStateOf“. Diese Entscheidung wurde nach sorgfältiger Überlegung getroffen.

    Begründung

    Die Begründung umfasst unter anderem Folgendes:

    • Reduziert die API-Oberfläche und die Konzepte, die wir vermitteln müssen
    • Bessere Abstimmung mit anderen vergleichbaren Toolkits (Swift UI, React, Flutter)
    • Die Entscheidung kann rückgängig gemacht werden. Wir können @Model später jederzeit wieder einführen.
    • Entfernt Grenzfälle und schwer zu beantwortende Fragen zur Konfiguration von @Model als Dinge, die wir bearbeiten müssen
    • @Model-Datenklassen, „equals“, „hashcode“ usw.
    • Wie kann ich festlegen, dass einige Eigenschaften „beobachtet“ werden und andere nicht?
    • Wie lege ich fest, ob in einer Beobachtung strukturelle oder referenzielle Gleichheit verwendet werden soll?
    • Weniger „Magie“ im System Dadurch wird die Wahrscheinlichkeit verringert, dass jemand annimmt, das System sei intelligenter als es ist (d. h. dass es weiß, wie man eine Liste vergleicht).
    • Die Granularität der Beobachtung wird intuitiver.
    • Verbessert die Refaktorierbarkeit von Variablen zu Eigenschaften in Klassen
    • Möglicherweise ergeben sich dadurch Möglichkeiten für individuelle Optimierungen auf Bundesstaatsebene.
    • Sie entspricht besser dem Rest des Ökosystems und reduziert die Unklarheit in Bezug auf unveränderliche oder veränderliche Zustände.

    Hinweise zur Migration

    Fast alle vorhandenen Verwendungen von @Model lassen sich auf zwei Arten relativ einfach transformieren. Im folgenden Beispiel wird eine @Model-Klasse mit zwei Attributen verwendet, die in einer zusammensetzbaren Funktion verwendet wird.

    @Model class Position(
     var x: Int,
     var y: Int
    )
    
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p.x = it }
       onYChange={ p.y = it }
     )
    }
    

    Alternative 1: Verwenden Sie State<OriginalClass> und erstellen Sie Kopien.

    Dieser Ansatz wird durch die Datenklassen von Kotlin erleichtert. Machen Sie im Grunde alle bisherigen var-Properties zu val-Properties einer Datenklasse und verwenden Sie dann state anstelle von remember. Weisen Sie den Statuswert den geklonten Kopien des Originals mit der Datenklasse copy(...)-Hilfsmethode zu.

    Dieser Ansatz funktioniert nur, wenn die einzigen Änderungen an dieser Klasse im selben Bereich vorgenommen wurden, in dem die State-Instanz erstellt wird. Wenn die Klasse sich intern außerhalb des Anwendungsbereichs ändert und Sie sich auf die Beobachtung dieser Änderung verlassen, sollten Sie den nächsten Ansatz verwenden.

    data class Position(
     val x: Int,
     val y: Int
    )
    
    @Composable fun Example() {
     var p by state { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p = p.copy(x=it) }
       onYChange={ p = p.copy(y=it) }
     )
    }
    

    Alternative 2: mutableStateOf und Property Delegates verwenden

    Dieser Ansatz wird durch die Property Delegates von Kotlin und die mutableStateOf API erleichtert, mit der Sie MutableState-Instanzen außerhalb der Komposition erstellen können. Ersetzen Sie im Grunde alle var-Attribute der ursprünglichen Klasse durch var-Attribute mit mutableStateOf als Attribut-Delegate. Das hat den Vorteil, dass sich die Verwendung der Klasse nicht ändert, sondern nur die interne Implementierung. Das Verhalten ist jedoch nicht vollständig identisch mit dem ursprünglichen Beispiel, da jede Property jetzt einzeln beobachtet/abonniert wird. Die Recompositions, die nach dieser Umgestaltung angezeigt werden, könnten also enger sein (was gut ist).

    class Position(x: Int, y: Int) {
     var x by mutableStateOf(x)
     var y by mutableStateOf(y)
    }
    
    // source of Example is identical to original
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p.x = it }
       onYChange={ p.y = it }
     )
    }
    

    (I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/143263925, b/139653744)

  • Ändert die Strategie zur Codegenerierung des Compose-Compilers. Vor der Änderung hat der Compose-Compiler Aufrufe von zusammensetzbaren Funktionen transformiert. Durch diese Änderung wird jetzt der Body einer zusammensetzbaren Funktion transformiert und der Aufruf bleibt (meistens) unverändert.

    Das bedeutet, dass die meiste Logik, die mit der Compose-Laufzeit kommuniziert, am Anfang des Funktions-Bodys statt am Aufrufpunkt erfolgt.

    Diese Änderung sollte für alle Verwendungen von Compose quellenkompatibel sein. Die meisten Nutzer von Compose müssen aufgrund dieser Änderung keinen Code aktualisieren.

    Zur Unterstützung dieser Arbeit hat sich die JVM-Signatur aller zusammensetzbaren Funktionen geändert. Eine zusammensetzbare Funktion, die einen einzelnen Parameter akzeptiert, wird in eine Funktion mit drei Parametern umgewandelt. Die zusätzlichen Parameter sind der Composer, ein „key“-Integer und ein Bitmasken-Integer, der zum Weitergeben von Metadaten durch Aufrufe verwendet wird.

    Compose transformiert jetzt auch Standardargumente in eine zusammensetzbare Funktion. Dabei wird keine zusätzliche synthetische Standardüberladung der Funktion eingeführt. Durch diese Änderung werden also weniger Funktionen definiert.

    Bekannte beabsichtigte Verhaltensänderungen, die sich daraus ergeben:

    1. Bei einigen Anrufen wird die Zusammenfassung übersprungen, obwohl das zuvor nicht der Fall war.
    2. Zusammensetzbare Ausdrücke in Standardargumentausdrücken werden jetzt korrekt abonniert und verarbeitet.

    Diese Arbeit umfasste einige Optimierungen: 1. Das Ergebnis von Parametervergleichen wird über den Aufrufgraphen an andere zusammensetzbare Funktionen weitergegeben. Dies führt zu weniger Vergleichen zur Laufzeit, einer kleineren Slot-Tabelle und dazu, dass mehr zusammensetzbare Funktionen übersprungen werden, die zuvor nicht übersprungen wurden. Parameter, die zur Kompilierzeit als „statisch“ eingestuft werden, werden nicht mehr verglichen oder in der Laufzeit gespeichert. Dadurch wird die Anzahl der Vergleiche und die Größe der Slot-Tabelle reduziert. 3. Die Kontrollflussstruktur des Funktionsrumpfs wird verwendet, um die Anzahl der generierten Gruppen zu minimieren. Dadurch wird die Größe der Slot-Tabelle reduziert und die Laufzeit 4 muss weniger Arbeit leisten. Nicht verwendete Dispatch- und Empfängerparameter für Funktionen werden bei der Bestimmung der Überspringbarkeit der Funktion nicht berücksichtigt, wenn sie nicht im Funktionsrumpf verwendet werden.

    Die meisten wichtigen Änderungen betrafen APIs, auf die der Compiler direkt abzielt. Die typische Verwendung von Compose ist davon nicht betroffen: 1. Composer::startExpr wurde entfernt 2. Composer::endExpr wurde entfernt 3. Composer::call wurde eingestellt 4. Die Nicht-Varargs-Überladungen von key wurden entfernt. Verwenden Sie künftig die vararg-Version. 5. Die Pivotal-Anmerkung wurde eingestellt. Verwenden Sie stattdessen key. 6. ScopeUpdateScope::updateScope wurde so geändert, dass anstelle von Function1 eine Function3 erwartet wird. 7. restartableFunction und restartableFunctionN wurden aktualisiert, um zusätzliche Kompilierzeitparameter zu enthalten (I60756, b/143464846).

  • „sortWith“ und „removeRange“ zu „MutableVector“ hinzugefügt (Icccf7)

  • Standardmethodenimplementierungen für CompositionLifecycleObserver hinzugefügt (I24289)

  • Für „Applier“ ist jetzt eine „clear()“-Methode zum Entfernen von Kompositionen erforderlich (Ibe697).

  • „asMutableList()“ wurde „MutableVector“ hinzugefügt, damit es an die öffentliche API übergeben werden kann, ohne dass die gesamte Liste kopiert werden muss. (I298df)

  • rememberCoroutineScope() wurde hinzugefügt, um in der Komposition einen verwalteten CoroutineScope zum Starten von Jobs als Reaktion auf Ereignisse zu erhalten. (I0e264)

  • MutableVector ist eine neue Sammlung, die keine der Standard-Collection-Schnittstellen implementiert. Diese Sammlung bietet Geschwindigkeit über andere Anforderungen hinweg und ist nur für interne Implementierungen vorgesehen. (I8ebd6)

  • StableMutableList und StableMutableMap wurden vorübergehend entfernt, um ein Problem in der erforderlichen Version von Kotlin Compose zu vermeiden. Diese Schnittstellen werden wieder eingeführt, sobald Compose auf eine Version von Kotlin aktualisiert wird, in der das Problem nicht auftritt.

    SnapshotStateList und SnapshotStateMap sind jetzt öffentlich, werden aber eingestellt, sobald StableMutableList und StableMutableMap wieder verfügbar sind. (Ia7769)

  • Funktion „withFrameNanos“ auf oberster Ebene für das Timing von Animationen hinzufügen (Ie34c5)

  • Die Anmerkung „@Untracked“ wurde eingestellt. Durch @ComposableContract(tracked=false) ersetzen (Id211e)

  • „RestartableFunction“ und zugehörige APIs wurden in „ComposableLambda“ usw. umbenannt. Diese APIs wurden nur vom Compiler verwendet, daher sollte sich dies normalerweise nicht auf die Quellcodekompatibilität auswirken. Die Umbenennung erfolgte hauptsächlich, um besser zu kommunizieren, was diese Klasse ist, wenn sie in Stacktraces angezeigt wird (I7eb25).

  • Die @Composable-Annotation ist für Klassen nicht mehr gültig (Ia5f02)

  • Ambient<T> ist jetzt @Stable anstelle von @Immutable (I0b4bb)

  • Vor dieser Änderung hat das Compose-Compiler-Plug-in Aufrufe von Konstruktoren innerhalb einer @Composable-Funktion nicht trivial abgefangen, wenn ein (I5205a, b/158123804)

  • Die Recompose-Composable-Funktion ist keine nützliche Abstraktion mehr. Die meisten Neukompositionen sollten durch Zuweisungen von MutableState erfolgen. Für alles darüber hinaus wird empfohlen, die Funktion invalidate zu verwenden, um eine Neuzusammensetzung des aktuellen Bereichs auszulösen. (Ifc992)

  • „Beobachten“ ist keine nützliche Abstraktion mehr. Wenn Sie sie replizieren müssen, kann ihre Implementierung repliziert werden, indem Sie einfach eine zusammensetzbare Funktion erstellen, die einen zusammensetzbaren Lambda-Parameter ausführt. Beispiel: @Composable fun Observe(body: @Composable () -> Unit) = body() (I40d37)

  • @Direct wurde zugunsten von @ComposableContract(restartable=false) eingestellt (If4708)

  • Es wurde ein Adapter für den kürzlich eingeführten StateFlow hinzugefügt, mit dem der Anfangswert vorab festgelegt werden kann, sodass der zurückgegebene Status nicht nullfähig ist (I61dd8, b/156233789).

  • Adapter für Flow hinzugefügt. Beispiel für die Verwendung: val value by flow.collectAsState() (If2198, b/153375923)

  • [Mutable]State-Eigenschaftsdelegator-Operatoren wurden in Erweiterungen verschoben, um die Optimierungen von Kotlin 1.4 für Eigenschaftsdelegatoren zu unterstützen. Anrufer müssen Importe hinzufügen, um by state { ... } oder by mutableStateOf(...) weiterhin verwenden zu können. (I5312c)

  • androidx.compose.ViewComposer wurde nach androidx.ui.node.UiComposer verschoben. androidx.compose.Emittable wurde entfernt. Sie war redundant mit ComponentNode. androidx.compose.ViewAdapters wurde entfernt. Sie sind kein unterstützter Anwendungsfall mehr. Die Funktion „Compose.composeInto“ wurde eingestellt. Verwende stattdessen setContent oder setViewContent. Die Funktion „Compose.disposeComposition“ wurde eingestellt. Verwenden Sie stattdessen die Methode dispose für das von setContent zurückgegebene Composition. androidx.compose.Compose.subcomposeInto wurde zu androidx.ui.core.subcomposeInto verschoben. ComponentNode#emitInsertAt wurde in ComponentNode#insertAt umbenannt. ComponentNode#emitRemoveAt wurde in ComponentNode#removeAt umbenannt. ComponentNode#emitMode wurde in ComponentNode#move umbenannt (Idef00).

  • Das Flag ComposeFlags.COMPOSER_PARAM wurde in true geändert. Dadurch ändert sich die Strategie zur Codegenerierung für das Compose-Plug-in. Auf hoher Ebene führt dies dazu, dass @Composable-Funktionen mit einem zusätzlichen synthetischen Parameter generiert werden, der an nachfolgende @Composable-Aufrufe übergeben wird, damit die Laufzeit die Ausführung richtig verwalten kann. Dies ist eine erhebliche binäre Breaking Change, sollte aber die Quellcodekompatibilität bei allen zulässigen Verwendungen von Compose beibehalten. (I7971c)

  • Nicht abwärtskompatible Änderungen an der Ambients API. Weitere Informationen finden Sie im Log und in der Ambient<T>-Dokumentation (I4c7ee, b/143769776).

  • „ui-livedata“ wurde hinzugefügt – ein neues Artefakt mit einem Adapter für LiveData. Beispiel für die Verwendung: val value by liveData.observeAsState() (Ie9e8c, b/150465596)

  • Rx-Adapter ohne expliziten Anfangswert sind veraltet. Die Verwendung von „null“ ist nicht immer der beste Standardwert, z. B. wenn Sie eine Liste haben. In diesem Fall ist es besser, mit „emptyList()“ oder einem anderen angemessenen Standardwert zu beginnen (I00025, b/161348384).

  • „ui-rxjava2“ hinzugefügt – neues Artefakt mit Adaptern für RxJava2. Beispiel für die Verwendung: val value by observable.subscribeAsState() (Ifab4b, b/153369097)

  • savedInstanceState() kann jetzt mit Nullable-Typen verwendet werden (I6847f, b/153532190)

  • Neue listSaver() und mapSaver(), um das Schreiben benutzerdefinierter Saver-Objekte zu vereinfachen (I8cf68, b/152331508)

  • Neue Funktionen: savedInstanceState() und rememberSavedInstanceState(). Sie ähneln state() und remember(), haben aber eine integrierte Unterstützung für den gespeicherten Instanzstatus (If1987, b/152025209).

Fehlerkorrekturen

  • runOnIdleCompose wurde in runOnIdle umbenannt (I83607)
  • LayoutNode als experimentelle API festgelegt (I4f2e9)
  • „androidx.ui.foundation.TextFieldValue“ und „androidx.ui.input.EditorValue“ wurden eingestellt. Die Composables TextField, FilledTextField und CoreTextField, die diesen Typ verwenden, sind ebenfalls veraltet. Verwenden Sie stattdessen androidx.ui.input.TextFieldValue (I4066d, b/155211005).
  • Die eingestellte DrawBackground-API wurde zugunsten der drawBackground-Erweiterungs-APIs für Modifier entfernt. Die Implementierungen von „color“, „brush“ und „paint“ für „drawBackground“ wurden überarbeitet, um die Anzahl der Codepfade zu reduzieren und die Anforderung zu entfernen, dass ein Modifier als Teil der Komposition erstellt werden muss. (I0343a)
  • Die Compose-APIs auf höherer Ebene wurden aktualisiert, sodass sie CanvasScope anstelle von Canvas verfügbar machen. Dadurch müssen Nutzer keine eigenen Paint-Objekte mehr verwalten. Nutzer, die weiterhin Zugriff auf ein Canvas benötigen, können die drawCanvas-Erweiterungsmethode verwenden, die einen Callback für die Ausgabe von Zeichenbefehlen mit dem zugrunde liegenden Canvas bereitstellt. (I80afd)
  • Die API für die nachgestellte Lambda-Funktion „WithConstraints“ wurde geändert. Anstelle von zwei Parametern gibt es jetzt einen Empfängerbereich, der zusätzlich zu Einschränkungen und „layoutDirection“ die Eigenschaften „minWidth“, „maxWidth“, „minHeight“ und „maxHeight“ in Dp bietet (I91b9a, b/149979702).
  • Modifikator für symmetrisches Padding hinzugefügt. (I39840)
  • Die Attribute „wrapContentWidth“ und „wrapContentHeight“ wurden aktualisiert, sodass sie eine vertikale oder horizontale Ausrichtung anstelle einer beliebigen Ausrichtung erwarten. Der Schwerkraftmodifikator wurde aktualisiert, um die vertikale oder horizontale Ausrichtung zu akzeptieren. „Zeile“, „Spalte“ und „Stapeln“ wurden aktualisiert, um benutzerdefinierte fortlaufende Ausrichtungen zu unterstützen. (Ib0728)
  • Das Modul „ui-text“ wurde in „ui-text-core“ umbenannt (I57dec).
  • DrawModifier API verbessern:
    • Der Empfängerbereich für draw() ist jetzt ContentDrawScope.
    • Alle Parameter in draw() entfernt
    • DrawScope hat dieselbe Schnittstelle wie der frühere CanvasScope
    • ContentDrawScope hat die Methode drawContent() (Ibaced, b/152919067)
  • „ColoredRect“ wurde eingestellt. Verwenden Sie stattdessen „Box(Modifier.preferredSize(width, height).drawBackground(color))“. (I499fa, b/152753731)
  • „Modifier plus“-Operator durch Factory-Erweiterungsfunktionen ersetzt (I225e4)
  • Auf RowScope- und ColumnScope-Mitglieder kann jetzt außerhalb von Row und Column zugegriffen werden. (I3a641)
  • „LayoutFlexible“ wurde in „LayoutWeight“ umbenannt. Der enge Parameter wurde in „fill“ (ausfüllen) umbenannt. (If4738)
  • WithConstraints hat den Parameter „LayoutDirection“ erhalten (I6d6f7)
  • Hintergrund in „DrawBackground“ umbenannt und standardmäßig gespeichert (Ia0bd3)
  • ButtonStyle wurde durch separate Funktionen ersetzt und die Textüberladung (String) wurde entfernt. Aktualisierte Beispiele mit Nutzungsdaten ansehen (If63ab, b/146478620, b/146482131)
  • runOnIdleCompose und runOnUiThread sind jetzt globale Funktionen anstelle von Methoden für ComposeTestRule. (Icbe8f)

Externer Beitrag

  • Entfernen unnötiger APIs wie Looper und Handler aus der Compose Runtime-Portierungsebene (I6847d)
  • Flow<T>.collectAsState() ohne Anfangswert einstellen. Verwenden Sie StateFlow<T> oder übergeben Sie stattdessen einen expliziten Anfangswert. (I63f98, b/157674865)