Laufzeit erstellen
Grundlegende Bausteine des Programmiermodells und der Statusverwaltung von Compose sowie die zentrale Laufzeit für das Compose-Compiler-Plug-in.
Letzte Aktualisierung Stabile Version Releasekandidat Beta-Ausgabe Alpha-Release
26. Juni 2024 1.6.8 - 1.7.0-beta04 -

Gebäude

Compose besteht aus sieben Maven-Gruppen-IDs innerhalb von androidx. Jede Gruppe umfasst eine bestimmte Teilmenge von Funktionen mit jeweils eigenen Versionshinweisen.

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

GruppeBeschreibung
compose.animation:Animationen in den Jetpack Compose-Anwendungen erstellen, um die User Experience zu bereichern
compose.compiler@Composable-Funktionen transformieren und Optimierungen mit einem Kotlin-Compiler-Plug-in aktivieren.
compose.foundationSchreiben Sie Jetpack Compose-Anwendungen mit gebrauchsfertigen Bausteinen und erweitern Sie die Grundlage für den Aufbau Ihrer eigenen Designsysteme.
compose.materialJetpack Compose-UIs mit einsatzbereiten Material Design-Komponenten erstellen Dies ist der übergeordnete Einstiegspunkt von Compose. Hier werden Komponenten bereitgestellt, die den unter www.material.io beschriebenen Komponenten entsprechen.
compose.material3 einfügenJetpack Compose-UIs mit Material Design 3 Components erstellen, der nächsten Entwicklung des Material Design Material 3 enthält aktualisierte Designs und Komponenten sowie Funktionen zur Personalisierung von Material You wie dynamische Farben. Das Produkt wurde so entwickelt, dass es zum visuellen Stil und zur System-UI von Android 12 passt.
compose.runtimeGrundlegende Bausteine des Programmiermodells und der Statusverwaltung von Compose sowie die zentrale Laufzeit für das Compose-Compiler-Plug-in.
compose.uiGrundlegende Komponenten der Benutzeroberfläche zum Schreiben von E-Mails, die für die Interaktion mit dem Gerät erforderlich sind, darunter Layout, Zeichnen und Eingabe

Abhängigkeiten deklarieren

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

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

Groovy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.14"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.14"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

Feedback

Dein Feedback hilft uns, Jetpack zu verbessern. Teilen Sie uns mit, wenn Sie neue Ausgaben entdecken oder Verbesserungsvorschläge für diese Bibliothek haben. Bitte sieh dir die vorhandenen Probleme in dieser Bibliothek an, bevor du eine neue erstellst. Sie können einem vorhandenen Problem Ihre Stimme hinzufügen, indem Sie auf die Sternschaltfläche klicken.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung.

Laufzeitversion 1.0

Version 1.0.0-beta01

29. November 2023

androidx.compose.runtime:runtime-tracing:1.0.0-beta01 wurde 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 wurde veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.

Fehlerkorrekturen

  • Abhängigkeiten wurden an die niedrigsten unterstützten stabilen Versionen (z. B. Composer-runtime und Tracing-Perfetto) angepinnt. Dadurch wurde ein Problem behoben, bei dem Composer-runtime-tracing eine neuere Version von Compose-runtime in die App einbrachte.

Version 1.0.0-alpha04

23. August 2023

androidx.compose.runtime:runtime-tracing:1.0.0-alpha04 wurde 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 Nachverfolgung von Kompositionen beim Start der App (Kaltstart) unterstützt wird, z.B. in AndroidX Benchmark und Android Studio (ab Hedgehog Beta 2).

API-Änderungen

  • androidx.tracing.perfetto.Trace wurde in androidx.tracing.perfetto.PerfettoSdkTrace umbenannt. (I44af8)
  • Konsistenz der Tracing Perfetto SDK APIs mit android.os.Trace (I73ba0, b/282199917)
  • Voraussetzungen für das Tracing beim App-Start (Iad890)
  • Experimentelle und öffentliche API-Dateien zusammengeführt (I0f2e1, b/278769092)

Version 1.0.0-alpha02

8. Februar 2023

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

Neue Funktionen

  • Keine funktionellen Ä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 wurde veröffentlicht. Version 1.0.0-alpha01 enthält diese Commits.

Neue Funktionen

  • androidx.compose.runtime:runtime-tracing ist eine Bibliothek, die – dank entsprechender Tools (demnächst verfügbar) – erweitertes Tracing in einer Compose-App ermöglicht. Diese erste Version ist 1.0.0-alpha01.

Version 1.7

Version 1.7.0-beta04

26. Juni 2024

androidx.compose.runtime:runtime-*:1.7.0-beta04 wurde 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 wurde 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 wurde 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 wurde 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 wurde 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 wurde veröffentlicht. Version 1.7.0-alpha07 enthält diese Commits.

Neue Funktionen

  • Es besteht jetzt die Möglichkeit, eine lokale Zusammensetzung anzugeben, die entweder standardmäßig mithilfe von compositionLocalWithComputedDefault() anhand der Werte anderer lokaler Kompositionen berechnet wird oder indem eine Lambda-Funktion zur Berechnung des Werts mithilfe von providesComputed anstelle von provides bereitgestellt wird.
  • Der Wert einer lokalen Zusammensetzung kann mithilfe der Eigenschaft currentValue der lokalen Zusammensetzung abgerufen werden, auf die innerhalb der Lambda-Funktion zugegriffen werden kann, um den Wert zu berechnen. Diese wird anstelle von current verwendet, auf das nur in @Composable-Funktionen zugegriffen werden kann. (Iadbc0)

API-Änderungen

  • Neu erstellte Statusobjekte sind über andere Snapshots, einschließlich des globalen Snapshots, sofort mit ihrem Anfangszustand zugänglich. Nachfolgende Änderungen sind erst sichtbar, wenn der Snapshot angewendet wird, in dem das Objekt erstellt wurde.
  • Der Anfangszustand von mutableStateOf() sowie deren primitive Versionen sind der Wert, der als Parameter an mutableStateOf() übergeben wird. Der Anfangszustand von mutableStateListOf() und mutableStateMapOf() ist leer.
  • Snapshot.isInSnapshot und Snapshot.PreexistingSnapshotId wurden hinzugefügt, um zu ermöglichen, dass ein Statusobjekt sofort aus dem globalen Snapshot nach seiner Erstellung zugänglich ist.
  • Benutzerdefinierte Statusobjekte können den sofortigen Zugriff unterstützen, indem dem Muster der Änderungen an den integrierten Snapshot-Objekten gefolgt wird. (I84a17)

Fehlerkorrekturen

  • Das Zusammenführen von readObserver in verschachtelten Snapshots wurde behoben. Dies hat dazu geführt, dass verschachtelte abgeleitete Zustände bei Verwendung innerhalb einer snapshotFlow zu wenig entwertet wurden. (Idf138)

Version 1.7.0-alpha06

3. April 2024

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

Fehlerkorrekturen

  • Bei der Korrektur müssen einzelne Werte verarbeitet werden: providesDefault (538f45)
  • Deadlocks beim Zugriff auf die Frame-Clock von Recomposer vermeiden (07e5c6)

Version 1.7.0-alpha05

20. März 2024

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

Fehlerkorrekturen

  • Verspätete Änderungen an deaktivierter Komposition löschen (5950bc)

Version 1.7.0-alpha04

6. März 2024

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

Leistungsverbesserungen

  • Snapshot.current einmal pro Auswertung des abgeleiteten Zustands aufrufen (ee7daf)
  • currentRecord einmal pro Beobachtung in der Zusammensetzung lesen (b882b2)
  • Versehentliche Iterator-Zuweisung in snapshotFlow entfernen (231e56)
  • Aktivieren Sie nonSkippingGroupOptimization für Erstellungsbibliotheken. Dadurch wird der generierte Code für alle nicht neustartbaren zusammensetzbaren Funktionen in androidx effizienter. Wir planen, diese Funktion in Zukunft standardmäßig zu aktivieren. I(acbc08)

Version 1.7.0-alpha03

21. Februar 2024

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

API-Änderungen

  • Führen Sie eine Ersetzungsgruppe ein, um die Erkennung von Änderungen zu verbessern (0941b5).

Leistungsverbesserungen

  • Arbeitsspeicherzuweisung beim Erkennen von Änderungen verbessern (53e7fd)
  • Speicherleck im Composer beheben (0e097d)
  • Entwertungen bei der Neuzusammensetzung mit ScopeMap übergeben (e19a7e)
  • Entwertungen optimieren, um nur abgeleitete Zustände beizubehalten (f11c44)
  • IdentityArraySet-Nutzungen 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 wurde veröffentlicht. Version 1.7.0-alpha02 enthält diese Commits.

Fehlerkorrekturen

  • Zusammensetzbare Lambdas in Unterzusammensetzungen im selben Frame entwerten. (98301c)
  • Rufe den onRelease-Callback in der gleichen Reihenfolge wie onForgotten auf. (2cd790)
  • Filtert nach geänderten Status, die in snapshotFlow nicht berücksichtigt werden. (796b80)

Leistungsverbesserungen

  • Snapshot-Beobachter ändern, wenn er bereits transparent ist. (f60f30)
  • SnapshotIdSet.lowest() optimieren (7ae149)
  • fold() ohne Zuweisung in SnapshotIdSet verwenden. (532b7d)
  • Iteratorzuweisung entfernen (83f96b)

Version 1.7.0-alpha01

24. Januar 2024

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

Leistungsoptimierungen

  • Möglichkeit zum Erstellen von Anzeigenflächen hinzufügen, nachdem eine untergeordnete Gruppe hinzugefügt wurde (b5960c)
  • Aufnahmeänderungen des Snapshot-Status optimieren (28c3fe)
  • Modus für starkes Überspringen aktivieren (ed1766)

Fehlerkorrekturen

  • Standardparameter-Meta in systeminternem Erinnerung (096665) berücksichtigen
  • Machen Sie currentCompoundHashKey in mehr Fällen eindeutig (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 wurde veröffentlicht. Version 1.6.8 enthält diese Commits.

Version 1.6.7

1. Mai 2024

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

Version 1.6.6

17. April 2024

androidx.compose.runtime:runtime-*:1.6.6 wurde veröffentlicht. Keine Änderungen seit dem letzten Release.

Version 1.6.5

3. April 2024

androidx.compose.runtime:runtime-*:1.6.5 wurde 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 wurde 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 wurde veröffentlicht. Version 1.6.3 enthält diese Commits.

Version 1.6.2

21. Februar 2024

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

Version 1.6.1

7. Februar 2024

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

Fehlerkorrekturen

  • Rufe den onRelease-Callback in der gleichen Reihenfolge wie onForgotten auf. (2cd790)
  • Filtert nach geänderten Status, die in snapshotFlow nicht berücksichtigt werden. (796b80)

Version 1.6.0

24. Januar 2024

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

Wichtige Änderungen seit Version 1.5.0

Neue Funktionen

  • Ausnahmen noch einmal auslösen, die während der Neuzusammensetzungsschleife verschluckt wurden (4dff9a)

Leistungsoptimierungen

  • Aufnahmeänderungen des Snapshot-Status optimieren (28c3fe)
  • rememberSaveable optimieren (f01d79)
  • Das erneute Lesen abgeleiteter Status verzögern, bis Änderungen aufgezeichnet werden (f38099)
  • Bereitstellung lokaler Werte für die Komposition verbessern (a337ea)

Fehlerkorrekturen

  • Speicherleck in der Slottabelle beheben (73fcfe)
  • Neuzusammensetzung der zu entfernenden Unterzusammensetzungen überspringen. (Ieeb99, b/254645321)
  • RememberObserver-Lebenszyklen nur dann auslösen, wenn sie in der Erinnerungsberechnung gespeichert werden. (f6b4dc)
  • $dirty-Erfassung auf Inline-Lambdas beschränken. acfca0
  • Bewegliche Inhalte korrigieren, bei denen manchmal falsche Kompositionen angezeigt werden (035cd6)

Version 1.6.0-rc01

10. Januar 2024

androidx.compose.runtime:runtime-*:1.6.0-rc01 wurde 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 wurde 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 wurde 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 wurde veröffentlicht. Version 1.6.0-beta01 enthält diese Commits.

API-Änderungen

  • Bestimmte Stabilitätswerte in Annotationen weitergeben (274a4c)

Fehlerkorrekturen

  • Verwenden Sie eine referenzielle Richtlinie für den lokalen Geltungsbereich der Zusammensetzung im Kontext. (83361c)
  • Beschränke die $dirty-Erfassung auf Inline-Lambdas. (acfca0)
  • Bewegliche Inhalte korrigieren, bei denen manchmal falsche Kompositionen angezeigt werden (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 wurde veröffentlicht. Version 1.6.0-alpha08 enthält diese Commits.

Fehlerkorrekturen

  • RememberObserver-Lebenszyklen nur dann auslösen, wenn sie in der Erinnerungsberechnung gespeichert werden. (f6b4dc)
  • Zuordnungen bei der Sortierung von Entwertungslisten verbessern. (954d63)
  • Verwenden Sie neue Karten ohne Zuordnung in SnapshotStateObserver. (4303ce)
  • Entwertungen löschen, wenn die Komposition deaktiviert ist. (e001be)

Version 1.6.0-alpha07

4. Oktober 2023

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

API-Änderungen

  • SnapshotStateList ist jetzt als RandomAccess gekennzeichnet, damit die Direktindexierungsversion der Listenhelfer verwendet werden kann. (I5210c, b/219554654)

Version 1.6.0-alpha06

20. September 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha06 wurde 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 wurde 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 wurde veröffentlicht. Version 1.6.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Ausnahmen noch einmal auslösen, die während der Neuzusammensetzungsschleife verschluckt wurden (4dff9a)

API-Änderungen

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

Version 1.6.0-alpha03

9. August 2023

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

Fehlerkorrekturen

  • Neue CompositionLocalProvider-Optimierung korrigieren (3118e88)
  • Korrigieren Sie, wie Knoten für bewegliche Inhalte auseinandergenommen werden. (5e3d59b)

Version 1.6.0-alpha02

26. Juli 2023

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

Neue Funktionen und Leistungsverbesserungen

  • rememberSaveable optimieren (f01d79)
  • Das erneute Lesen abgeleiteter Status verzögern, bis Änderungen aufgezeichnet werden (f38099)
  • Bereitstellung lokaler Werte für die Komposition verbessern (a337ea)
  • SideEffect ist als @ExplicitGroupsComposable gekennzeichnet, damit keine Gruppe erstellt werden kann. (I74815)
  • Vergleich von lokalen Kompositionskarten bei der Wiederverwendung vermeiden (782071)

API-Änderungen

  • Es wurde eine Sonderfall-Überlastung für CompositionLocalProviders hinzugefügt. Damit wird der Aufwand vermieden, der zur schnelleren Bereitstellung mehrerer Werte verwendet wird. Dieser Aufwand entsteht jedoch bei der Bereitstellung eines einzelnen Werts. (I6d640, b/288169379)

Fehlerkorrekturen

  • Speicherleck in der Slottabelle beheben (73fcfe)
  • Behebung des Problems beim Wiederherstellen von rememberSaveable, wenn stateSaver null zurückgibt (90748c)

Version 1.6.0-alpha01

21. Juni 2023

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

Fehlerkorrekturen

  • Neuzusammensetzung der zu entfernenden Unterzusammensetzungen überspringen. (Ieeb99, b/254645321)
  • Reduzierte Zuweisungen beim Anwenden von Snapshots. (I65c09)
  • Berechnen Sie readableHash in DerivedState nicht, 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 wurde veröffentlicht. Version 1.5.4 enthält diese Commits.

Version 1.5.3

4. Oktober 2023

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

Version 1.5.2

27. September 2023

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

Version 1.5.1

6. September 2023

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

Version 1.5.0

9. August 2023

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

API-Änderungen

  • Zuweisungen bei Neuzusammensetzung, Farbanimationen und AndroidComposeView wurden entfernt. (Ib2bfa)
  • Eine @StateFactoryMarker-Anmerkung wurde hinzugefügt, um Funktionen zu markieren, die Zustände erstellen und in einen remember-Aufruf eingebunden werden müssen. (I64550)
  • Primitive Versionen von State und MutableState hinzufügen (fb3d89)
  • Snapshot.isApplyObserverNotificationPending hinzugefügt (I672a5)
  • Primitive Versionen der State API wurden hinzugefügt, mit denen Werte vom Typ „Int“, „Long“, „Float“ und „Double“ in State-Objekten verfolgt werden können, ohne dass für Autoboxing Strafmaßnahmen anfallen. Verwenden Sie dafür die neuen Factory-Methoden mutableIntState(Int), mutableFloatStateOf(Float) usw. (I48e43)

Fehlerkorrekturen

  • Neuzusammensetzung der zu entfernenden Unterzusammensetzungen überspringen. (Ieeb99, b/254645321)
  • Snapshot-Referenz in ComposerImpl nicht beibehalten (0206f7)
  • Komposition nicht zweimal anwenden (f5791b)
  • Entwertung für nicht initialisierte abgeleitete Statuswerte sicherstellen (aa2a92)
  • Rufe onEndChanges während der Entsorgung über die Komposition auf. (62cc8c)
  • Fehler beim Verschieben von Inhalten in eine Unterkomposition beheben (4beb41)
  • Potenzielle Deadlocks beheben (c1a425 und 8edce0)
  • Der für ein Android-Fenster erstellte Recomposer blockiert jetzt nur dann withFrameNanos-Aufrufe anstelle aller Kompositionen, wenn eine ON_STOP-Benachrichtigung eingeht. Das bedeutet, dass Fenster, die mit beendeten Aktivitäten verknüpft sind, bei Datenänderungen weiterhin neu zusammengesetzt werden, aber die Animationen oder andere Aufrufer von withFrameNanos werden blockiert. (Id9e7f, b/240975572)
  • Führe Deaktivierungs-Callbacks für LayoutNode aus, bevor die Effekte entfernt werden 3784073
  • Geänderte Flags für neu gestartete Lambdas ea81df9 korrigiert
  • Fehler bei der Live-Bearbeitungsregression für zusammensetzbare Knoten mit Knoten 73fd4d8 beheben
  • ON_STOP sollte die Übertragungen der Frame-Clocks anstelle der Komposition ae276f1 anhalten.
  • SnapshotStateObserver-Bereiche für unveränderte abgeleitete Zustände 84d9b1c entwerten
  • Potenzielle Blockade beim Entfernen von Kompositionen beheben 28761fc
  • Fehler beim Verschieben von Inhalten in eine Unterkomposition 92d4156 beheben
  • Fehlerkorrektur für geänderte Flags für neu gestartete Lambdas (8a03e9)
  • Führe Deaktivierungs-Callbacks für LayoutNode aus, bevor Effekte entfernt werden (8b0fa4)
  • Fehler in endToMarker() beim Beenden von Knotengruppen beheben. (d71d980)
  • Aktuelle SlotWriter-Gruppe zur Prüfung der Deaktivierung verwenden (a0b518b)
  • Entfernen Sie das fill-Element in SlotTable.moveSlotGapTo() und schließen Sie es. (81f9935)
  • Fehlende Entwertungen beheben, während bewegliche Inhalte verschoben werden (1d7c024)
  • Sofortige Deaktivierungen von verschobenen beweglichen Inhalten beheben (8676618)

Leistungsverbesserungen

  • Berechnen Sie readableHash nicht in DerivedState, wenn der Snapshot nicht geändert wurde. (307102)
  • Reduzierte Zuweisungen (I65c09, d7ea77, 727974 und 445808)
  • Schnelle Stornierung des Editors mit der E-Mail-Adresse CoroutineScopes (a55362 und bd382f)
  • Datensätze von Zustandsobjekten mit nicht zugänglichen Statuseinträgen überschreiben (c986960)
  • Composer mit dem richtigen Bereich bei der Erkennung von Gruppen verwenden (9a5e5b6)
  • IdentityArraySet zum Speichern von Snapshot-Entwertungen 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 wurde veröffentlicht. Version 1.5.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Das erneute Lesen abgeleiteter Status verzögern, bis Änderungen aufgezeichnet werden (f38099)

  • Es ist eine optionale Prüfung verfügbar, um zu empfehlen, mutableStateOf()-Aufrufe zu den entsprechenden speziellen Typen für Primitive zu migrieren. Die Lint-ID lautet AutoboxingStateCreation. Bisher war diese Prüfung standardmäßig für alle Projekte aktiviert. Wenn Sie diese Warnung im Android Studio-Editor und in den Lint-Ausgaben Ihres Projekts sehen möchten, ändern Sie den Schweregrad von „Informativ“ zu „Warnung“ (oder höher). Deklarieren Sie dazu warning "AutoboxingStateCreation" in der Konfiguration Ihres Moduls „build.gradle“ oder „build.gradle.kts“ (I34f7e):

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

Version 1.5.0-beta03

28. Juni 2023

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

Fehlerkorrekturen

  • Neuzusammensetzung der zu entfernenden Unterzusammensetzungen überspringen. (Ieeb99, b/254645321)

Version 1.5.0-beta02

7. Juni 2023

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

Leistungsverbesserungen

  • Berechnen Sie readableHash nicht 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 wurde veröffentlicht. Version 1.5.0-beta01 enthält diese Commits.

API-Änderungen

  • Zuweisungen bei Neuzusammensetzung, Farbanimationen und AndroidComposeView (Ib2bfa) wurden entfernt.
  • Eine @StateFactoryMarker-Anmerkung wurde hinzugefügt, um Funktionen zu markieren, die Zustände erstellen und in einen remember-Aufruf eingebunden 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)
  • Schnelle Stornierung des Editors mit der E-Mail-Adresse CoroutineScopes (a55362 und bd382f)
  • Komposition nicht zweimal anwenden (f5791b)
  • Entwertung für nicht initialisierte abgeleitete Statuswerte sicherstellen (aa2a92)
  • Rufe onEndChanges während der Entsorgung über die Komposition auf. (62cc8c)
  • Fehler beim Verschieben von Inhalten in eine Unterkomposition beheben (4beb41)
  • Potenzielle Deadlocks beheben (c1a425
  • ON_STOP sollte die Übertragungen der Frame-Uhr anstelle der Komposition anhalten (f4a2d1).
  • Fehlerkorrektur für geänderte Flags für neu gestartete Lambdas (8a03e9)
  • Führe Deaktivierungs-Callbacks für LayoutNode aus, bevor Effekte entfernt werden (8b0fa4)

Externer Beitrag

  • Snapshot.isApplyObserverNotificationPending hinzugefügt (I672a5)

Version 1.5.0-alpha04

10. Mai 2023

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

API-Änderungen

  • Primitive Versionen der State API wurden hinzugefügt, mit denen Werte vom Typ „Int“, „Long“, „Float“ und „Double“ in State-Objekten verfolgt werden können, ohne dass für Autoboxing Strafmaßnahmen anfallen. Verwenden Sie dafür die neuen Factory-Methoden mutableIntState(Int), mutableFloatStateOf(Float) usw. (I48e43)

Fehlerkorrekturen

  • Rufe onEndChanges während der Entsorgung über die Komposition auf. Während Composition.dispose entfernte Fokusknoten abonnieren onEndChanges, um den Fokus zurückzusetzen.(03d4a47)

  • Achten Sie darauf, dass nicht initialisierte abgeleitete Statuswerte entwertet werden. Jeder abgeleitete Status ist einer Liste seiner Abhängigkeiten in SnapshotStateObserver zugeordnet. Dies wird verwendet, um mit dem abgeleiteten Status verknüpfte Bereiche zu entwerten, wenn sich die Abhängigkeit ändert. Die Abhängigkeitsänderung wird beim Voranstellen des Snapshots registriert, der nach dem Lesen des abgeleiteten Status (aufgrund des Aufrufs von Snapshot.notifyObjectsInitialized()) auftreten kann.

    Die Beobachtungslogik des vorherigen abgeleiteten Zustands in SnapshotStateObserver hat alte Abhängigkeiten bereinigt und anschließend den neuen Wert gelesen. Dies führte zu einer Race-Bedingung mit Entwertung im Status „bereinigt“, bei der die Abhängigkeitsentwertung nicht registriert wurde.

    Durch diese Änderung werden der Lesevorgang des abgeleiteten Status und die Abhängigkeitsbereinigung neu angeordnet, damit die Entwertung immer in einem gültigen Status erfolgt. (c472be6)

Version 1.5.0-alpha03

19. April 2023

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

API-Änderungen

  • Der für ein Android-Fenster erstellte Recomposer blockiert jetzt nur dann withFrameNanos-Aufrufe anstelle aller Kompositionen, wenn eine ON_STOP-Benachrichtigung eingeht. Das bedeutet, dass Fenster, die mit beendeten Aktivitäten verknüpft sind, bei Datenänderungen weiterhin neu zusammengesetzt werden, aber die Animationen oder andere Aufrufer von withFrameNanos werden blockiert. (Id9e7f, b/240975572)

Fehlerkorrekturen

  • Potenzielle Deadlocks in der Snapshot-Liste und Zuordnung 5c1a425 beheben
  • Führe Deaktivierungs-Callbacks für LayoutNode aus, bevor die Effekte entfernt werden 3784073
  • Geänderte Flags für neu gestartete Lambdas ea81df9 korrigiert
  • Fehler bei der Live-Bearbeitungsregression für zusammensetzbare Knoten mit Knoten 73fd4d8 beheben
  • ON_STOP sollte die Übertragungen der Frame-Clocks anstelle der Komposition ae276f1 anhalten.
  • SnapshotStateObserver-Bereiche für unveränderte abgeleitete Zustände 84d9b1c entwerten
  • Potenzielle Blockade beim Entfernen von Kompositionen beheben 28761fc
  • Fehler beim Verschieben von Inhalten in eine Unterkomposition 92d4156 beheben

Version 1.5.0-alpha02

5. April 2023

androidx.compose.runtime:runtime-*:1.5.0-alpha02 wurde 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

  • Datensätze von Zustandsobjekten mit nicht zugänglichen Statuseinträgen überschreiben (c986960)
  • Composer mit dem richtigen Bereich bei der Erkennung von Gruppen verwenden (9a5e5b6)
  • Fehler in endToMarker() beim Beenden von Knotengruppen beheben. (d71d980)
  • Aktuelle SlotWriter-Gruppe zur Prüfung der Deaktivierung verwenden (a0b518b)
  • IdentityArraySet zum Speichern von Snapshot-Entwertungen verwenden (7f60cca)
  • Entfernen Sie das fill-Element in SlotTable.moveSlotGapTo() und schließen Sie es. (81f9935)
  • Fehlende Entwertungen beheben, während bewegliche Inhalte verschoben werden (1d7c024)
  • Sofortige Deaktivierungen von verschobenen beweglichen Inhalten beheben (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 wurde veröffentlicht. Version 1.5.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Fügt Modifier.Node#coroutineScope hinzu, damit Modifier.Nodes gemeinsame Routinen starten kann (I76ef9)
  • Erlaube Modifier.Nodes, CompositionLocals zu lesen, indem du die CompositionLocalConsumerModifierNode-Schnittstelle implementierst. (Ib44df)

Version 1.4

Version 1.4.3

3. Mai 2023

androidx.compose.runtime:runtime-*:1.4.3 wurde ohne Änderungen freigegeben.

Version 1.4.2

19. April 2023

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

Fehlerkorrekturen

  • Potenzielle Deadlocks in der Snapshot-Liste und Zuordnung 2eb6570 beheben

  • Beim Hinzufügen von Inhalten zu einem SnapshotStateList oder SnapshotStateMap kann es zu einem Deadlock kommen, wenn die Änderung gleichzeitig mit einem direkten Schreibvorgang in den Statuseintrag erfolgt. Dies ist bei den Änderungen durch 93fcae828b, die direkte Schreibvorgänge zur Freigabe nicht verwendeter Datensätze verwenden, deutlich höher.

  • Die Sperren sind jetzt so angeordnet, dass nie versucht wird, eine Snapshot-Sperre zu erstellen, wenn eine Karten- oder Listensperre aktiv ist.

Version 1.4.1

5. April 2023

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

Fehlerkorrekturen

  • Fehler in endToMarker() beim Beenden von Knotengruppen beheben. d71d980

Version 1.4.0

22. März 2023

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

Wichtige Änderungen seit Version 1.3.0

  • Initialisierten Wert aus LiveData für die erste Zusammensetzung 3680e25 verwenden
  • Fügen Sie ComposeNodeLifecycleCallback hinzu, um den Lebenszyklus von Zusammensetzungsknoten zu beobachten. 8b6a258
  • Property parameterTypes zu ComposableMethod 7b6c7ad hinzufügen

Fehlerkorrekturen und Leistungsverbesserungen

  • Beide Bereichsindexe in SnapshotStateObserver 29f4a3e löschen
  • Im Text von nicht überspringbaren Lambdas benötigte Gruppen hinzufügen 7d06752
  • Arbeitsspeicherreferenzmerkmale des Snapshot-Status verbessern 93fcae8
  • Boxing in lokalen Lookups für Kompositionen 0875717 entfernen
  • Richtigen Schlüssel für nicht wiederverwendbare Knotengruppen verwenden 6388d8d
  • SnapshotStateObserver vor rekursiven und gleichzeitigen Anwendung von 98cb6ba schützen
  • Eine Prüfung der Prüfindexgrenzen in die IdentityArraySet-Methode "get" 35a77d3 wurde hinzugefügt.
  • Editormodul aktualisieren, um ViewTreeLifecycleOwner-Erweiterungen zu verwenden 21c2122
  • App-Benachrichtigungen senden, nachdem Recomposer den Frame beendet hat. 98f2641
  • Absturz des Index außerhalb des gültigen Bereichs beim Abbrechen von Recomposer 8f8656f behoben
  • Neuzusammensetzung immer erzwingen, wenn der übergeordnete Anbieter von Kompositionen 9526fcc geändert hat
  • Recomposer-Toleranz für abgebrochene Jobs a55f7ed
  • Umgang mit Entwertungen für eine große Anzahl von Komponisten verbessern 9b7ed67
  • Fehler beim Generieren schließender Gruppen für nicht lokale Rückgaben b6f590c behoben

Version 1.4.0-rc01

8. März 2023

androidx.compose.runtime:runtime-*:1.4.0-rc01 wurde 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 wurden 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 wurde 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 der Aufruf dieser Funktion nur in einem Test sicher ist. (I896c8)

Fehlerkorrekturen

  • Boxing in lokalen Lookups für Kompositionen entfernen (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 wurden veröffentlicht. Version 1.4.0-alpha05 enthält diese Commits.

API-Änderungen

  • Mehr Typen/Null-Zulässigkeit von Inline-/eingestellten/verborgenen Funktionen (I24f91)

Version 1.4.0-alpha04

11. Januar 2023

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

API-Änderungen

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

Fehlerkorrekturen

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

Version 1.4.0-alpha03

7. Dezember 2022

androidx.compose.runtime:runtime-*:1.4.0-alpha03 wurde 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 wurde 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 wurde veröffentlicht. Version 1.4.0-alpha01 enthält diese Commits.

API-Änderungen

  • In SnapshotStateList und SnapshotStateMap wurden toList() und toMap() jetzt respektvoll implementiert. Bei diesen Methoden wird der aktuelle Inhalt ohne Kopie zurückgegeben, da sie die internen unveränderlichen Daten zurückgeben, die zum Speichern des Inhalts verwendet wurden. Dieser Wert kann beispielsweise verwendet werden, um einen Wertefluss mit snapshotFlow zu erstellen, 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 wurde 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 wurde veröffentlicht. Version 1.3.2 enthält diese Commits.

Fehlerkorrekturen

  • Aktualisiert, um androidx.compose.ui 1.3.2 zu unterstützen

Version 1.3.1

9. November 2022

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

Version 1.3.0

24. Oktober 2022

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

Wichtige Änderungen seit Version 1.2.0

Ausnahmebehandlung / Support bei Live-Bearbeitung

Nachverfolgen von Kompositionen

Zusammensetzbare Reflexions-APIs

Laufzeitkorrekturen

Snapshot-System

Version 1.3.0-rc01

5. Oktober 2022

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

Fehlerkorrekturen

  • Korrigiertes ArrayIndexOutOfBoundsException aus der Slot-Tabelle (b/249076084)

Version 1.3.0-beta03

21. September 2022

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

Wichtige Änderungen des Verhaltens

  • Der Parameter von 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 dazu führt, dass ein späterer interner Fehler gemeldet wird.
  • Diese Änderung kann möglicherweise dazu führen, dass neue Compiler-Fehler gemeldet werden. In diesem Fall müssen nicht lokale 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 wurde 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 wurde veröffentlicht. Version 1.3.0-beta01 enthält diese Commits.

API-Änderungen

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

Version 1.3.0-alpha03

10. August 2022

androidx.compose.runtime:runtime-*:1.3.0-alpha03 wurde 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 wurde veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.

API-Änderungen

  • ComposerKt.traceEventStart(Int, String) wurde zur Abwärtskompatibilität wieder hinzugefügt (I6e6de)

Version 1.3.0-alpha01

29. Juni 2022

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

API-Änderungen

  • Dienstprogrammfunktionen zur Laufzeit verschieben (I4f729)

Version 1.2

Version 1.2.1

10. August 2022

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

Fehlerkorrekturen

  • Speicherleck behoben: verschachtelte Snapshots, die aus transparenten Snapshots erstellt wurden, entfernen b/239603305

Version 1.2.0

27. Juli 2022

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

Wichtige Änderungen seit dem 1.1.0

  • Compose Runtime enthielt eine Handvoll Funktionen, die mit 1.2.0 eingeführt wurden, sowie viele stabilisierende Fehlerkorrekturen. Die wichtigste neue Funktion war die Einführung der movableContentOfAPI, mit der komplexe UX-Funktionen wie der Übergang von gemeinsam genutzten Elementen möglich sind. Die movableContentOf API konvertiert eine zusammensetzbare Lambda-Funktion in eine Lambda-Funktion, die den Status und entsprechende Knoten an einen beliebigen neuen Speicherort verschiebt, der aufgerufen wird. Wenn der vorherige Aufruf die Zusammensetzung verlässt, wird der Status vorübergehend beibehalten. Wenn ein neuer Aufruf der Lambda-Funktion in die Zusammensetzung eintritt, werden der Status und die zugehörigen Knoten an den Speicherort des neuen Aufrufs verschoben. Wenn kein neuer Aufruf hinzugefügt wird, wird der Status dauerhaft entfernt und denken Sie daran, dass Beobachter benachrichtigt werden.

  • Wenn ein movableContentOf-Lambda mehrmals in derselben Zusammensetzung aufgerufen wird, werden für jeden Aufruf ein neuer Status und neue Knoten erstellt. Wenn Aufrufe die Zusammensetzung verlassen und neue Aufrufe eintreten, wird der Status in der Reihenfolge, in der sie aufgerufen werden, von den ersten verlassenden Aufrufen zu den Eingabeaufrufen verschoben. Jeder Status, der bei neuen Anrufen nicht beansprucht wird, wird endgültig entfernt.

  • Zusätzlich zu diesen und einigen anderen neuen Funktionen wurde viel Zeit für die Stabilisierung des Laufzeit- und Snapshot-Statussystem aufgewendet. Verschiedene Speicherlecks wurden beseitigt und Codepfade optimiert.

  • Im Folgenden finden Sie eine Zusammenfassung der Änderungen:

Neue Funktionen in 1.2

Leistung im 1.2

Fehlerkorrekturen in 1.2

Version 1.2.0-rc03

29. Juni 2022

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

Fehlerkorrekturen

  • Abgeleitete Zustandsbeobachtungen wurden zuvor bedingungslos aus dem Bereich „Neuzusammensetzen“ und „Zusammensetzung“ entfernt. Dadurch wurden andere Bereiche aufgelöst, die möglicherweise noch den abgeleiteten Zustand beobachten. Durch diese Änderung werden Instanzen des abgeleiteten Status nur entfernt, wenn sie von anderen Bereichen nicht mehr beobachtet werden. (b/236618362)

Version 1.2.0-rc02

22. Juni 2022

androidx.compose.runtime:runtime-*:1.2.0-rc02 wurde 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 wurde veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.

API-Änderungen

  • Schnittstellen in Erstellungsbibliotheken werden jetzt mit jdk8-Standardschnittstellenmethoden erstellt (I5bcf1).

Version 1.2.0-beta03

1. Juni 2022

androidx.compose.runtime:runtime-*:1.2.0-beta03 wurde 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 wurde 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 wurde veröffentlicht. Version 1.2.0-beta01 enthält diese Commits.

Neue Funktionen

  • Dies ist die erste Betaversion von Version 1.2.

API-Änderungen

  • Experimentelles Snapshot.unsafeEnter/unsafeLeave hinzugefügt (I108f3)
  • Experimentelle Snapshot.asContextElement() API hinzugefügt (Iff072)
  • Die Annotation @ComposableTarget und die mit @ComposableTargetMarker gekennzeichneten Annotationen können jetzt im Dateibereich mit dem Präfix @file verwendet werden. Bei Verwendung einer Zielannotation auf Dateiebene geht der Compiler davon aus, dass alle zusammensetzbaren Funktionen in der Datei auf den zugehörigen Applier ausgerichtet sein sollen. Mit @file:UiComposable wird beispielsweise deklariert, dass alle @Composable-Funktionen auf den Anwender der Benutzeroberfläche zum Erstellen ausgerichtet sind. Eine Funktion, die auf einen anderen Applier ausgerichtet ist, muss die Zielmarkierungsannotation für den gewünschten Applier explizit bereitstellen. (I40804)

Version 1.2.0-alpha08

20. April 2022

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

API-Änderungen

  • TracingInProgress wurde der CompositionTracer-Oberfläche hinzugefügt. (Ic6f12)
  • recomposeScopeIdentity zu Composer hinzufügen (I0c873)
  • APIs für das Tracing (Composer.setTracer) eingeschränkt auf OptIn(InternalComposeTracingApi) (I9187f)
  • ResuableContentHost wurde hinzugefügt, um eine bessere Kontrolle über die Lebensdauer des Status für wiederverwendbare Inhalte zu erhalten. Wenn beispielsweise eine Unterkomposition vorübergehend nicht verwendet wird, kann der Inhalt deaktiviert werden, sodass alle Elemente, an die sich die Komposition gehört, vergessen werden. Dadurch werden beispielsweise alle Einwegeffekte ausgelöst. (I2c0f2, b/220322704)

Version 1.2.0-alpha07

6. April 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha07 wurde 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 die übergebene Lambda-Funktion ausführen, ohne die Änderungen der Statuswerte zu abonnieren, die während dieses Blocks gelesen werden. Dies kann in Anwendungsfällen nützlich sein, wenn Sie von den Snapshot-basierten Thread-sicheren Schreibvorgängen/Lesevorgängen profitieren möchten, aber den Wert lesen möchten, ohne eine unnötige Neuzusammensetzung oder erneute Messung zu verursachen. (I9f365, b/214054486)

Version 1.2.0-alpha06

23. März 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha06 wurde 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 wurde veröffentlicht. Version 1.2.0-alpha05 enthält diese Commits.

Externer Beitrag

  • Aktualisiert für die Verwendung der Kotlinx-Koroutinen 1.6.0 (I3366d)

Version 1.2.0-alpha04

23. Februar 2022

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

API-Änderungen

  • ComposableTarget, ComposableTargetMarker und ComposableOpenTarget wurden hinzugefügt, um Berichte zur Kompilierungszeit darüber zu erstellen, wann eine zusammensetzbare Funktion aufgerufen wird, die auf einen nicht vorgesehenen Anwendungsfall ausgerichtet ist.

    In den meisten Fällen können die Annotationen vom Compiler-Plug-in abgeleitet werden. Die direkte Verwendung dieser Annotationen sollte daher selten sein. Zu den Fällen, die nicht abgeleitet werden können, gehören das Erstellen und Verwenden einer benutzerdefinierten Anwendung, abstrakte zusammensetzbare Funktionen (z. B. Schnittstellenmethoden), Felder oder globale Variablen, die zusammensetzbare Lambdas sind (lokale Variablen und Parameter werden abgeleitet) oder die Verwendung von ComposeNode oder einer verwandten zusammensetzbaren Funktion.

    Bei benutzerdefinierten Anwendungen 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 Annotation zu erstellen, die mit ComposableTargetMarker annotiert ist, und dann die markierte Annotation direkt anstelle von ComposableTarget zu verwenden. Eine zusammensetzbare Annotation mit der Kennzeichnung ComposableTargetMarker entspricht einer ComposbleTarget, bei der der vollständig qualifizierte Name der Attributklasse als Anwendungsparameter verwendet wird. 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 wurde veröffentlicht. Version 1.2.0-alpha03 enthält diese Commits.

API-Änderungen

  • movableContentOf wurde hinzugefügt. Damit wird eine zusammensetzbare Lambda-Funktion in eine Lambda-Funktion konvertiert, die den Status und entsprechende Knoten an jeden neu aufgerufenen Speicherort verschiebt. Wenn der vorherige Aufruf die Zusammensetzung verlässt, wird der Status vorübergehend beibehalten. Wenn ein neuer Aufruf der Lambda-Funktion in die Zusammensetzung eintritt, werden der Zustand und die zugehörigen Knoten an den Speicherort des neuen Aufrufs verschoben. Wenn kein neuer Aufruf hinzugefügt wird, wird der Status dauerhaft entfernt und Beobachter werden benachrichtigt.

    Wenn ein movableContentOf-Lambda mehrmals in derselben Zusammensetzung aufgerufen wird, werden für jeden Aufruf ein neuer Status und neue Knoten erstellt. Wenn Aufrufe die Zusammensetzung verlassen und neue Aufrufe eintreten, wird der Status in der Reihenfolge, in der sie aufgerufen werden, von den ersten auslassenden Aufrufen zu den eingegebenen Aufrufen verschoben. Alle Status, die nicht von neuen Aufrufen beansprucht werden, werden dauerhaft entfernt. (Ib4850)

  • Der Zusammensetzung wurde eine Tracing API hinzugefügt, mit der Tools ein detaillierteres Tracing von zusammensetzbaren Funktionen ermöglichen. Der Compiler generiert jetzt Aufrufe an die Tracing API, die Quellinformationen enthalten. (Ib0eb5)

    Fügen Sie die folgende Proguard-Regel hinzu, um diese Aufrufe und die zugehörigen Quellinformationen aus einem Release-Build zu entfernen:

      -assumenosideeffects public class androidx.compose.runtime.ComposerKt {
          boolean isTraceInProgress();
          void traceEventStart(int,java.lang.String);
          void traceEventEnd();
      }
    
  • Fügen Sie InternalComposeScope hinzu. Damit können Tools bei der Neuzusammensetzung eine zusammensetzbare Funktion identifizieren. (I07a3f)

Version 1.2.0-alpha02

26. Januar 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha02 wurde 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 wurde veröffentlicht. Version 1.2.0-alpha01 enthält diese Commits.

API-Änderungen

  • CompositionData wurde das Feld identity zum Generieren von Invarianten-IDs im Layout Inspector hinzugefügt. (IC116e)

Aktualisierung der Abhängigkeiten

  • Jetzt abhängig von Kotlin-1.6.10.

Version 1.1

Version 1.1.1

23. Februar 2022

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

Fehlerkorrekturen

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

Version 1.1.0

9. Februar 2022

androidx.compose.runtime:runtime-*:1.1.0 wurde 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 von Android 12
  • Verbesserungen bei der Größe von Berührungszielbereichen
  • In Bezug auf Compose 1.0 wird der Layoutbereich von Material-Komponenten so erweitert, dass sie den Richtlinien für Bedienungshilfen von Material für die Größe des Berührungszielbereichs entsprechen. Das Berührungsziel der Schaltfläche wird beispielsweise auf eine Mindestgröße von 48x48dp erweitert, auch wenn Sie die Größe der Schaltfläche entsprechend verringern. Dadurch wird das Material Design auf das gleiche Verhalten wie die Material Design-Komponenten abgestimmt, was ein einheitliches Verhalten ermöglicht, wenn du „View“ und „Compose“ mischst. Durch diese Änderung wird außerdem sichergestellt, dass beim Erstellen der Benutzeroberfläche mit „Material erstellen“-Komponenten die Mindestanforderungen für die Barrierefreiheit auf Berührungszielbereichen erfüllt sind.
  • Stabile Unterstützung für Navigation Rail
  • Umstellung einer Reihe zuvor experimenteller APIs auf stabile Version
  • Support für neuere Versionen von Kotlin

Version 1.1.0-rc03

26. Januar 2022

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

Fehlerkorrekturen

  • Aktualisiert, um Material zu verfassen 1.1.0-rc03

Version 1.1.0-rc01

15. Dezember 2021

androidx.compose.runtime:runtime-*:1.1.0-rc01 wurde 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 wurde 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 wurde 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 wurde veröffentlicht. Version 1.1.0-beta02 enthält diese Commits.

API-Änderungen

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

Version 1.1.0-beta01

27. Oktober 2021

androidx.compose.runtime:runtime-*:1.1.0-beta01 wurde 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 wurde 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 verworfen und durch Recomposer.currentState ersetzt, um seinen 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 wurde 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 wurde 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 wurde veröffentlicht. Version 1.1.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Der Compose-Compiler unterstützt jetzt ältere Versionen der Compose Runtime (1.0). Vor dieser Änderung war der Compose-Compiler nur mit der Compose-Laufzeit derselben oder einer neueren Version kompatibel. Nach dieser Änderung ist der Compose-Compiler mit einer älteren Version der Compose-Laufzeit (1.0) kompatibel. (aosp/1796968)
  • Die Funktion „Compose“ (1.1.0-alpha03) wurde so aktualisiert, dass sie von „1.5.30“ in Kotlin abhängig ist. (I74545)

Version 1.1.0-alpha02

18. August 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha02 wurde 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 wurde 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 wurde veröffentlicht. Version 1.0.5 enthält diese Commits.

Fehlerkorrekturen

  • Ein Absturz-Tracking von RelatedStateOf-Instanzen wurde behoben. (aosp/1792247)

Version 1.0.4

13. Oktober 2021

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

Aktualisierung der Abhängigkeiten

  • Aktualisiert und abhängig von Kotlin 1.5.31

Version 1.0.3

29. September 2021

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

Aktualisierung der Abhängigkeiten

  • Aktualisiert und abhängig von Kotlin 1.5.30

Version 1.0.2

1. September 2021

androidx.compose.runtime:runtime-*:1.0.2 wurde 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 wurde veröffentlicht. Version 1.0.1 enthält diese Commits.

Aktualisierung der Abhängigkeiten

  • Aktualisiert und abhängig von Kotlin-1.5.21.

Version 1.0.0

28. Juli 2021

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

Hauptfunktionen von Version 1.0.0

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

Bekannte Probleme

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

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

    Erhöhen Sie in der Datei build.gradle vorübergehend Ihre minSdkVersion auf 24 oder höher, um das Problem zu beheben. 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 wurde veröffentlicht. Version 1.0.0-rc02 enthält diese Commits.

  • Race-Bedingungen in SnapshotStateObserver wurden behoben, die zu spurrischen NullPointerExceptions führten. (aosp/1763445, aosp/1758105, b/192677711)
  • Probleme mit Laufzeit-Snapshots, die 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ürze verursachten, wurden behoben. (b/193006595, b/192570897)

Version 1.0.0-rc01

1. Juli 2021

androidx.compose.runtime:runtime-*:1.0.0-rc01 wurde 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 wurde veröffentlicht. Version 1.0.0-beta09 enthält diese Commits.

Regeln für Profil hinzugefügt

In diesem Release werden den folgenden Erstellungsmodulen (I14ed6) Profilregeln hinzugefügt:

  • 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.geometrie
  • 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 der Textdatei baseline-prof.txt im src/main oder einem entsprechenden Verzeichnis angegeben. In der Datei ist eine Regel pro Zeile angegeben, wobei eine Regel in diesem Fall ein Muster für den Abgleich mit Methoden oder Klassen in der Bibliothek ist. Die Syntax für diese Regeln ist eine Obermenge des visuell lesbaren ART-Profilformats, das bei Verwendung von adb shell profman --dump-classes-and-methods ... verwendet wird. Für die Ausrichtung auf Methoden oder Klassen gibt es zwei Arten dieser Regeln.

  • Eine Methodenregel hat das folgende Muster:

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

    <CLASS_DESCRIPTOR>
    
  • Hier steht <FLAGS> für mindestens eines 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 sowie die Parametertypen und 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 umfasst.

Wozu dienen die Regeln?

  • Eine Methode mit dem Flag H gibt an, dass diese Methode eine "heiße" Methode ist und im Voraus kompiliert werden sollte.

  • Eine Methode mit dem Flag S gibt an, dass es sich um eine Methode handelt, die beim Start aufgerufen und im Voraus kompiliert werden sollte, um die Kosten für die Kompilierung und die Interpretation der Methode beim Start zu vermeiden.

  • Eine Methode mit dem Flag P gibt an, dass es sich um eine Methode handelt, die nach dem Start aufgerufen wird.

  • Eine in dieser Datei vorhandene Klasse gibt an, dass sie beim Start verwendet wird und im Heap zugewiesen werden sollte, um Kosten für das Laden der Klasse zu vermeiden.

So funktioniert's

  • Bibliotheken können diese Regeln definieren, die in AAR-Artefakte gepackt werden. 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 für die App spezifisch ist. ART kann dieses Profil dann bei der Installation der App auf Geräten nutzen, um im Voraus eine bestimmte Teilmenge der Anwendung zu kompilieren, um die Leistung der Anwendung zu verbessern, insbesondere bei der ersten Ausführung. Dies hat keine Auswirkungen auf Debug-fähige Anwendungen.

Version 1.0.0-beta08

2. Juni 2021

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

API-Änderungen

  • State<T> ist jetzt State<out T> (I69049)
  • ControlledComposition, um das Neuzusammensetzen von Änderungen in einer einzelnen Neuzusammensetzung zu aktivieren. (Iaafd1, b/184173932)

Version 1.0.0-beta07

18. Mai 2021

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

API-Änderungen

  • Es wurden neue Compiler-APIs hinzugefügt, mit denen die vom Compiler generierten Quellinformationen während der Quellminifizierung entfernt werden können. (Ia34e6)
  • Führt ReusableContent ein. Damit wird versucht, die Knoten in ihrem 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 Slottabelle für den Inhalt ignoriert, mit Ausnahme der generierten Knoten und der Werte, die zum Aktualisieren der Knoten verwendet wurden.

    Führt ReusableComposeNode ein, das den ausgegebenen Knoten wieder verwendet, 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 (nicht entsorgt), auch wenn sie bereits herausgescrollt werden. Dadurch kann die Komponente die aktiven Unterzusammensetzungen wiederverwenden, wenn ein neues Element erstellt werden muss, was das Scrollen verbessert. (IE5555)

Version 1.0.0-beta06

5. Mai 2021

androidx.compose.runtime:runtime-*:1.0.0-beta06 wurde 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 wurde veröffentlicht. Version 1.0.0-beta05 enthält diese Commits.

API-Änderungen

  • @InternalComposeApi für die Aufzeichnung von Lese- und Schreibvorgängen von Snapshots entfernt (Id134d)

Fehlerkorrekturen

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

Version 1.0.0-beta04

7. April 2021

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

Fehlerkorrekturen

  • Vor dieser Änderung waren lokale zusammensetzbare Funktionen aufgrund ihrer Parameter überspringbar. Nach dieser Änderung werden keine lokalen zusammensetzbaren Funktionen mehr übersprungen. Diese Änderung erfolgt, da lokale Funktionen häufig Parameter aus dem übergeordneten Element erfassen und dass das Überspringen eine häufige Ursache für Fehler ist.

    Betrachten Sie das folgende Beispiel zusammenzufassen:

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

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

  • Das Problem, dass rememberSaveable() bei Verwendung mit Eingabeparametern (I1b110, b/182403380) den alten Wert wiederhergestellt hatte, wurde behoben.

Version 1.0.0-beta03

24. März 2021

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

API-Änderungen

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

Version 1.0.0-beta02

10. März 2021

androidx.compose.runtime:runtime-*:1.0.0-beta02 wurde 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)
  • Behebung des fehlerhaften rememberSaveable { mutableStateOf(0) }, der innerhalb eines Ziels 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 wurde veröffentlicht. Version 1.0.0-beta01 enthält diese Commits.

Dies ist die erste Version der Betaversion von Compose 1.0.0.

API-Änderungen

  • Füge die experimentelle API Recomposer.runRecomposeConcurrentlyAndApplyChanges hinzu, mit der ungültige Kompositionen aus der Hauptframe-Schleife neu zusammengesetzt werden können. (I342d0)
  • Für alle mit @ReadOnlyComposable gekennzeichneten zusammensetzbaren Funktionen wird jetzt die Kompilierungszeit validiert, damit nur Aufrufe an andere @ReadOnlyComposables gesendet werden (I58961).
  • Der defaultFactory für compositionLocalOf und staticCompositionLocalOf ist jetzt erforderlich statt optional.

    Diese Änderung beseitigt einen potenziellen Typfehler für Typen, die keine Nullwerte zulassen können und für die keine Standard-Factory angegeben wurde. Bisher wurde dadurch eine Nullreferenz für einen Typ bereitgestellt, der keine Nullwerte zulässt.

    Für Typen, für die Nullwerte zulässig sind, sollten Sie { null } als Standardwerkstatt angeben.

    Wir raten davon ab, Local Guides mit Typen zu verwenden, die keine Nullwerte zulassen, es sei denn, es kann ein vernünftiger Standardwert angegeben werden. Wenn kein sinnvoller Standardwert vorhanden ist, sollte die Lambda-Funktion defaultFactory eine Ausnahme auslösen. Das Auslösen einer Ausnahme bedeutet jedoch, dass für lokale Nutzer eine implizite Abhängigkeit besteht, die vom Typsystem nicht erzwungen wird. (Ifbd2a)

  • Eingestellte Symbole wurden aus der Schreiblaufzeit entfernt (I3252c).

  • Die verworfene emptyContent() wurde entfernt. Verwende stattdessen {}. (Idb33f, b/179432510)

  • „Providers“ wurde in CompositionLocalProvider umbenannt

    • Der Kompositionskonstruktor akzeptiert keinen Schlüsselparameter mehr und wurde eingestellt.
    • currentCompositeKeyHash wurde in eine zusammensetzbare Top-Level-Eigenschaft anstelle einer zusammensetzbaren Top-Level-Funktion umgewandelt.
    • CompositionData und CompositionGroup wurden in den Namespace „androidx.compose.runtime.tooling“ verschoben
    • ComposableLambda wurde zu einer Schnittstelle anstelle einer konkreten Klasse gemacht und verfügt nicht mehr über Typparameter.
    • 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 @TestOnly-Funktion „clearRoots“ der obersten Ebene wurde entfernt. Es ist nicht mehr notwendig.
    • Die Funktionen „keySourceInfoOf“ und „resetSourceInfo“ wurden entfernt. Sie werden nicht mehr benötigt.
    • Composer.collectKeySourceInformation wurde entfernt. Es ist nicht mehr notwendig.
    • Die Methoden „isJoinedKey“, „joinKeyLeft“ und „joinKeyRight“ wurden entfernt. Sie werden nicht mehr benötigt.
    • Verschiedene APIs der obersten Ebene wurden verschoben und in verschiedene Dateien neu organisiert. Aufgrund der Semantik der Dateiklassen von Kotlin wird die Kompatibilität der Binärdateien, aber nicht der Quelldateien beeinträchtigt. Daher sollte es für die meisten Nutzer kein Problem sein.
    • (I99b7d, b/177245490)
  • SnapshotStateObserver ist nicht mehr experimentell (Id2e6a).

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

  • Folgende Änderungen an der Material API wurden vorgenommen:

    • Der Parameter "contentPadding" wurde zu Top/BottomAppBar hinzugefügt, um das Standard-Padding anzupassen.
    • Die Parameter in BackdropScaffold wurden neu angeordnet, um den API-Richtlinien für erforderliche Parameter vor optionalen Parametern zu entsprechen.
    • Der Parameter icon wurde in BottomNavigationItem hinter selected und onClick verschoben.
    • Der Parameter alwaysShowLabels in BottomNavigationItem wurde in alwaysShowLabel umbenannt.
    • bodyContent-Parameter in einigen Komponenten in content umbenannt.
    • Parameter in ButtonDefaults.buttonColors() neu angeordnet. Bitte beachten Sie, dass dies keinen Fehler in Ihrem Code verursacht, da sich der Typ der Parameter nicht geändert hat. Stellen Sie sicher, dass Sie entweder benannte Parameter verwenden oder die Reihenfolge manuell aktualisieren. Andernfalls funktioniert der Code nicht wie zuvor.
    • Der Parameter secondaryVariant wurde zu darkColors() hinzugefügt. Diese Farbe hat in der Regel die gleiche Farbe wie secondary im dunklen Design, sorgt aber für Einheitlichkeit und eine weitere Anpassung.
    • ElevationDefaults und animateElevation() wurden von der öffentlichen API-Oberfläche entfernt, da sie im Allgemeinen nicht verwendet wurden bzw. nicht nützlich waren.
    • onValueChangeEnd in Slider wurde in onValueChangeFinished umbenannt und Nullwerte zulässig.
    • 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. content wurde zu einer 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 wurde veröffentlicht. Version 1.0.0-alpha12 enthält diese Commits.

API-Änderungen

  • ViewGroups werden aus UiApplier nicht mehr unterstützt. Die verworfenen zusammensetzbaren Funktionen von emitView wurden entfernt. (Ifb214)
  • CompositionReference wurde in CompositionContext (I53fcb) umbenannt
  • "ComponentActivity.setContent" wurde nach "androidx.activity.compose.setContent" im Modul "androidx.activity:activity-compose" verschoben. (Icf416)
  • Die Snapshot API wurde aktualisiert, um sie an die API-Richtlinie anzupassen und interne Implementierungsklassen von der öffentlichen API auszublenden. (Id9e32)
  • Ambients wurden umbenannt, damit sie der Umbenennung von Ambient -> CompositionLocal entsprechen. Ambients hießen früher AmbientFoo, CompositionLocals heißt jetzt LocalFoo. (I2d55d)
  • „Ambient –“ wurde in „CompositionLocal“ und „AmbientOf / staticAmbientOf“ in „compositionLocalOf / staticCompositionLocalOf“ umbenannt. Diese Änderung verdeutlicht den Zweck von CompositionLocal: ein Mechanismus zum Bereitstellen / Abrufen von Werten für lokale Kompositionen. CompositionLocal-Instanzen sollten das Präfix Local vorangestellt werden, z. B. val LocalFoo = CompositionLocalOf { Foo() }. (Ia55b6)
  • „takeMutableSnapshot“ und „takeSnapshot“ sind jetzt Companion-Methoden des Snapshots. (I91f19)
  • @ComposableContract wurde zugunsten von drei weiteren spezifischen Annotationen 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)

  • emptyContent() und (@Composable () -> Unit).orEmpty() wurden eingestellt, da sie keine positiven Auswirkungen oder Werte mehr auf die Leistung haben (I0484d).

  • snapshotFlow und withMutableSnapshot sind nicht mehr experimentell (I6a45f).

  • Recomposeren können jetzt geschlossen werden. Geschlossene Recomposeren setzen die Neuzusammensetzung fort, bis die untergeordneten Koroutinen der Komposition abgeschlossen sind. Recomposer.shutDown wurde umbenannt, um den Vorgang abzubrechen und einen Kontrast mit dem Schließen zu bilden. (Ib6d76)

  • Das Artefakt compose:runtime-dispatch wurde verworfen. MonotonicFrameClock befindet sich jetzt in Composer:runtime und AndroidUiDispatcher ist in Composer:ui. (Ib5c36)

  • Die API, auf die das Compiler-Plug-in ausgerichtet ist, wurde so umgestaltet, dass anstelle einer konkreten Klasse eine Schnittstelle verwendet wird. Auf der Benutzeroberfläche wird auch kein Typparameter mehr verwendet.

    Dies ist eine interne Änderung, die sich nicht auf die Kompatibilität des Quellcodes auswirken sollte, aber eine funktionsgefährdende Änderung darstellt. (I3b922, b/169406779)

  • SnapshotMutableState wurde eingeführt (Icfd03).

  • DisposableEffectDisposable wurde in DisposaleEffectResult (Ica7c6) umbenannt

  • Recomposer.current() wurde entfernt. [Zusammenfassung]ComposeView verwendet jetzt standardmäßig verzögert erstellte, fensterbezogene Recomposers, die vom ViewTreeLifecycleOwner für das Fenster gesteuert werden. Neuzusammensetzung und mit FrameNanos basierende Animationsticks werden pausiert, während der Hostlebenszyklus gestoppt wird. (I38e11)

  • Recomposer.runningRecomposers bietet jetzt einen globalen StateFlow aus schreibgeschütztem RecomposerInfo zur Beobachtung des aktuellen Kompositionsstatus im Prozess. Ziehen Sie diese API der mittlerweile verworfenen API Recomposer.current() vor. (If8ebe)

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

Version 1.0.0-alpha11

28. Januar 2021

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

API-Änderungen

  • onCommit, onDispose und onActive wurden zugunsten der SideEffect und DisposableEffect APIs eingestellt (If760e)
  • Die emit() API und alle Überlastungen wurden verworfen und in ComposeNode umbenannt. Die APIs sind identisch, nur unter einem anderen Namen, um den Namenskonventionen in „Compose“ (I4137b) zu entsprechen.
  • invalid und summaryReference() wurden zugunsten von currentRecomposeScope bzw. memoryCompositionReference verworfen. (I583a8)
  • SaveObserver ersetzt CompositionLifecycleObserver und CompositionLifecycleObserver wird jetzt eingestellt.

    RememberObserver ersetzt CompositionLifecycleObserver mit geänderter Semantik und umbenannten Methoden. Der Wechsel zur neuen API kann mechanisch für Objekte erfolgen, die nur einmal im Gedächtnis bleiben. Dies ist und ist die empfohlene Vorgehensweise. Wenn jedoch eine Referenz in einer Zusammensetzung mehrmals gespeichert wurde, wird onRemembered für jede Referenz aufgerufen, wobei onEnter nur einmal aufgerufen wird. onEnter wurde mehrmals aufgerufen, wenn das Objekt in Unterzusammensetzungen wie WithConstraints und Scaffold verwendet wurde, wodurch der einzelne onEnter-Aufruf garantiert unzuverlässig war und für RememberObserver entfernt wurde.

    RememberObserver fügt onAbandoned hinzu. Dieser wird aufgerufen, wenn die RememberObserver-Instanz von dem an remember übergebenen Callback zurückgegeben wird, aber im Zusammensetzungsstatus nicht gespeichert wurde. Daher wird onRemembered niemals aufgerufen. Dies kann auftreten, wenn eine Ausnahme die Komposition vor Fertigstellung beendet oder die Komposition verworfen wird, weil der Status, für den eine Komposition erzeugt wurde, nicht mehr aktuell ist oder aus anderen Gründen nicht mehr benötigt wird. Wenn die Instanz von RememberObserver gemäß der Empfehlung oben eine externe Ressource verfolgt, zeigen sowohl onForgotten als auch onAbandoned an, dass die Ressource nicht mehr benötigt wird. Wenn das Objekt die gestartete Arbeit oder in onRemembered 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 zu "foundation.layout" verschoben. (I9420b, b/173387208)
  • TestCoroutineDispatcher beim Testen nutzen (I532b6)

Version 1.0.0-alpha10

13. Januar 2021

androidx.compose.runtime:runtime-*:1.0.0-alpha10 wurde 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 durch die Zusammensetzung generiert wurden, in Batches in die Phase „Änderungen anwenden“ der Zusammensetzung aufgenommen werden, nachdem alle @Composable-Funktionen abgeschlossen sind.

    Dies ist eine funktionsgefährdende Änderung, die sich auf den Anwendungscode auswirken kann, da Knoten erst nach dem Anwenden der Änderungen über interne und experimentelle APIs verfügbar sind. Dies lässt sich normalerweise umgehen, indem Code mit solchen Abhängigkeiten in einer zusammensetzbaren SideEffect-Funktion umschlossen wird, um die Ausführung des Codes so lange zu verschieben, bis die Knoten erstellt und initialisiert wurden. (I018da)

API-Änderungen

  • Es wurde eine Möglichkeit hinzugefügt, nachzuverfolgen, ob der Recomposer Änderungen vorgenommen hat. (I1b3e2)
  • Erweitern Sie [Zusammenfassung]ComposeView-APIs, um das Recycling von Erstellungsansichten zu ermöglichen. Die Zusammensetzung wird später entsorgt, um sie neu zu erstellen. APIs zum Installieren und Erkennen von fensterbezogenen Recomposers und CompositionReferences zum Erstellen untergeordneter Kompositionen hinzufügen

    Fügen Sie ViewCompositionStrategy hinzu, um die Entsorgungsstrategie für die Komposition von [Zusammenfassung]ComposeViews zu konfigurieren. Das Standardverhalten ist die Beseitigung beim Trennen des Fensters. (I860ab)

Fehlerkorrekturen

  • Recomposer zeigt jetzt einen Ablauf mit seinem aktuellen Status an, sodass die Aktivitäten und die Aktivität der zugehörigen Auswirkungen überwacht werden können. (Ifb2b9)
  • Auf das native "keyEvent" kann jetzt über "keyEvent.nativeKeyEvent" (I87c57, b/173086397) zugegriffen werden.

Version 1.0.0-alpha09

16. Dezember 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha09 wurde 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 gekennzeichnet. Jetzt sind sie Teil des Schreiben-Moduls.

    CompositionData und CompositionGroup wurden als Ersatz für die UI-Tooling API hinzugefügt, mit der Zusammensetzungsinformationen extrahiert werden können. Diese sind öffentlich, aber nicht für die Verwendung außerhalb der UI-Tooling API gedacht, da sie die Rohinformationen liefern, die von der UI-Tooling API interpretiert werden (I31a9c).

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

  • Die Schnittstelle Applier wurde geändert, um das Erstellen von Baumstrukturen mit dem Bottom-up-Ansatz anstatt von oben nach unten zu vereinfachen.

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

    Die neue Methode insertBottomUp() wurde hinzugefügt.

    Ein Applier fügt entweder Knoten mit insertTopDown() oder insertBottomUp() in den Baum ein, den er bearbeitet, je nachdem, was besser ist.

    Einige Bäume, z. B. LayoutNode und View, lassen sich viel effizienter als Draufsicht erstellen. Vor dieser Änderung war ein Stack von Einfügungen erforderlich, um Bottom-up-Ansätzen zu entsprechen. Diese mussten dann in alle Anwendungen kopiert werden, für die eine Bottom-up-Konstruktion erforderlich war, um die Leistung zu verbessern. Mit dieser Änderung überschreibt ein Applier insertBottomUp(), um einen Baum von unten nach oben zu erstellen, und insertTopDown(), um ihn von oben nach unten zu erstellen. (Icbdc2)

  • Compose unterstützt Eigenschafts-Getter, die zusammensetzbare Aufrufe erstellen können. Die Unterstützung dafür wird nicht eingestellt, aber die Syntax zum Deklarieren eines Eigenschafts-Getters als @Composable ändert sich.

    Die inzwischen eingestellte Syntax dafür war das Annotieren der Eigenschaft selbst:

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

    Die korrekte Syntax hierfür ist jetzt das Annotieren des Getters der Eigenschaft:

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

    Beide Syntaxen funktionieren noch eine Zeit lang, aber die alte eingestellte Syntax wird irgendwann zu einem Kompilierungsfehler werden. (ID9197)

Fehlerkorrekturen

Version 1.0.0-alpha08

2. Dezember 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha08 wurde 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 Konsistenz mit den Richtlinien zum Schreiben zu prüfen. Außerdem wurden einige APIs gemäß der Lint-Prüfung und der Anleitung mit children als Namen für das nachgestellte Lambda zu content migriert. (Iec48e)
  • Recomposer akzeptiert einen „EmbeddingContext“ nicht mehr; die erforderlichen Planungsabhängigkeiten werden aus „EffectCoroutineContext“ abgerufen. FrameManager wurde eingestellt. Plattformintegrationen sollten ihre eigene globale Snapshot-Verarbeitung initialisieren. (I02369)
  • Die Funktion RestorableStateHolder.withRestorableState wurde in RestorableStateProvider (I66640) umbenannt

Fehlerkorrekturen

  • Die eingestellten Ambients mit dem Suffix Ambient wurden gemäß den anderen Richtlinien für Ambients und Compose API durch neue Properties mit dem Präfix „Inaktiv“ ersetzt. (I33440)
  • Entfernen Sie das alte UI-Test-Modul und die zugehörigen Stubs (I3a7cb).

Version 1.0.0-alpha07

11. November 2020

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

Neue Funktionen

API-Änderungen

  • Die Annotation @UnionType wurde verworfen (I57cde).
  • „Bereitstellen“ wurde als Alternative zur Bereitstellung von Umgebungswerten hinzugefügt. Damit können Umgebungswerte angegeben werden, die nur festgelegt werden, wenn noch kein Umgebungswert angegeben wurde. (Id6635, b/171024925)
  • „LaunchedTask“ wurde in „LaunchedEffect“ umbenannt, um die Konsistenz mit den SideEffect und DisposableEffect APIs zu verbessern. "LaunchedEffect" ohne Subjektparameter ist nicht zulässig, um Best Practices zu fördern. (Ifd3d4)
  • Applier verfügt jetzt über onBeginChanges/onEndChanges-Callbacks, die aufgerufen werden, wenn ein Composer mit der Anwendung von Änderungen auf die Baumstruktur beginnt bzw. fertig ist. Sie können bei Bedarf für die Batch-Ressourcenverwaltung verwendet werden. (Icf476)
  • Recomposer erfordert jetzt bei der Erstellung einen CoroutineContext (Ic4610).
  • Änderungen an der internen SlotTable-Implementierung, die sich nicht auf die öffentliche API auswirken sollten (If9828)
  • Veraltete rxjava2-Adapter, die nicht den ursprünglichen Wert verwenden, wurden entfernt (Idb72f).

Fehlerkorrekturen

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

Externer Beitrag

  • Das runtime-rxjava3-Modul zum Schreiben wurde hinzugefügt. Ähnlich wie runtime-rxjava2 (I02cbf)

Version 1.0.0-alpha06

28. Oktober 2020

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

API-Änderungen

  • Recomposer ist jetzt eine CompositionReference und ein gültiges übergeordnetes Kompositionselement. Expliziter Recomposer ist jetzt an weniger Stellen erforderlich. (I4036f)
  • SideEffect wurde ein DisposableEffect-Gegenstück-API hinzugefügt, das die Rolle von onCommit-with-params füllt, jedoch mit der erforderlichen onDispose-Funktion.
    • Die Funktion „memoryUpdatedState“ wurde hinzugefügt, um Daten von der Neuzusammensetzung in laufende oder langlebige Prozesse wie DisposableEffects oder LaunchedTasks zu veröffentlichen.
    • (ID50b9)
  • MutableVector implementiert jetzt RandomAccess (I85d73, b/170461551).
  • Die zusammensetzbare Funktion „SideEffect“ kann hinzugefügt werden, um Nebeneffekte der Zusammensetzung auf Objekte anzuwenden, die von der Komposition verwaltet werden. SideEffect ist dafür vorgesehen, die zusammensetzbare onCommit-Funktion zu ersetzen. (Ia77c2)
  • Neue experimentelle API RestorableStateHolder. Damit kann der mit [SavedInstanceState] und [rememberSavedInstanceState] für die Unterstruktur definierte Status gespeichert werden, bevor sie verworfen wird. So ist es möglich, sie beim nächsten Mal mit dem wiederhergestellten Status wieder zusammenzustellen. (I66884, b/166586419)

Fehlerkorrekturen

  • Aktivieren Sie Übergänge in ComposeTestRule; entfernen Sie die Option, um den blinkenden Cursor in ComposeTestRule zu aktivieren. (If0de3)

Version 1.0.0-alpha05

14. Oktober 2020

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

API-Änderungen

  • Experimental Modifier.pointerInput zum Sperren des Eingabemodifikators (Ia77d2)
  • Die Scrollleistung von LazyColumn/Row wird verbessert, indem bei jedem Scrollen weniger Arbeit an der Unterzusammensetzung ausgeführt wird. Für die Composition-Klasse wurde die neue Methode hasInvalidations() hinzugefügt. Die Methode "hasPendingChanges()" von Recomposer wurde in hasInvalidations() umbenannt (Ib2f32, b/168293643, b/167972292, b/165028371).
  • ProduState API zum Starten von Koroutinen aus der Zusammensetzung hinzufügen, 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).
  • Durch die Reihenfolge der „place()“-Aufrufe in benutzerdefinierten Layouts wird jetzt die Zeichenreihenfolge für die untergeordneten Elemente definiert (Ibc9f6).

Version 1.0.0-alpha04

1. Oktober 2020

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

API-Änderungen

  • "OwnerScope" wurde hinzugefügt, um das Erfassen von Layout- und Zeichnen von Beobachtungsbereichen zu ermöglichen, sobald diese nicht mehr gültig sind. (Ic4cf8)
  • Es wurde die abgeleitete StateOf API hinzugefügt, um State-Objekte auf der Grundlage einer Berechnung zu erstellen, die andere State-Objekte lesen (und davon ableiten kann) (If758b)
  • TestOnly API für SnapshotStateObserver hinzugefügt (I6e2a9)

Fehlerkorrekturen

  • Foundation.Box wurde eingestellt. Verwende stattdessen „foundation.layout.Box“. (Ie5950, b/167680279)

Version 1.0.0-alpha03

16. September 2020

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

API-Änderungen

  • Mit CompositionCoroutineScope wird MonotonicFrameClock nicht mehr implementiert. Aufrufer von withFrameNanos sollten die Funktion der obersten Ebene explizit importieren. (Icb642, b/166778123)

Fehlerkorrekturen

  • Globale Testfunktionen wie onNode oder waitForIdle wurden verworfen. Migrieren Sie zu ihren neuen Gegenstücken, die in ComposerTestRule (I7f45a) definiert sind.
  • launchInComposition startet keine nicht weitergeleiteten Koroutinen mehr (Ief6af, b/166486000)

Version 1.0.0-alpha02

2. September 2020

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

API-Änderungen

  • Fügen Sie die APIs snapshotFlow und withMutableSnapshot hinzu, um Snapshot-Datenänderungen zu verarbeiten und zu generieren. (I3e722)
  • Die Aufrufkonvention für zusammensetzbare Funktionen hat sich geändert. Dies ist eine funktionsgefährdende Änderung des Binärprogramms. Alle Bibliotheken müssen neu kompiliert werden, damit sie mit dieser Version des Compiler-Plug-ins funktionieren.

    Diese Änderung führt nicht zu einer funktionsgefährdenden Änderung auf Quellebene, da die einzigen geänderten APIs Compiler-APIs sind, die explizit aktiviert werden. (I7afd2, b/158123185)

  • Planungsmethoden wurden aus EmbeddingContext (I7b9be) entfernt.

  • onPreCommit wurde verworfen. Das Verhalten von onPreCommit ist jetzt wieder verfügbar.

    onCommit und onActive werden jetzt in demselben Choreografen-Frame ausgeführt, in dem sich die Komposition ändert, und nicht am Anfang des nächsten Choreografen-Frames. (I70403)

Version 1.0.0-alpha01

26. August 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha01 wurde 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 wurde veröffentlicht. Version 0.1.0-dev17 enthält diese Commits.

API-Änderungen

  • Benutzerdefinierte Emits können jetzt deklarieren, dass einer oder mehrere seiner Setter unabhängig vom Emit übersprungen und neu zusammengesetzt werden können. (Ibbd13)
  • Die eingestellten FrameManager-Aufrufe wurden entfernt.

    Interne APIs zur Zusammensetzung wurden geändert, um den Aufwand für das Tracking von Statusobjekten wie mutableStateof() (I80ba6) zu reduzieren.

  • Die zusammensetzbare Funktion state { ... } wurde zugunsten expliziter Aufrufe von remember { mutableStateOf(...) } eingestellt. Dies reduziert die API-Oberfläche insgesamt und die Anzahl der Konzepte für die Statusverwaltung. Außerdem entspricht es dem Muster by mutableStateOf() für die Delegierung von Klassenattributen. (Ia5727)

  • Flow.collectAsState bestimmt jetzt den Standard-Dispatcher anhand der Komposition selbst und nicht mehr standardmäßig auf Dispatchers.Main. (I9c1d9)

  • Absturz, wenn ein Problem behoben wurde, das den Status in der For-Schleife speichert. Da nun derselbe Schlüssel in savedInstanceState() zulässig ist, ist die API von UiSavedStateRegistry an diese neue Anforderung angepasst (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561).

Fehlerkorrekturen

  • emitView“ wurde eingestellt. Verwenden Sie nach Möglichkeit stattdessen AndroidView, um Ansichten innerhalb von „Compose“ auszugeben. Beachten Sie, dass das direkte Erstellen von Ansichten und ViewGroups in Zukunft nicht mehr unterstützt wird, es sei denn, es handelt sich dabei um Blätter im Erstellungsbaum. Dies ist dann der Fall, wenn dies mit AndroidView möglich ist. (I29b1e, b/163871221)

Version 0.1.0-dev16

5. August 2020

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

API-Änderungen

  • Die Standardrichtlinie für die Mutation mutableStateOf(), ambientOf() und savedInstanceStateOf() ist jetzt structuralEqualityPolicy() anstelle von referentialEqualityPolicy().

    Standardmäßig wird jetzt == anstelle von === verwendet, um zu entscheiden, ob ein neuer Wert, der einer mutableStateOf()-Instanz zugewiesen ist, als Änderung betrachtet wird.

    Siehe https://kotlinlang.org/docs/reference/equality.html

    ambientOf() und savedInstanceStateOf() verwenden mutableStateOf() in ihren Implementierungen. Daher wurden sie so geändert, dass sie mit mutableStateOf() konsistent sind.

    Die Verwendung struktureller Gleichheit entspricht eher den Entwicklererwartungen.

    Beispiel:

    val state = mutableStateOf(1f)
    

    gefolgt von:

    state.value = 1f
    

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

    Dies ist zwar eine funktionsgefährdende Änderung, hat aber in den meisten Fällen (z. B. bei der Verwendung von Klassen, die equals() nicht überschreiben) keine nennenswerten Auswirkungen auf eine Anwendung.

    Bei Klassen, die equals() überschreiben, z. B. bei 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 durch Hinzufügen des Richtlinienparameters policy = referentialEqualityPolicy() zu Aufrufen von mutableStateOf(), ambientOf() und savedInstanceStateOf() wiederhergestellt werden. (IC21a7)

  • Row und Column sind jetzt Inline-Funktionen, die den Aufwand für ihre Verwendung erheblich reduzieren. (I75c10)

Fehlerkorrekturen

  • „setViewContent“ wurde eingestellt. Verwenden Sie stattdessen „setContent“. (I7e497, b/160335130)
  • MonotonicFrameAnimationClock wurde hinzugefügt, mit dem Sie eine MonotonicFrameClock als AnimationClockObservable verwenden können, um die Lücke zwischen den neuen auf Koroutinen basierenden Uhren und APIs zu schließen, die noch die alten Callback-basierten Uhren verwenden.

    Das MonotonicFrameClock-Äquivalent zu manualAnimationClock ist jetzt „manualFrameClock“. (I111c7, b/161247083)

  • „Modifier.stateDraggable“ wurde vollständig überarbeitet und in „Modifier.sWipeable“ umbenannt. Eine neue SwipeableState-Klasse wurde eingeführt und DrawerState und BottomDrawerState wurden so refaktoriert, dass sie von ihr übernommen werden. [Modal/Bottom]DrawerLayout nimmt keinen onStateChange-Parameter mehr an. (I72332, b/148023068)

  • Modifier.plus wurde eingestellt. Verwenden Sie stattdessen "Modifier.then". „Then“ (Dann) hat ein stärkeres Signal für die Reihenfolge, während gleichzeitig die Eingabe von Modifier.padding().background() + anotherModifier verhindert wird, wodurch die Kette unterbrochen wird und schwerer zu lesen ist (Iedd58, b/161529964).

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

  • Material FilledTextField wurde in TextField und grundlegendes TextField in BaseTextField umbenannt, damit die einfachste gewünschte API leicht 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 wurde veröffentlicht. Version 0.1.0-dev15 enthält diese Commits.

Abhängigkeiten aktualisieren

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

API-Änderungen

  • Die Anmerkung @Model wurde verworfen. Verwenden Sie „state“ und „mutableStateOf“ als Alternativen. Diese Entscheidung über die Einstellung wurde nach sorgfältiger Diskussion getroffen.

    Begründung

    Mögliche Gründe:

    • Reduziert die API-Oberfläche und die Konzepte, die wir vermitteln müssen
    • Bessere Anpassung an andere vergleichbare Toolkits (Swift UI, React, Flutter)
    • Reversible Entscheidung. @Model kann später jederzeit wiederhergestellt werden.
    • Vermeidet Grenzfälle und schwierig zu beantwortende Fragen zur Konfiguration von @Model als Aufgaben, die wir übernehmen müssen.
    • @Model-Datenklassen, ist gleich, Hashcode usw.
    • Wie kann ich dafür sorgen, dass einige Eigenschaften „beobachtet“ werden und andere nicht?
    • Wie lege ich fest, ob strukturelle und referenzielle Gleichheit in der Beobachtung verwendet werden soll?
    • Reduziert „Magie“ im System. Würde die Wahrscheinlichkeit verringern, dass jemand annimmt, dass das System intelligenter ist als es ist (d. h., es wüsste, eine Liste zu vergleichen)
    • Macht die Granularität der Beobachtung intuitiver.
    • Verbessert die Refaktorierbarkeit von Variablen -> Eigenschaft für Klasse
    • Gibt möglicherweise Möglichkeiten für handgefertigte zustandsspezifische Optimierungen frei
    • Passt besser zum Rest des Ökosystems und reduziert die Ambiguität in Bezug auf unveränderliche oder uns „veränderliche Zustand“.

    Hinweise zur Migration

    Fast alle bestehenden Nutzungen von @Model werden auf eine von zwei Arten transformiert. Das folgende Beispiel hat eine @Model-Klasse mit zwei Attributen, die nur für dieses Beispiel genutzt werden, und 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,
        p.x = it }
        p.y = it }
     )
    }
    

    Alternative 1: State<OriginalClass> verwenden und Kopien erstellen.

    Dieser Ansatz wird durch die Datenklassen von Kotlin vereinfacht. Im Wesentlichen wandeln Sie alle zuvor var-Properties in val-Properties einer Datenklasse um, verwenden dann state anstelle von remember und weisen den Statuswert geklonten Kopien des Originals mithilfe der Datenklasse-copy(...)-Methode zu.

    Beachten Sie, dass dieser Ansatz nur funktioniert, wenn die einzigen Mutationen an dieser Klasse im selben Bereich wie die State-Instanz vorgenommen wurden. Wenn sich die Klasse intern außerhalb des Anwendungsbereichs ändert und Sie sich auf diese Beobachtung verlassen, ist der nächste Ansatz der richtige Ansatz, den Sie verwenden werden.

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

    Alternative 2: „MadableStateOf“ und Property-Bevollmächtigte verwenden

    Dieser Ansatz wird durch die Property-Delegaten von Kotlin und die mutableStateOf API vereinfacht, mit der Sie MutableState-Instanzen außerhalb der Komposition erstellen können. Ersetzen Sie im Wesentlichen alle var-Properties der ursprünglichen Klasse durch var-Properties mit mutableStateOf als Property-Delegaten. Dies hat den Vorteil, dass sich die Verwendung der Klasse überhaupt nicht ändert, sondern nur ihre interne Implementierung. Das Verhalten ist jedoch nicht ganz mit dem ursprünglichen Beispiel identisch, da jetzt jede Property einzeln beobachtet/abonniert wird. Daher könnten die Neuzusammensetzungen, die Sie nach dieser Refaktorierung sehen, enger gefasst sein (eine gute Sache).

    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,
        p.x = it }
        p.y = it }
     )
    }
    

    (I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/7143263) b/143263}

  • Ändert die Strategie zur Codegenerierung des Compose-Compilers. Vor der Änderung hat der Compiler Aufrufe in zusammensetzbare Funktionen transformiert. Mit dieser Änderung transformieren wir jetzt den Text einer zusammensetzbaren Funktion und lassen die Aufrufsite (meistens) unverändert.

    Das bedeutet, dass die meiste Logik der Kommunikation mit der Compose-Laufzeit am Anfang des Funktionstexts und nicht auf der Aufrufseite stattfindet.

    Die Änderung sollte mit der Quelle kompatibel sein, wenn Sie den Editor verwenden. Die meisten Nutzer des Editors sollten aufgrund dieser Änderung keinen Code aktualisieren müssen.

    Um diese Arbeit zu unterstützen, wurde die JVM-Signatur aller zusammensetzbaren Funktionen geändert. Eine zusammensetzbare Funktion, die einen einzelnen Parameter akzeptiert, wird in eine Funktion umgewandelt, die drei Parameter akzeptiert. Die zusätzlichen Parameter sind der Composer, eine „Schlüssel“-Ganzzahl, eine Bitmasken-Ganzzahl zur Weitergabe von Metadaten durch Aufrufe.

    „Compose“ wandelt jetzt auch Standardargumente in eine zusammensetzbare Funktion um. Dies geschieht, ohne eine zusätzliche synthetische Standardüberlastung der Funktion selbst einzuführen, sodass diese Änderung dazu führt, dass weniger Funktionen definiert werden.

    Bekannte beabsichtigte Verhaltensänderungen, die sich daraus ergeben:

    1. Einige Anrufe werden an der Stelle übersprungen, an der sie vorher nicht gekommen wären
    2. Zusammensetzbare Ausdrücke in Standardargumentausdrücken werden jetzt korrekt abonniert und verarbeitet

    Im Rahmen dieser Arbeit wurden einige Optimierungen vorgenommen: 1. Das Ergebnis von Vergleichen von Parametern wird über die Aufrufgrafik an andere zusammensetzbare Funktionen weitergegeben. Dies führt zu weniger Vergleichen während der Laufzeit, verringert die Größe der Slot-Tabelle und führt häufiger das Überspringen zusammensetzbarer Funktionen, die zuvor nicht übersprungen wurden.2 Parameter, die zum Zeitpunkt der Kompilierung als „statisch“ eingestuft werden, werden nicht mehr in der Laufzeit verglichen oder gespeichert. Dies reduziert die Anzahl der Vergleiche und verringert die Größe der Slot-Tabelle. 3. Die Ablaufstruktur des Funktionskörpers wird verwendet, um die Anzahl der generierten Gruppen zu minimieren. Dies reduziert die Größe der Slottabelle und führt zu weniger Arbeit für die Laufzeit. 4. Nicht verwendete Weiterleitungs- und Empfängerparameter für Funktionen werden bei der Bestimmung der Überspringbarkeit der Funktion nicht berücksichtigt, wenn sie nicht innerhalb des Hauptteils der Funktion verwendet werden.

    Die meisten funktionsgefährdenden Änderungen betreffen APIs, auf die der Compiler direkt abzielt. Die typische Verwendung des Editors ist davon nicht betroffen: 1. Composer::startExpr wurde entfernt. 2. Composer::endExpr wurde entfernt. 3. Composer::call wurde eingestellt. 4. Die Nicht-varargs-Überlasten von key wurden entfernt. Verwende ab sofort die vararg-Version. 5. Die Pivotal-Anmerkung wurde eingestellt. Du kannst key als Ersatz verwenden. 6. „ScopeUpdateScope::updateScope“ wurde geändert und erwartet nun eine „Function3“ anstelle von „Function1“. 7. „renewableFunction“ und „renewableFunctionN“ wurden um zusätzliche Parameter für die Kompilierungszeit aktualisiert (I60756, b/143464846).

  • "sortWith" und "removeRange" wurden zu MutableVector hinzugefügt (Icccf7).

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

  • Applier erfordert jetzt eine Clear()-Methode zum Entfernen von Kompositionen (Ibe697).

  • asMutableList() wurde zu MutableVector hinzugefügt, damit es an die öffentliche API übergeben werden kann, ohne die gesamte Liste kopieren zu müssen. (I298df)

  • Es wurde „memoryCoroutineScope()“ hinzugefügt, um einen verwalteten CoroutineScope bei der Zusammenstellung zum Starten von Jobs als Reaktion auf Ereignisse abzurufen. (I0e264)

  • MutableVector ist eine neue Sammlung, in der keine der Standardoberflächen für Sammlungen implementiert ist. Diese Sammlung ist schneller als andere Anforderungen und ist nur für interne Implementierungen vorgesehen. (I8ebd6)

  • StableMutableList und StableMutableMap wurden vorübergehend entfernt, um Probleme in der von Kotlin erstellten Version zu vermeiden. Diese Oberflächen werden wieder eingeführt, sobald das Schreiben auf eine Kotlin-Version aktualisiert wurde, bei der dieses Problem nicht vorliegt.

    SnapshotStateList und SnapshotStateMap sind jetzt öffentlich, werden aber verworfen, sobald StableMutableList und StableMutableMap wiederhergestellt wurden. (Ia7769)

  • Übergeordnete withFrameNanos-Funktion für das Animations-Timing hinzufügen (Ie34c5)

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

  • RestartableFunction und die zugehörigen APIs wurden in ComposableLambda usw. umbenannt. Diese APIs wurden nur vom Compiler angegriffen, sodass sich dies normalerweise nicht auf die Kompatibilität auf Quellebene auswirken sollte. Durch die Umbenennung soll in erster Linie vermittelt werden, welche Klasse diese Klasse besser ist, wenn sie in Stacktraces angezeigt wird (I7eb25).

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

  • Ambient<T> ist jetzt @Stabil statt @Unveränderlich (I0b4bb)

  • Vor dieser Änderung hat das Compiler-Plug-in Aufrufe an Konstruktoren innerhalb einer @Composable-Funktion nicht trivilegisch abgefangen, wenn ein (I5205a, b/158123804) vorhanden war.

  • Die zusammensetzbare Funktion „Neu zusammensetzen“ ist keine nützliche Abstraktion mehr. Die Neuzusammensetzung sollte in der Regel als Ergebnis von MutableState-Zuweisungen erfolgen. Für alle anderen Bereiche wird empfohlen, die invalidate-Funktion 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, der es ermöglicht, den Anfangswert vorab auszufüllen, sodass der zurückgegebene Status keine Nullwerte zulässt (I61dd8, b/156233789).

  • Ein Adapter für Flow wurde hinzugefügt. Beispiel für die Verwendung: val-Wert durch Ablauf.collectAsState() (If2198, b/153375923)

  • [Mutable]Operatoren von Status-Property-Delegationen wurden in Erweiterungen verschoben, um Optimierungen für Kotlin 1.4-Property-Delegationen zu unterstützen. Aufrufer 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 androidx.compose.Emittable verschoben. Es war redundant mit ComponentNode. androidx.compose.ViewAdapters wurde entfernt. Sie werden nicht mehr unterstützt. Compose.composeInto wurde eingestellt. Verwende stattdessen setContent oder setViewContent. „Compose.disposeComposition“ wurde eingestellt. Verwenden Sie stattdessen die Methode dispose für die von setContent zurückgegebene Composition. androidx.compose.Compose.subcomposeInto wurde in androidx.ui.core.subcomposeInto verschoben. ComponentNode#emitInsertAt wurde in ComponentNode#insertAt ComponentNode#emitRemoveAt umbenannt in ComponentNode#removeAt ComponentNode#emitMode umbenannt in Component0#moveIdefComponentNode0.Idef.

  • Das Flag ComposeFlags.COMPOSER_PARAM wurde auf true aktualisiert. Dadurch wird die Strategie zur Codegenerierung für das Editor-Plug-in geändert. Auf übergeordneter Ebene werden @Composable-Funktionen mit einem zusätzlichen synthetischen Parameter generiert, der an nachfolgende @Composable-Aufrufe übergeben wird, damit die Laufzeit die Ausführung ordnungsgemäß verwalten kann. Dies ist eine erhebliche funktionsgefährdende Änderung, die jedoch bei jeder genehmigten Verwendung des Editors auf Quellebene die Kompatibilität beibehalten sollte. (I7971c)

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

  • ui-livedata wurde hinzugefügt: neues Artefakt mit einem Adapter für LiveData. Beispiel für die Verwendung: val-Wert durch liveData.observeAsState() (Ie9e8c, b/150465596)

  • Rx-Adapter ohne expliziten Anfangswert wurden eingestellt. Die Verwendung von null ist nicht immer die beste Standardeinstellung. Wenn Sie beispielsweise eine Liste haben, 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-Wert durch beobservable.subscriptionAsState() (Ifab4b, b/153369097)

  • savedInstanceState() kann jetzt mit Typen verwendet werden, für die Nullwerte zulässig sind (I6847f, b/153532190).

  • Neue listSaver() und mapSaver() zum einfacheren Schreiben benutzerdefinierter Saver-Objekte (I8cf68, b/152331508)

  • Neue Funktionen: „SavedInstanceState()“ und „memorySavedInstanceState()“. Sie ähneln „state()“ und „memory()“, haben aber eine integrierte Unterstützung des gespeicherten Instanzstatus (If1987, b/152025209).

Fehlerkorrekturen

  • runOnIdleCompose umbenannt in runOnIdle (I83607)
  • Experimentelle LayoutNode-API erstellt (I4f2e9)
  • „androidx.ui.foundation.TextFieldValue“ und „androidx.ui.input.EditorValue“ wurden eingestellt. Zusammensetzbare Funktionen für TextField, FilledTextField und CoreTextField, die diesen Typ verwenden, wurden ebenfalls eingestellt. Verwenden Sie stattdessen androidx.ui.input.TextFieldValue (I4066d, b/155211005).
  • Die eingestellte DrawBackground API wurde zugunsten der Erweiterungs-APIs „drawBackground“ im Modifier entfernt. refaktorierte „color“-, „pinsel“- und „colordBackground“-Implementierungen, um Codepfade zu reduzieren und die Notwendigkeit, dass Modifier als Teil der Komposition erstellt werden muss, zu reduzieren. (I0343a)
  • Wir haben die Erstellung von APIs auf höherer Ebene aktualisiert, die einen Canvas zur Verfügung stellen, um stattdessen CanvasScope bereitzustellen. Nutzer müssen dadurch ihre eigenen Paint-Objekte nicht mehr verwalten. Nutzer, die weiterhin Zugriff auf einen Canvas benötigen, können die Erweiterungsmethode „drawCanvas“ verwenden. Sie bietet einen Callback, um Zeichenbefehle mit dem zugrunde liegenden Canvas auszugeben. (I80afd)
  • Die nachgestellte Lambda API mit Einschränkungen wurde geändert. Jetzt hat es anstelle von zwei Parametern einen Empfängerbereich, der zusätzlich zu den Einschränkungen und „layoutDirection“ die Eigenschaften „minWidth“, „maxWidth“, „minHeight“ und „maxHeight“ in dp bereitstellt (I91b9a, b/149979702).
  • Modifikator für symmetrischen Abstand wurde hinzugefügt. (I39840)
  • „wrapContentWidth“ und „wrapContentHeight“ wurden aktualisiert und sind nun mit der vertikalen oder horizontalen Ausrichtung anstelle der Ausrichtung zu erwarten. Der Schwerkraftmodifikator wurde aktualisiert und akzeptiert nun die vertikale oder horizontale Ausrichtung. Zeilen, Spalten und Stapel wurden aktualisiert, um benutzerdefinierte fortlaufende Ausrichtungen zu unterstützen. (Ib0728)
  • Modul ui-text wurde in ui-text-core umbenannt (I57dec).
  • Verbesserung der DrawModifier API:
    • Der Empfängerumfang für „draw() ContentDrawScope“ wurde erstellt.
    • Alle Parameter fürdraw() wurden entfernt.
    • DrawScope hat dieselbe Oberfläche wie der frühere CanvasScope.
    • ContentDrawScope verfügt über die Methode „drawContent()“ (Ibaced, b/152919067).
  • „ColoredRect“ wurde eingestellt. Verwende stattdessen Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)
  • Modifikator plus Operator durch Factory-Erweiterungsfunktionen ersetzt (I225e4)
  • RowScope- und ColumnScope-Mitglieder sind jetzt außerhalb von Zeile und Spalte zugänglich. (I3a641)
  • LayoutFlexible wurde in LayoutWeight umbenannt. Zum Ausfüllen muss enger Parameter umbenannt werden. (If4738)
  • WithConstraints hat den LayoutDirection-Parameter erhalten (I6d6f7)
  • Hintergrund wurde in DrawBackground umbenannt und zum Standardspeicher gemacht (Ia0bd3).
  • Ersetzen von ButtonStyle durch eigene Funktionen und entfernte Textüberlastung (Zeichenfolge). Informationen zur Nutzung finden Sie in den aktualisierten Beispielen. (If63ab, b/146478620, b/146482131)
  • runOnIdleCompose und runOnUiThread sind jetzt globale Funktionen anstelle von Methoden in ComposeTestRule. (Icbe8f)

Externer Beitrag

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