Erstellungslaufzeit

Grundlegende Bausteine des Programmiermodells und der Statusverwaltung von Compose sowie der Kernlaufzeit für das Targeting des Compiler-Plug-ins „Compose“.
Letzte Aktualisierung Stabile Version Releasekandidat Beta-Ausgabe Alpharelease
3. April 2024 1.6.5 - - 1.7.0-alpha06

Struktur

Compose ist eine Kombination aus sieben Maven-Gruppen-IDs in androidx. Jede Gruppe enthält eine ausgewählte Teilmenge von Funktionen mit jeweils eigenen Versionshinweisen.

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

GruppeBeschreibung
compose.animationAnimationen in den Jetpack Compose-Anwendungen erstellen, um die Nutzererfahrung zu verbessern.
compose.compiler@Composable-Funktionen transformieren und Optimierungen mit einem Kotlin-Compiler-Plug-in aktivieren
compose.foundationSchreiben Sie Jetpack Compose-Anwendungen mit einsatzbereiten Bausteinen und erweitern Sie die Grundlage, um Ihre eigenen Designsystemteile zu erstellen.
compose.materialErstellen Sie Jetpack Compose-Benutzeroberflächen mit einsatzbereiten Material Design-Komponenten. Das ist der übergeordnete Einstiegspunkt von Compose. Hier stellen wir Komponenten bereit, die den unter www.material.io beschriebenen entsprechen.
compose.material3Erstellen Sie Jetpack Compose-Benutzeroberflächen mit Material Design 3 Components, der nächsten Entwicklung des Material Design. Material 3 enthält aktualisierte Designs und Komponenten sowie Personalisierungsfunktionen wie dynamische Farben. Das Design ist an den visuellen Stil und die System-UI von Android 12 angepasst.
compose.runtimeGrundlegende Bausteine des Programmiermodells und der Statusverwaltung von Compose sowie der Kernlaufzeit für das Targeting des Compiler-Plug-ins „Compose“.
compose.uiGrundlegende Komponenten der Editor-UI, die für die Interaktion mit dem Gerät erforderlich sind, einschließlich Layout, Zeichnung und Eingabe.

Abhängigkeiten deklarieren

Zum Hinzufügen einer Abhängigkeit von Compose müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.

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

Groovig

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.11"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.11"
    }

    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. Lassen Sie uns wissen, wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie eine neue erstellen. Durch Klicken auf die Stern-Schaltfläche können Sie zu einem vorhandenen Problem abstimmen.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.

Runtime Tracing Version 1.0

Version 1.0.0-beta01

29. November 2023

androidx.compose.runtime:runtime-tracing:1.0.0-beta01 wird freigegeben. 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 wird freigegeben. Version 1.0.0-alpha05 enthält diese Commits.

Fehlerkorrekturen

  • Abhängigkeiten an die niedrigsten unterstützten stabilen Versionen (z. B. compose-runtime und Nachverfolgungslaufzeit) angepinnt

Version 1.0.0-alpha04

23. August 2023

androidx.compose.runtime:runtime-tracing:1.0.0-alpha04 wird freigegeben. Version 1.0.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Kompatibel mit den neuesten Versionen von Benchmark und Tracing Perfetto, wodurch Unterstützung für das Tracing von Kompositionen beim App-Start (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)
  • Tracing Perfetto SDK APIs mit android.os.Trace konsistent (I73ba0, b/282199917)
  • Voraussetzungen für das Tracing beim Anwendungsstart (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 wird freigegeben. Version 1.0.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Keine funktionalen Ä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 wird freigegeben. Version 1.0.0-alpha01 enthält diese Commits.

Neue Funktionen

  • androidx.compose.runtime:runtime-tracing ist eine Bibliothek, die – sofern entsprechende Tools diese unterstützen (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-alpha06

3. April 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha06 wird freigegeben. Version 1.7.0-alpha06 enthält diese Commits.

Fehlerkorrekturen

  • Korrektur nur zur Verarbeitung von providesDefault (538f45) mit einzelnen Werten
  • Deadlock beim Zugriff auf den Frame Clock mit Recomposer vermeiden (07e5c6)

Version 1.7.0-alpha05

20. März 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha05 wird freigegeben. Version 1.7.0-alpha05 enthält diese Commits.

Fehlerkorrekturen

  • Verspätete Änderungen an der deaktivierten Zusammensetzung löschen (5950bc)

Version 1.7.0-alpha04

6. März 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha04 wird freigegeben. Version 1.7.0-alpha04 enthält diese Commits.

Leistungsverbesserungen

  • Rufen Sie Snapshot.current einmal pro abgeleiteten Statusbewertung auf (ee7daf).
  • currentRecord einmal pro Beobachtung in der Zusammensetzung lesen (b882b2)
  • Versehentliche Zuweisung von Iterationen in snapshotFlow entfernen (231e56)
  • nonSkippingGroupOptimization für Erstellungsbibliotheken aktivieren. Dadurch wird der generierte Code für alle nicht neustartbaren zusammensetzbaren Funktionen in androidx effizienter. Wir planen, diese Option in Zukunft standardmäßig zu aktivieren. I(acbc08)

Version 1.7.0-alpha03

21. Februar 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha03 wird freigegeben. Version 1.7.0-alpha03 enthält diese Commits.

API-Änderungen

  • Ersetzungsgruppen einführen, um die Erkennung von Änderungen zu verbessern (0941b5)

Leistungsverbesserungen

  • Arbeitsspeicherzuweisung bei der Erkennung von Änderungen verbessern (53e7fd)
  • Speicherleck im Composer beheben (0e097d)
  • Verwenden Sie ScopeMap, um bei der Neuzusammensetzung Entwertungen zu übergeben (e19a7e).
  • Zuordnung für Entwertungen optimieren, um nur abgeleitete Status beizubehalten (f11c44)
  • IdentityArraySet-Nutzungen durch ScatterSet (db572e) ersetzen
  • removeScope in ScopeMap optimieren (bb0530)

Version 1.7.0-alpha02

7. Februar 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha02 wird freigegeben. 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)
  • Geänderte Status filtern, die in snapshotFlow nicht beobachtet werden. (796b80)

Leistungsverbesserungen

  • Ändern Sie den Snapshot-Beobachter, wenn er bereits transparent ist. (f60f30)
  • SnapshotIdSet.lowest() optimieren. (7ae149)
  • Verwenden Sie einen fold() ohne Zuweisung in SnapshotIdSet. (532b7d)
  • Iterator-Zuweisung entfernen (83f96b)

Version 1.7.0-alpha01

24. Januar 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha01 wird freigegeben. Version 1.7.0-alpha01 enthält diese Commits.

Leistungsoptimierungen

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

Fehlerkorrekturen

  • Standardparameter-Meta in intrinsischer Speicher berücksichtigen (096665)
  • currentCompoundHashKey in weiteren Fällen eindeutig machen (d4a872)
  • Gruppen beim Beenden des Inline-Funktionsaufrufs realisieren (2a90fc)

Version 1.6

Version 1.6.5

3. April 2024

androidx.compose.runtime:runtime-*:1.6.5 wird freigegeben. Version 1.6.5 enthält diese Commits.

Version 1.6.4

20. März 2024

androidx.compose.runtime:runtime-*:1.6.4 wird freigegeben. Version 1.6.4 enthält diese Commits.

Version 1.6.3

6. März 2024

androidx.compose.runtime:runtime-*:1.6.3 wird freigegeben. Version 1.6.3 enthält diese Commits.

Version 1.6.2

21. Februar 2024

androidx.compose.runtime:runtime-*:1.6.2 wird freigegeben. Version 1.6.2 enthält diese Commits.

Version 1.6.1

7. Februar 2024

androidx.compose.runtime:runtime-*:1.6.1 wird freigegeben. Version 1.6.1 enthält diese Commits.

Fehlerkorrekturen

  • Rufe den onRelease-Callback in der gleichen Reihenfolge wie onForgotten auf. (2cd790)
  • Geänderte Status filtern, die in snapshotFlow nicht beobachtet werden. (796b80)

Version 1.6.0

24. Januar 2024

androidx.compose.runtime:runtime-*:1.6.0 wird freigegeben. Version 1.6.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.5.0

Neue Funktionen

  • Erneute Auslösen von Ausnahmen, die während der Neuzusammensetzungsschleife verschluckt werden (4dff9a)

Leistungsoptimierungen

  • Aufzeichnungsänderungen von Snapshot-Status optimieren (28c3fe)
  • rememberSaveable optimieren (f01d79)
  • Erneutes Lesen von abgeleiteten Status aufschieben, bis Änderungen aufgezeichnet werden (f38099)
  • Bereitstellung lokaler Zusammensetzungswerte verbessern (a337ea)

Fehlerkorrekturen

  • Speicherleck in Slottabelle beheben (73fcfe)
  • Neuzusammensetzung von Unterkomponenten überspringen, die entfernt werden sollen. (Ieeb99, b/254645321)
  • Lösen Sie RememberObserver-Lebenszyklen nur aus, wenn sie in der Merken-Berechnung gespeichert werden. f6b4dc
  • Beschränken Sie die $dirty-Erfassung auf Inline-Lambdas. acfca0.
  • Korrigieren Sie verschiebbare Inhalte, die gelegentlich die falsche lokale Komposition erhalten. (035cd6)

Version 1.6.0-rc01

10. Januar 2024

androidx.compose.runtime:runtime-*:1.6.0-rc01 wird freigegeben. 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 wird freigegeben. 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 wird freigegeben. 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 wird freigegeben. Version 1.6.0-beta01 enthält diese Commits.

API-Änderungen

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

Fehlerkorrekturen

  • Verwenden Sie die referenzielle Richtlinie für den Zusammensetzungsstatus des lokalen Geltungsbereichs im Kontext. (83361c)
  • $dirty Capture auf Inline-Lambdas beschränken.
  • Korrigieren Sie verschiebbare Inhalte, die gelegentlich die falsche lokale Komposition erhalten. (035cd6)
  • Verwenden Sie schnellere, nicht zugewiesene Hashmaps in RecomposeScopeImpl. (D79494)
  • ObjectIntMap in DerivedState verwenden.
  • Verwenden Sie IntRef für Ganzzahl SnapshotThreadLocal in DerivedState.

Version 1.6.0-alpha08

18. Oktober 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha08 wird freigegeben. Version 1.6.0-alpha08 enthält diese Commits.

Fehlerkorrekturen

  • Lösen Sie RememberObserver-Lebenszyklen nur aus, wenn sie in der Merken-Berechnung gespeichert werden. f6b4dc
  • Zuweisungen beim Sortieren von Entwertungslisten verbessern. (954d63)
  • Neue Karten ohne Zuordnung in SnapshotStateObserver verwenden. (4303ce)
  • Entwertungen löschen, wenn die Zusammensetzung deaktiviert ist. (e001be)

Version 1.6.0-alpha07

4. Oktober 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha07 wird freigegeben. Version 1.6.0-alpha07 enthält diese Commits.

API-Änderungen

  • SnapshotStateList ist jetzt als RandomAccess markiert, damit die direkte Indexierungsversion von Listenhilfen verwendet werden kann. (I5210c, b/219554654)

Version 1.6.0-alpha06

20. September 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha06 wird freigegeben. 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 wird freigegeben. 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 wird freigegeben. Version 1.6.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Erneute Auslösen von Ausnahmen, die während der Neuzusammensetzungsschleife verschluckt werden (4dff9a)

API-Änderungen

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

Version 1.6.0-alpha03

9. August 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha03 wird freigegeben. Version 1.6.0-alpha03 enthält diese Commits.

Fehlerkorrekturen

  • Neue CompositionLocalProvider-Optimierung korrigieren (3118e88)
  • Korrigieren Sie, wie bewegliche Inhaltsknoten zerlegt werden. (5e3d59b)

Version 1.6.0-alpha02

26. Juli 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha02 wird freigegeben. Version 1.6.0-alpha02 enthält diese Commits.

Neue Funktionen und Leistungsverbesserungen

  • rememberSaveable optimieren (f01d79)
  • Erneutes Lesen von abgeleiteten Status aufschieben, bis Änderungen aufgezeichnet werden (f38099)
  • Bereitstellung lokaler Zusammensetzungswerte verbessern (a337ea)
  • SideEffect ist als @ExplicitGroupsComposable markiert, damit keine Gruppe erstellt wird. (I74815)
  • Vergleiche lokaler Karten bei der Wiederverwendung vermeiden (782071)

API-Änderungen

  • Es wurde eine Sonderfallüberlastung für CompositionLocalProviders hinzugefügt. Damit wird der Overhead für die schnellere Bereitstellung mehrerer Werte vermieden, der jedoch bei der Bereitstellung eines einzelnen Werts unnötig ist. (I6d640, b/288169379)

Fehlerkorrekturen

  • Speicherleck in Slottabelle beheben (73fcfe)
  • Fehler bei der Wiederherstellung von rememberSaveable beheben, wenn stateSaver null zurückgibt (90748c)

Version 1.6.0-alpha01

21. Juni 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha01 wird freigegeben. Version 1.6.0-alpha01 enthält diese Commits.

Fehlerkorrekturen

  • Neuzusammensetzung von Unterkomponenten überspringen, die entfernt werden sollen. (Ieeb99, b/254645321)
  • Die Zuweisungen beim Anwenden von Snapshots wurden reduziert. (I65c09)
  • Berechnen Sie readableHash nicht in DerivedState, 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 wird freigegeben. Version 1.5.4 enthält diese Commits.

Version 1.5.3

4. Oktober 2023

androidx.compose.runtime:runtime-*:1.5.3 wird freigegeben. Version 1.5.3 enthält diese Commits.

Version 1.5.2

27. September 2023

androidx.compose.runtime:runtime-*:1.5.2 wird freigegeben. Version 1.5.2 enthält diese Commits.

Version 1.5.1

6. September 2023

androidx.compose.runtime:runtime-*:1.5.1 wird freigegeben. Version 1.5.1 enthält diese Commits.

Version 1.5.0

9. August 2023

androidx.compose.runtime:runtime-*:1.5.0 wird freigegeben. Version 1.5.0 enthält diese Commits.

API-Änderungen

  • Zuweisungen bei Neuzusammensetzung, Farbanimationen und AndroidComposeView wurden entfernt. Ib2bfa.
  • Eine @StateFactoryMarker-Annotation wurde hinzugefügt, um Funktionen zu markieren, die Status erstellen und in einen remember-Aufruf eingebunden werden müssen. (I64550)
  • Einfache Versionen von State und MutableState hinzufügen (fb3d89)
  • Snapshot.isApplyObserverNotificationPending (I672a5) hinzugefügt
  • Es wurden primitive Versionen der State API hinzugefügt, mit denen Int-, Long-, Float- und Double-Werte in State-Objekten erfasst werden können, ohne dass es zu Strafen für das Autoboxing kommt. Verwenden Sie zu diesem Zweck die neuen Factory-Methoden mutableIntState(Int), mutableFloatStateOf(Float) usw. (I48e43)

Fehlerkorrekturen

  • Neuzusammensetzung von Unterkomponenten überspringen, die entfernt werden sollen. (Ieeb99, b/254645321)
  • Snapshot-Referenz nicht in ComposerImpl beibehalten (0206f7)
  • Komposition nicht zweimal anwenden (f5791b)
  • Achten Sie darauf, dass die Entwertung für nicht initialisierte abgeleitete Statuswerte sichergestellt ist (aa2a92)
  • Rufe während der Zusammensetzung onEndChanges auf. (62cc8c)
  • Probleme beim Verschieben von Inhalten in eine Unterzusammensetzung beheben (4beb41)
  • Potenzielle Deadlocks beheben (c1a425 und 8edce0)
  • Die für ein Android-Fenster erstellte Recomposer blockiert jetzt nur Aufrufe an withFrameNanos anstelle der gesamten Komposition, wenn sie eine ON_STOP-Benachrichtigung erhält. Das bedeutet, dass Fenster, die mit beendeten Aktivitäten verknüpft sind, weiterhin für Datenänderungen neu zusammengesetzt werden, aber die Animationen oder andere Aufrufe von withFrameNanos werden blockiert. (Id9e7f, b/240975572)
  • Führen Sie einen Deaktivierungs-Callback für LayoutNode aus, bevor Sie die Effekte 3784073 entkräften.
  • Geänderte Flags für neu gestartete Lambdas ea81df9 korrigieren
  • Problem mit der Regression der Live-Bearbeitung für zusammensetzbare Funktionen mit den Knoten 73fd4d8 beheben
  • ON_STOP sollte die Frame-Clock-Übertragungen anstelle der Komposition ae276f1 anhalten.
  • SnapshotStateObserver-Bereiche für unveränderte abgeleitete Status entwerten 84d9b1c
  • Potenzielle Deadlocks beim Löschen von Kompositionen beheben 28761fc
  • Probleme beim Verschieben von Inhalten in eine Unterzusammensetzung 92d4156 beheben
  • Geänderte Flags für neu gestartete Lambdas korrigieren (8a03e9)
  • Führen Sie Deaktivierungs-Callbacks für LayoutNode aus, bevor Sie Effekte entsorgen (8b0fa4)
  • Beim Beenden von Knotengruppen wird das Problem endToMarker() behoben. (d71d980)
  • Aktuelle SlotWriter-Gruppe zur Prüfung nach Deaktivierung verwenden (a0b518b)
  • fill aus SlotTable.moveSlotGapTo() entfernen und schließen (81f9935)
  • Fehlende Entwertungen beheben, wenn verschiebbare Inhalte verschoben werden (1d7c024)
  • Sofortige Entwertungen für verschobene verschiebbare Inhalte korrigieren (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 Schreibens CoroutineScopes (a55362 und bd382f)
  • Einträge von Statusobjekten mit nicht zugänglichen Statuseinträgen überschreiben (c986960)
  • Composer mit dem richtigen Bereich für die Realisierung von Gruppen verwenden (9a5e5b6)
  • Verwenden Sie IdentityArraySet zum Speichern von Snapshot-Entwertungen (7f60cca).
  • Zuweisungen für Snapshot-Beobachtungen reduzieren (5bc535f)

Version 1.5.0-rc01

26. Juli 2023

androidx.compose.runtime:runtime-*:1.5.0-rc01 wird freigegeben. Version 1.5.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Erneutes Lesen von abgeleiteten Status aufschieben, bis Änderungen aufgezeichnet werden (f38099)

  • Es ist eine optionale Prüfung verfügbar, mit der empfohlen wird, mutableStateOf()-Aufrufe zu den entsprechenden spezialisierten Typen für 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 Editor von Android Studio und in den Lint-Ausgaben Ihres Projekts sehen möchten, ändern Sie den Schweregrad von „Informational“ (Information) in „Warnung“ (oder höher), indem Sie warning "AutoboxingStateCreation" in der Konfiguration des Moduls „build.gradle“ oder „build.gradle.kts“ wie hier gezeigt (I34f7e) deklarieren:

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

Version 1.5.0-beta03

28. Juni 2023

androidx.compose.runtime:runtime-*:1.5.0-beta03 wird freigegeben. Version 1.5.0-beta03 enthält diese Commits.

Fehlerkorrekturen

  • Neuzusammensetzung von Unterkomponenten überspringen, die entfernt werden sollen. (Ieeb99, b/254645321)

Version 1.5.0-beta02

7. Juni 2023

androidx.compose.runtime:runtime-*:1.5.0-beta02 wird freigegeben. 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 wird freigegeben. Version 1.5.0-beta01 enthält diese Commits.

API-Änderungen

  • Zuweisungen bei Neuzusammensetzung, Farbanimationen und AndroidComposeView entfernt (Ib2bfa)
  • Eine @StateFactoryMarker-Annotation wurde hinzugefügt, um Funktionen zu markieren, die Status erstellen und in einen remember-Aufruf eingebunden werden müssen. (I64550)
  • Einfache Versionen von State und MutableState hinzufügen (fb3d89)
  • Snapshot.isApplyObserverNotificationPending (I672a5) hinzugefügt

Fehlerkorrekturen

  • Reduzierte Zuweisungen (I65c09, d7ea77, 727974 und 445808)
  • Snapshot-Referenz nicht in ComposerImpl beibehalten (0206f7)
  • Schnelle Stornierung des Schreibens CoroutineScopes (a55362 und bd382f)
  • Komposition nicht zweimal anwenden (f5791b)
  • Achten Sie darauf, dass die Entwertung für nicht initialisierte abgeleitete Statuswerte sichergestellt ist (aa2a92)
  • Rufe während der Zusammensetzung onEndChanges auf. (62cc8c)
  • Probleme beim Verschieben von Inhalten in eine Unterzusammensetzung beheben (4beb41)
  • Potenzielle Deadlocks beheben (c1a425
  • ON_STOP sollte anstelle der Zusammensetzung die Frame-Clock-Übertragung anhalten (f4a2d1).
  • Geänderte Flags für neu gestartete Lambdas korrigieren (8a03e9)
  • Führen Sie Deaktivierungs-Callbacks für LayoutNode aus, bevor Sie Effekte entsorgen (8b0fa4)

Externer Beitrag

  • Snapshot.isApplyObserverNotificationPending (I672a5) hinzugefügt

Version 1.5.0-alpha04

10. Mai 2023

androidx.compose.runtime:runtime-*:1.5.0-alpha04 wird freigegeben. Version 1.5.0-alpha04 enthält diese Commits.

API-Änderungen

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

Fehlerkorrekturen

  • Rufe während der Zusammensetzung onEndChanges auf. Die während „Composition.dispose“ entfernten Fokusknoten abonnieren onEndChanges, um den Fokus zurückzusetzen.(03d4a47)

  • Achten Sie darauf, dass die Entwertung für nicht initialisierte abgeleitete Statuswerte sichergestellt ist. Jeder abgeleitete Status wird einer Liste der zugehörigen Abhängigkeiten in SnapshotStateObserver zugeordnet. Damit werden die mit dem abgeleiteten Status verknüpften Bereiche ungültig, wenn sich die Abhängigkeit ändert. Die Abhängigkeitsänderung wird beim Fortsetzen des Snapshots registriert, was nach dem Lesen des abgeleiteten Status passieren kann (aufgrund des Aufrufs von Snapshot.notifyObjectsInitialized()).

    Die vorherige abgeleitete Beobachtungslogik in SnapshotStateObserver bestand darin, alte Abhängigkeiten zu bereinigen und dann den neuen Wert zu lesen. Dies führte zu einer Race-Bedingung mit einer Entwertung in einem bereinigten Zustand, in dem die Abhängigkeitsentwertung nicht registriert wurde.

    Durch diese Änderung werden Lesevorgänge für abgeleitete Status und die Abhängigkeitsbereinigung neu angeordnet. Dadurch wird sichergestellt, dass 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 wird freigegeben. Version 1.5.0-alpha03 enthält diese Commits.

API-Änderungen

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

Fehlerkorrekturen

  • Potenziellen Deadlock in Snapshot-Liste und Karte 5c1a425 beheben
  • Führen Sie einen Deaktivierungs-Callback für LayoutNode aus, bevor Sie die Effekte 3784073 entkräften.
  • Geänderte Flags für neu gestartete Lambdas ea81df9 korrigieren
  • Problem mit der Regression der Live-Bearbeitung für zusammensetzbare Funktionen mit den Knoten 73fd4d8 beheben
  • ON_STOP sollte die Frame-Clock-Übertragungen anstelle der Komposition ae276f1 anhalten.
  • SnapshotStateObserver-Bereiche für unveränderte abgeleitete Status entwerten 84d9b1c
  • Potenzielle Deadlocks beim Löschen von Kompositionen beheben 28761fc
  • Probleme beim Verschieben von Inhalten in eine Unterzusammensetzung 92d4156 beheben

Version 1.5.0-alpha02

5. April 2023

androidx.compose.runtime:runtime-*:1.5.0-alpha02 wird freigegeben. Version 1.5.0-alpha02 enthält diese Commits.

Neue Funktionen

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

Fehlerkorrekturen, Leistungsverbesserungen

  • Einträge von Statusobjekten mit nicht zugänglichen Statuseinträgen überschreiben (c986960)
  • Composer mit dem richtigen Bereich für die Realisierung von Gruppen verwenden (9a5e5b6)
  • Beim Beenden von Knotengruppen wird das Problem endToMarker() behoben. (d71d980)
  • Aktuelle SlotWriter-Gruppe zur Prüfung nach Deaktivierung verwenden (a0b518b)
  • Verwenden Sie IdentityArraySet zum Speichern von Snapshot-Entwertungen (7f60cca).
  • fill aus SlotTable.moveSlotGapTo() entfernen und schließen (81f9935)
  • Fehlende Entwertungen beheben, wenn verschiebbare Inhalte verschoben werden (1d7c024)
  • Sofortige Entwertungen für verschobene verschiebbare Inhalte korrigieren (8676618)
  • Zuweisungen für Snapshot-Beobachtungen reduzieren (5bc535f)

Version 1.5.0-alpha01

22. März 2023

androidx.compose.runtime:runtime-*:1.5.0-alpha01 wird freigegeben. Version 1.5.0-alpha01 enthält diese Commits.

Neue Funktionen

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

Version 1.4

Version 1.4.3

3. Mai 2023

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

Version 1.4.2

19. April 2023

androidx.compose.runtime:runtime-*:1.4.2 wird freigegeben. Version 1.4.2 enthält diese Commits.

Fehlerkorrekturen

  • Potenziellen Deadlock in Snapshot-Liste und Karte 2eb6570 beheben

  • Beim Hinzufügen von Inhalten zu einem SnapshotStateList oder SnapshotStateMap kann ein Deadlock auftreten, wenn die Änderung zeitgleich mit einem direkten Schreibvorgang für den Statusdatensatz erfolgt. Dies trat bei den Änderungen von 93fcae828b, bei denen nicht verwendete Datensätze durch direkte Schreibvorgänge freigegeben werden, deutlich häufiger auf.

  • Die Sperren sind jetzt so angeordnet, dass bei einer Karten- oder Listensperre nie versucht wird, eine Snapshot-Sperre aufzunehmen.

Version 1.4.1

5. April 2023

androidx.compose.runtime:runtime-*:1.4.1 wird freigegeben. Version 1.4.1 enthält diese Commits.

Fehlerkorrekturen

  • Beim Beenden von Knotengruppen wird endToMarker() korrigiert. d71d980

Version 1.4.0

22. März 2023

androidx.compose.runtime:runtime-*:1.4.0 wird freigegeben. Version 1.4.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.3.0

  • Initialisierten Wert aus LiveData für die erste Komposition 3680e25 verwenden
  • Fügen Sie ComposeNodeLifecycleCallback hinzu, um den Lebenszyklus der Zusammensetzungsknoten zu beobachten. 8b6a258
  • Property „parameterTypes“ zu „ComposableMethod7b6c7ad hinzufügen

Fehlerkorrekturen und Leistungsverbesserungen

  • Beide Bereichsindexe in SnapshotStateObserver löschen 29f4a3e
  • Fügen Sie Gruppen hinzu, die im Text von nicht überspringbaren Lambdas benötigt werden 7d06752
  • Speicherreferenzmerkmale des Snapshot-Status 93fcae8 verbessern
  • Boxen in lokalen Kompositionen suchen 0875717
  • Korrekten Schlüssel für nicht wiederverwendbare Knotengruppen verwenden 6388d8d
  • SnapshotStateObserver vor rekursiven und gleichzeitigen Anwendungen von 98cb6ba schützen
  • In der get-Methode 35a77d3 von IdentityArraySet wurde eine Check-Index-bounds-Prüfung hinzugefügt.
  • Das Editor-Modul zur Verwendung der ViewTreeLifecycleOwner-Erweiterungen aktualisieren 21c2122
  • Benachrichtigungen zum Anwenden senden, nachdem Recomposer den Frame beendet hat. 98f2641
  • Behebung eines Indexabsturzes außerhalb des Bereichs beim Abbrechen von Recomposer 8f8656f
  • Neuzusammensetzung immer erzwingen, wenn übergeordnete Anbieter der Komposition 9526fcc geändert haben
  • Recomposer-Toleranz für abgebrochene Jobs a55f7ed
  • Verarbeitung von Entwertungen für eine große Anzahl von Komponisten verbessern 9b7ed67
  • Problem beim Generieren von schließenden Gruppen für nicht lokale Rückgaben b6f590c beheben

Version 1.4.0-rc01

8. März 2023

androidx.compose.runtime:runtime-*:1.4.0-rc01 wird freigegeben. 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 werden 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 wird freigegeben. Version 1.4.0-beta01 enthält diese Commits.

API-Änderungen

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

Fehlerkorrekturen

  • Boxen in lokalen Mischungssuchen 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 werden veröffentlicht. Version 1.4.0-alpha05 enthält diese Commits.

API-Änderungen

  • Mehr Typ-/Null-Zulässigkeit von Inline-/Verworfen-hidden-Funktionen (I24f91)

Version 1.4.0-alpha04

11. Januar 2023

androidx.compose.runtime:runtime-*:1.4.0-alpha04 wird freigegeben. Version 1.4.0-alpha04 enthält diese Commits.

API-Änderungen

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

Fehlerkorrekturen

  • SnapshotStateObserver vor rekursiven und gleichzeitigen Anwendungsmöglichkeiten schützen (d902fb)

Version 1.4.0-alpha03

7. Dezember 2022

androidx.compose.runtime:runtime-*:1.4.0-alpha03 wird freigegeben. 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 übernommen hat. (Iad6c0, b/222093277)

Version 1.4.0-alpha02

9. November 2022

androidx.compose.runtime:runtime-*:1.4.0-alpha02 wird freigegeben. 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 wird freigegeben. Version 1.4.0-alpha01 enthält diese Commits.

API-Änderungen

  • In SnapshotStateList und SnapshotStateMap wurden toList() und toMap() respektvoll implementiert. Mit diesen Methoden wird der aktuelle Inhalt zurückgegeben, ohne eine Kopie zu erstellen, da sie die internen unveränderlichen Daten zurückgeben, die zum Speichern des Inhalts verwendet werden. Dieser Wert kann beispielsweise verwendet werden, um einen Wertefluss mit snapshotFlow zu erzeugen, ohne dass die Daten kopiert werden müssen. (Ica2bd)

Version 1.3

Version 1.3.3

11. Januar 2023

androidx.compose.runtime:runtime-*:1.3.3 wird freigegeben. 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 wird freigegeben. Version 1.3.2 enthält diese Commits.

Fehlerkorrekturen

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

Version 1.3.1

9. November 2022

androidx.compose.runtime:runtime-*:1.3.1 wird freigegeben. Version 1.3.1 enthält diese Commits.

Version 1.3.0

24. Oktober 2022

androidx.compose.runtime:runtime-*:1.3.0 wird freigegeben. Version 1.3.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.2.0

Umgang mit Ausnahmefällen / Support bei der Bearbeitung von Live-Bearbeitungen

Nachverfolgung von Kompositionen

Zusammensetzbare Reflexions-APIs

Fehler bei der Laufzeit beheben

Snapshot-System

Version 1.3.0-rc01

5. Oktober 2022

androidx.compose.runtime:runtime-*:1.3.0-rc01 wird freigegeben. Version 1.3.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Problem mit ArrayIndexOutOfBoundsException aus der Slot-Tabelle behoben (b/249076084)

Version 1.3.0-beta03

21. September 2022

androidx.compose.runtime:runtime-*:1.3.0-beta03 wird freigegeben. Version 1.3.0-beta03 enthält diese Commits.

Verhaltensänderung

  • Der Parameter in remember und rememberCoroutineScope, wobei er zu crossinline geändert wurde. Dadurch wird bei einer vorzeitigen Rückgabe ein Fehler gemeldet, anstatt eine frühe Rückgabe zuzulassen, durch die später ein interner Fehler gemeldet wird.
  • Diese Änderung kann möglicherweise dazu führen, dass neue Compiler-Fehler gemeldet werden, was dazu führt, dass nicht lokale Rückgaben von 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 wird freigegeben. 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 wird freigegeben. 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 wird freigegeben. 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 wird freigegeben. Version 1.3.0-alpha02 enthält diese Commits.

API-Änderungen

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

Version 1.3.0-alpha01

29. Juni 2022

androidx.compose.runtime:runtime-*:1.3.0-alpha01 wird freigegeben. Version 1.3.0-alpha01 enthält diese Commits.

API-Änderungen

  • Dienstprogrammfunktionen in die Laufzeit verschieben (I4f729)

Version 1.2

Version 1.2.1

10. August 2022

androidx.compose.runtime:runtime-*:1.2.1 wird freigegeben. Version 1.2.1 enthält diese Commits.

Fehlerkorrekturen

  • Speicherleck behoben: Verschachtelte Snapshots, die aus transparenten Snapshots erstellt wurden, entsorgen b/239603305

Version 1.2.0

27. Juli 2022

androidx.compose.runtime:runtime-*:1.2.0 wird freigegeben. Version 1.2.0 enthält diese Commits.

Wichtige Änderungen seit dem 1.1.0

  • Compose Runtime verfügte über eine Reihe von Funktionen, die in Version 1.2.0 eingeführt wurden, sowie viele Fehlerkorrekturen bei der Stabilisierung. Die wichtigste neue Funktion war die Einführung der movableContentOfAPI, mit der eine komplexe UX wie Übergänge gemeinsam genutzter Elemente ermöglicht werden kann. Die movableContentOf API wandelt eine zusammensetzbare Lambda-Funktion in ein Lambda um, das ihren Zustand und die entsprechenden Knoten an einen neuen Ort verschiebt, an dem sie aufgerufen wird. Wenn der vorherige Aufruf die Zusammensetzung verlässt, wird der Status vorübergehend beibehalten. Wenn ein neuer Lambda-Aufruf in die Zusammensetzung eintritt, werden der Status und die zugehörigen Knoten an den Standort des neuen Aufrufs verschoben. Wenn kein neuer Aufruf hinzugefügt wird, wird der Status dauerhaft entfernt und die Beobachter werden benachrichtigt.

  • Wenn ein movableContentOf-Lambda mehrmals in derselben Zusammensetzung aufgerufen wird, werden für jeden Aufruf ein neuer Status und Knoten erstellt. Wenn Aufrufe die Zusammensetzung verlassen und neue Aufrufe eingehen, wird der Status vom ersten ausgehenden Aufruf zu den eingehenden Aufrufen in der Reihenfolge verschoben, in der sie aufgerufen werden. Alle Status, auf die keine neuen Aufrufe erhoben werden, werden endgültig entfernt.

  • Zusätzlich zu dieser und einigen anderen neuen Funktionen wurde viel Zeit dafür aufgewendet, die Laufzeit und das Snapshot-Statussystem zu stabilisieren. Verschiedene Speicherlecks wurden beseitigt und die Codepfade wurden optimiert.

  • Eine Zusammenfassung der Änderungen finden Sie unten:

Neue Funktionen in 1.2

Leistung in 1.2

Fehlerkorrekturen in 1.2

Version 1.2.0-rc03

29. Juni 2022

androidx.compose.runtime:runtime-*:1.2.0-rc03 wird freigegeben. Version 1.2.0-rc03 enthält diese Commits.

Fehlerkorrekturen

  • Abgeleitete Zustandsbeobachtungen wurden zuvor bedingungslos aus dem Zusammensetzungsbereich und der Zusammensetzung entfernt, wodurch andere Umfänge durchbrochen wurden, 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 wird freigegeben. 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 wird freigegeben. Version 1.2.0-rc01 enthält diese Commits.

API-Änderungen

  • Schnittstellen in compose-Bibliotheken werden jetzt mit den jdk8-Standardschnittstellenmethoden (I5bcf1) erstellt.

Version 1.2.0-beta03

1. Juni 2022

androidx.compose.runtime:runtime-*:1.2.0-beta03 wird freigegeben. 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 wird freigegeben. 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 wird freigegeben. Version 1.2.0-beta01 enthält diese Commits.

Neue Funktionen

  • Dies ist die erste Betaversion von 1.2.

API-Änderungen

  • Experimentelle Snapshot.unsafeEnter/unsafeLeave (I108f3) hinzugefügt
  • Die experimentelle Snapshot.asContextElement() API (Iff072) wurde hinzugefügt.
  • Die Annotation @ComposableTarget und die durch @ComposableTargetMarker markierten Annotationen können jetzt auf Dateiebene mit dem Präfix @file verwendet werden. Wenn Sie eine Zielanmerkung im Dateibereich verwenden, nimmt der Compiler an, dass alle zusammensetzbaren Funktionen in der Datei als Ziel für die zugehörige Anwendung vorgesehen sind. Mit @file:UiComposable wird beispielsweise deklariert, dass alle @Composable-Funktionen auf den Anwendungsprogramm „Compose UI“ ausgerichtet sind. Eine Funktion, die ein Targeting auf eine andere App vornehmen muss, muss explizit die Annotation der Zielmarkierung für die gewünschte App angeben. (I40804)

Version 1.2.0-alpha08

20. April 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha08 wird freigegeben. Version 1.2.0-alpha08 enthält diese Commits.

API-Änderungen

  • TracingInProgress wurde der CompositionTracer-Schnittstelle hinzugefügt. (Ic6f12)
  • recomposeScopeIdentity zu Composer hinzufügen (I0c873)
  • Eingeschränkte Tracing-APIs (Composer.setTracer) auf OptIn(InternalComposeTracingApi) (I9187f)
  • ResuableContentHost wurde hinzugefügt, um die Lebensdauer des Status, der für wiederverwendbare Inhalte erstellt wird, besser zu kontrollieren. Wenn beispielsweise eine Unterzusammensetzung vorübergehend nicht verwendet wird, kann der Inhalt deaktiviert werden, wodurch alle gespeicherten Status in der Komposition vergessen werden, z. B. alle Wegwerfeffekte. (I2c0f2, b/220322704)

Version 1.2.0-alpha07

6. April 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha07 wird freigegeben. 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. Das kann in Anwendungsfällen nützlich sein, in denen Sie von den Snapshot-basierten Thread-sicheren Schreib-/Lesevorgängen profitieren, den Wert aber lesen möchten, ohne unnötige Neuzusammensetzung oder Neumessungen zu verursachen. (I9f365, b/214054486)

Version 1.2.0-alpha06

23. März 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha06 wird freigegeben. 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 wird freigegeben. Version 1.2.0-alpha05 enthält diese Commits.

Externer Beitrag

  • Für die Verwendung von Kotlinx-Coroutinen 1.6.0 (I3366d) aktualisiert

Version 1.2.0-alpha04

23. Februar 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha04 wird freigegeben. Version 1.2.0-alpha04 enthält diese Commits.

API-Änderungen

  • ComposableTarget, ComposableTargetMarker und ComposableOpenTarget wurden hinzugefügt. Damit können während der Kompilierungszeit Berichte dazu erstellt werden, wann eine zusammensetzbare Funktion aufgerufen wird, die auf eine Anwendung ausgerichtet ist, für die sie nicht vorgesehen ist.

    In den meisten Fällen können die Annotationen vom Compiler-Plug-in „compose“ abgeleitet werden, sodass die direkte Verwendung dieser Annotationen eher selten ist . Zu den Fällen, die sich nicht ableiten lassen, gehören das Erstellen und Verwenden einer benutzerdefinierten Anwendung, abstrakten zusammensetzbaren Funktionen (z. B. Schnittstellenmethoden), Feldern oder globalen Variablen, die zusammensetzbare Lambdas sind (lokale Variablen und Parameter werden abgeleitet), oder die Verwendung von ComposeNode oder einer zugehörigen 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 empfiehlt sich jedoch, eine Annotation zu erstellen, die mit ComposableTargetMarker annotiert ist, und dann direkt die markierte Annotation anstelle von ComposableTarget zu verwenden. Eine zusammensetzbare Annotation, die mit ComposableTargetMarker gekennzeichnet ist, entspricht einer ComposbleTarget mit dem voll qualifizierten Namen der Attributklasse als Anwendungsparameter. 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 wird freigegeben. Version 1.2.0-alpha03 enthält diese Commits.

API-Änderungen

  • movableContentOf wurde hinzugefügt, das ein zusammensetzbares Lambda in ein Lambda umwandelt, das seinen Zustand und entsprechende Knoten an einen neuen Ort verschiebt, an dem es aufgerufen wird. Wenn der vorherige Aufruf die Zusammensetzung verlässt, wird der Status vorübergehend beibehalten. Wenn ein neuer Lambda-Aufruf in die Zusammensetzung eingeht, werden der Status und die zugehörigen Knoten an den Ort des neuen Aufrufs verschoben. Wenn kein neuer Aufruf hinzugefügt wird, wird der Status dauerhaft entfernt und die Beobachter werden benachrichtigt.

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

  • Der Zusammensetzung wurde eine Tracing API hinzugefügt, mit der Tools ein detaillierteres Tracing von zusammensetzbaren Funktionen ermöglichen können. 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 Tools eine zusammensetzbare Funktion bei der Neuzusammensetzung identifizieren können. (I07a3f)

Version 1.2.0-alpha02

26. Januar 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha02 wird freigegeben. 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 wird freigegeben. Version 1.2.0-alpha01 enthält diese Commits.

API-Änderungen

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

Aktualisierungen von Abhängigkeiten

  • Jetzt hängt der Kotlin-Code 1.6.10 ab.

Version 1.1

Version 1.1.1

23. Februar 2022

androidx.compose.runtime:runtime-*:1.1.1 wird freigegeben. Version 1.1.1 enthält diese Commits.

Fehlerkorrekturen

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

Version 1.1.0

9. Februar 2022

androidx.compose.runtime:runtime-*:1.1.0 wird freigegeben. 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
  • Beachten Sie, dass in Compose 1.0 der Layoutbereich von Material-Komponenten erweitert wird, um die Material-Richtlinien für Barrierefreiheit im Hinblick auf die Größe des Berührungszielbereichs zu erfüllen. Beispielsweise wird das Berührungsziel auf der Schaltfläche auf eine Mindestgröße von 48x48dp erweitert, auch wenn du eine kleinere Größe festgelegt hast. Dadurch wird das Verhalten von „Compose-Material“ an das gleiche Verhalten wie Material Design-Komponenten angepasst, was beim Mischen von Ansichten und der Funktion „Compose“ zu einem einheitlichen Verhalten führt. Durch diese Änderung wird auch sichergestellt, dass beim Erstellen Ihrer Benutzeroberfläche mit Compose Material-Komponenten die Mindestanforderungen für die Barrierefreiheit des Berührungszielbereichs erfüllt werden.
  • Stabile Unterstützung für Navigationsschienen
  • Eine Reihe von zuvor experimentellen APIs wird zu einer stabilen Version umgestellt
  • Unterstützung neuerer Versionen von Kotlin

Version 1.1.0-rc03

26. Januar 2022

androidx.compose.runtime:runtime-*:1.1.0-rc03 wird freigegeben. Version 1.1.0-rc03 enthält diese Commits.

Fehlerkorrekturen

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

Version 1.1.0-rc01

15. Dezember 2021

androidx.compose.runtime:runtime-*:1.1.0-rc01 wird freigegeben. 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 wird freigegeben. Version 1.1.0-beta04 enthält diese Commits.

Neue Funktionen

  • Für Kotlin-Kompatibilität aktualisiert 1.6.0

Version 1.1.0-beta03

17. November 2021

androidx.compose.runtime:runtime-*:1.1.0-beta03 wird freigegeben. 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 wird freigegeben. Version 1.1.0-beta02 enthält diese Commits.

API-Änderungen

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

Version 1.1.0-beta01

27. Oktober 2021

androidx.compose.runtime:runtime-*:1.1.0-beta01 wird freigegeben. 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 wird freigegeben. Version 1.1.0-alpha06 enthält diese Commits.

API-Änderungen

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

Version 1.1.0-alpha05

29. September 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha05 wird freigegeben. 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 wird freigegeben. 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 wird freigegeben. Version 1.1.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Der Compose-Compiler unterstützt jetzt ältere Versionen der Compose-Laufzeit (1.0). Vor dieser Änderung war der Compose-Compiler nur mit der Compose-Laufzeit derselben oder einer höheren Version kompatibel. Nach dieser Änderung ist der Compose-Compiler mit einer älteren Version der Compose-Laufzeit (1.0) kompatibel. (aosp/1796968)
  • Aktualisierung von „Compose“-1.1.0-alpha03 auf eine Abhängigkeit von Kotlin-1.5.30 wurde aktualisiert. (I74545)

Version 1.1.0-alpha02

18. August 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha02 wird freigegeben. 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 wird freigegeben. 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 wird freigegeben. Version 1.0.5 enthält diese Commits.

Fehlerkorrekturen

  • Ein Absturz-Tracking für abgeleiteteStateOf-Instanzen wurde behoben. (aosp/1792247)

Version 1.0.4

13. Oktober 2021

androidx.compose.runtime:runtime-*:1.0.4 wird freigegeben. Version 1.0.4 enthält diese Commits.

Aktualisierungen von Abhängigkeiten

  • Aktualisiert und hängt von Kotlin ab 1.5.31

Version 1.0.3

29. September 2021

androidx.compose.runtime:runtime-*:1.0.3 wird freigegeben. Version 1.0.3 enthält diese Commits.

Aktualisierungen von Abhängigkeiten

  • Aktualisiert und hängt von Kotlin ab 1.5.30

Version 1.0.2

1. September 2021

androidx.compose.runtime:runtime-*:1.0.2 wird freigegeben. Version 1.0.2 enthält diese Commits.

Aktualisiert, um den Compose-Release 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 wird freigegeben. Version 1.0.1 enthält diese Commits.

Aktualisierungen von Abhängigkeiten

  • Aktualisiert, sodass sie von Kotlin-1.5.21 abhängig sind.

Version 1.0.0

28. Juli 2021

androidx.compose.runtime:runtime-*:1.0.0 wird freigegeben. 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 Blog zur Compose-Version.

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 die minSdkVersion auf 24 oder höher. Dieses Problem wird in der nächsten Version von Android Studio Bumblebee und AGP 7.1 behoben. (b/194289155)

Version 1.0.0-rc02

14. Juli 2021

androidx.compose.runtime:runtime-*:1.0.0-rc02 wird freigegeben. Version 1.0.0-rc02 enthält diese Commits.

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

Version 1.0.0-rc01

1. Juli 2021

androidx.compose.runtime:runtime-*:1.0.0-rc01 wird freigegeben. 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 wird freigegeben. Version 1.0.0-beta09 enthält diese Commits.

Hinzugefügte Profilregeln

In diesem Release werden Profilregeln zu den folgenden Erstellungsmodulen (I14ed6) 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-Datei

Was sind Profilregeln?

  • Profilregeln für eine Bibliothek sind 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 menschenlesbaren ART-Profilformats, das bei Verwendung von adb shell profman --dump-classes-and-methods ... verwendet wird. Für die Ausrichtung auf Methoden oder Klassen stehen zwei Regeln für diese Regeln zur Verfügung.

  • Eine Methodenregel hat das folgende Muster:

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

    <CLASS_DESCRIPTOR>
    
  • In diesem Fall ist <FLAGS> 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, 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 wird und im Voraus kompiliert werden sollte, um Kosten für Kompilierung und 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 weist darauf hin, dass sie beim Start verwendet wird und im Heap vorab zugewiesen werden sollte, um die Kosten für das Laden der Klasse zu vermeiden.

So funktioniert's

  • Bibliotheken können diese Regeln definieren, die in AAR-Artefakte verpackt werden. Wenn dann eine App erstellt wird, die diese Artefakte enthält, werden diese Regeln zusammengeführt und die zusammengeführten Regeln 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 vorab eine bestimmte Teilmenge der Anwendung zu kompilieren und so die Leistung der Anwendung, insbesondere die erste Ausführung, zu verbessern. Dies hat keine Auswirkungen auf Anwendungen, die debuggen werden können.

Version 1.0.0-beta08

2. Juni 2021

androidx.compose.runtime:runtime-*:1.0.0-beta08 wird freigegeben. Version 1.0.0-beta08 enthält diese Commits.

API-Änderungen

  • State<T> ist jetzt State<out T> (I69049)
  • ControlledComposition-API-Änderung, um die Neuzusammensetzung von Änderungen in einer einzelnen Neuzusammensetzung zu ermöglichen. (Iaafd1, b/184173932)

Version 1.0.0-beta07

18. Mai 2021

androidx.compose.runtime:runtime-*:1.0.0-beta07 wird freigegeben. Version 1.0.0-beta07 enthält diese Commits.

API-Änderungen

  • Es wurden neue Compose-Compiler-APIs hinzugefügt, mit denen die vom Compiler generierten Quellinformationen bei der Reduzierung von Quellinformationen entfernt werden können. (Ia34e6)
  • Führt ReusableContent ein, das 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. Ausgenommen hiervon sind die generierten Knoten und die Werte, die zum Aktualisieren der Knoten verwendet wurden.

    Führt ReusableComposeNode ein, das den ausgegebenen Knoten wiederverwendet, anstatt ihn zu ersetzen, wie es für ComposeNode der Fall ist. (I1dd86)

  • @ComposeCompilerApi nicht mehr @RequiresOptIn (Iab690)

Fehlerkorrekturen

  • LazyColumn/Row sorgt nun dafür, dass bis zu zwei zuvor sichtbare Elemente aktiv (nicht verworfen) bleiben, auch wenn sie bereits herausgescrollt werden. Auf diese Weise kann die Komponente die aktiven Unterzusammensetzungen wiederverwenden, wenn wir ein neues Element zusammensetzen müssen, was die Scroll-Leistung verbessert. (Ie5555)

Version 1.0.0-beta06

5. Mai 2021

androidx.compose.runtime:runtime-*:1.0.0-beta06 wird freigegeben. 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 wird freigegeben. Version 1.0.0-beta05 enthält diese Commits.

API-Änderungen

  • @InternalComposeApi für 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 (I6f9de, b/184718994) kompatibel.

Version 1.0.0-beta04

7. April 2021

androidx.compose.runtime:runtime-*:1.0.0-beta04 wird freigegeben. Version 1.0.0-beta04 enthält diese Commits.

Fehlerkorrekturen

  • Bisher waren lokale zusammensetzbare Funktionen aufgrund ihrer Parameter überspringbar. Nach dieser Änderung werden keine lokalen zusammensetzbaren Funktionen mehr übersprungen. Diese Änderung wurde vorgenommen, da es üblich ist und erwartet wird, dass lokale Funktionen Parameter aus der übergeordneten Funktion erfassen. Wenn sie übersprungen werden, kommt es häufig zu Programmfehlern.

    Schauen wir uns das Beispiel an:

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

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

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

Version 1.0.0-beta03

24. März 2021

androidx.compose.runtime:runtime-*:1.0.0-beta03 wird freigegeben. Version 1.0.0-beta03 enthält diese Commits.

API-Änderungen

  • DefaultMonotonicFrameClock wurde verworfen. Durch den Aufruf von withFrameNanos oder Recomposer.runRecomposeAndApplyChanges ohne MonotonicFrameClock wird jetzt IllegalStateException ausgegeben. (I4eb0d)

Version 1.0.0-beta02

10. März 2021

androidx.compose.runtime:runtime-*:1.0.0-beta02 wird freigegeben. Version 1.0.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • Einschränkungen für die öffentliche Nutzung experimenteller APIs erzwingen (I6aa29, b/174531520)
  • Ein Fehler wurde behoben, der bei der Verwendung von rememberSaveable { mutableStateOf(0) } im Ziel von „navigation-compose“ fehlerhaft war. (I1312b, b/180042685, b/180701630)

Version 1.0.0-beta01

24. Februar 2021

androidx.compose.runtime:runtime-*:1.0.0-beta01 wird freigegeben. Version 1.0.0-beta01 enthält diese Commits.

Dies ist die erste Version der Betaversion von Compose 1.0.0.

API-Änderungen

  • Fügen Sie die experimentelle API Recomposer.runRecomposeConcurrentlyAndApplyChanges hinzu, um ungültig erklärte Kompositionen aus der Mainframe-Schleife neu zusammenzusetzen. (I342d0)
  • Alle zusammensetzbaren Funktionen, die mit @ReadOnlyComposable gekennzeichnet sind, werden jetzt nach der Kompilierungszeit validiert, damit nur Aufrufe an andere @ReadOnlyComposables (I58961) gesendet werden
  • defaultFactory für compositionLocalOf und staticCompositionLocalOf ist jetzt erforderlich und nicht mehr optional.

    Durch diese Änderung wird ein potenzieller Typfehler für Typen beseitigt, die keine Nullwerte zulassen und für die keine Standard-Factory bereitgestellt wurde. Zuvor wurde dadurch ein Nullverweis für einen Typ bereitgestellt, der keine Nullwerte zulässt.

    Wenn für Typen Nullwerte zulässig sind, sollten Sie { null } als Standard-Factory angeben.

    Wir raten davon ab, lokale Parameter mit Typen zu verwenden, die keine Nullwerte zulassen, es sei denn, ein vernünftiger Standardwert kann angegeben werden. Wenn kein vernünftiger Standardwert vorhanden ist, sollte das Lambda defaultFactory eine Ausnahme ausgeben. Allerdings bedeutet das Auslösen einer Ausnahme, dass Nutzer des lokalen Netzwerks eine implizite Abhängigkeit von der Bereitstellung haben, die vom Typsystem nicht erzwungen wird. (Ifbd2a)

  • Verworfene Symbole wurden aus der Erstellungslaufzeit entfernt (I3252c)

  • Das eingestellte emptyContent() wird entfernt. Verwende stattdessen {}. (Idb33f, b/179432510)

  • Provider wurde in CompositionLocalProvider umbenannt

    • Der Kompositionskonstruktor akzeptiert keinen Schlüsselparameter mehr und wurde eingestellt.
    • CurrentsCompositeKeyHash wurde in eine zusammensetzbare Top-Level-Eigenschaft anstelle einer zusammensetzbaren Funktion der obersten Ebene umgewandelt.
    • CompositionData und CompositionGroup wurden in den Namespace „androidx.compose.runtime.tooling“ verschoben
    • ComposableLambda wurde anstelle einer konkreten Klasse als Interface erstellt und verfügt nicht mehr über Typparameter.
    • ComposableLambdaN wurde als Schnittstelle anstelle einer konkreten Klasse erstellt und verfügt nicht mehr über Typparameter.
    • Die Funktion „SnapshotFlow“ wurde in den Namespace „androidx.compose.runtime“ verschoben
    • Die Zusammenführungsmethode von SnapshotMutationPolicy ist nicht mehr experimentell
    • Die Top-Level-Funktion „clearRoots“ von @TestOnly wurde entfernt. Es ist nicht mehr erforderlich.
    • Die Funktionen „keySourceInfoOf“ und „resetSourceInfo“ wurden entfernt. Sie werden nicht mehr benötigt.
    • Composer.collectKeySourceInformation wurde entfernt. Es ist nicht mehr erforderlich.
    • Die Methoden "isJoinedKey", "joinKeyLeft" und "joinKeyRight" wurden entfernt. Sie werden nicht mehr benötigt.
    • Verschiedene APIs auf oberster Ebene wurden verschoben und in verschiedene Dateien neu organisiert. Aufgrund der Semantik der Dateiklassen von Kotlin beeinträchtigt dies die Binärkompatibilität, aber nicht die Quellkompatibilität. Daher sollte dies für die meisten Nutzer kein Problem sein.
    • (I99b7d, b/177245490)
  • SnapshotStateObserver ist nicht mehr experimentell (Id2e6a)

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

  • Die folgenden Material API-Änderungen wurden vorgenommen:

    • Der contentPadding-Parameter wurde zu Top/BottomAppBar hinzugefügt, um das Anpassen des Standardabstands zu ermöglichen.
    • Parameter in BackdropScaffold neu geordnet, um den API-Richtlinien zu entsprechen, wenn erforderliche Parameter vor optionalen Parametern liegen.
    • Der Parameter icon in BottomNavigationItem wurde so verschoben, dass er nach selected und onClick liegt.
    • Der Parameter alwaysShowLabels in BottomNavigationItem wurde in alwaysShowLabel umbenannt.
    • bodyContent-Parameter wurden in einigen Komponenten in nur content umbenannt.
    • Parameter in ButtonDefaults.buttonColors() neu geordnet. Da sich der Typ der Parameter nicht geändert hat, führt dies nicht zu einem Fehler in Ihrem Code. 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, sie bietet aber mehr Einheitlichkeit und eine weitere Anpassung.
    • ElevationDefaults und animateElevation() wurden von der öffentlichen API-Oberfläche entfernt, da sie nicht häufig verwendet bzw. nützlich waren.
    • onValueChangeEnd wurde in Slider in onValueChangeFinished umbenannt und Nullwerte zulässig.
    • Der Parameter text in Snackbar wurde aus Gründen der Einheitlichkeit in content umbenannt.
    • Der Parameter contentPadding wurde zu DropdownMenuItem hinzugefügt, um das Anpassen des Standardabstands zu ermöglichen. Außerdem wurde content als Erweiterung für RowScope entwickelt.
    • 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 wird freigegeben. Version 1.0.0-alpha12 enthält diese Commits.

API-Änderungen

  • Die Unterstützung für ViewGroups wurde von UiApplier entfernt. Die veralteten zusammensetzbaren Funktionen „emitView“ wurden entfernt. (Ifb214)
  • CompositionReference wurde in CompositionContext umbenannt (I53fcb)
  • ComponentActivity.setContent wurde nach androidx.activity.compose.setContent im Modul androidx.activity:activity-compose verschoben. ICF416
  • Die Snapshot API wurde aktualisiert, damit sie den API-Richtlinien entspricht und interne Implementierungsklassen vor der öffentlichen API ausgeblendet wird. (Id9e32)
  • Ambients wurden umbenannt, sodass sie unter Ambient > CompositionLocal umbenannt werden. Ambients hießen früher „AmbientFoo“, jetzt heißt „CompositionLocals“ LocalFoo. (I2d55d)
  • Umbenennung von „Ambient“ in „CompositionLocal“ und „AmbientOf“/„staticAmbientOf“ in „compositionLocalOf“ bzw. „staticCompositionLocalOf“. Durch diese Änderung wird der Zweck von CompositionLocal deutlicher: ein Mechanismus zum Bereitstellen / Abrufen lokaler Werte für eine Komposition. CompositionLocal-Instanzen sollte das Präfix Local vorangestellt werden, z. B. val LocalFoo = CompositionLocalOf { Foo() }. (Ia55b6)
  • „takeMutableSnapshot“ und „takeSnapshot“ wurden zu Begleitmethoden von „Snapshot“. (I91f19)
  • @ComposableContract wurde eingestellt und durch drei spezifischere Annotationen ersetzt.

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

  • Die Dienstprogramme emptyContent() und (@Composable () -> Unit).orEmpty() wurden verworfen, da sie keine positiven Auswirkungen auf die Leistung oder den Wert mehr haben (I0484d).

  • snapshotFlow und withMutableSnapshot sind nicht mehr experimentell (I6a45f)

  • Recomposer können jetzt geschlossen werden. Bei geschlossenen Neuzusammensetzungen wird die Neuzusammensetzung so lange fortgesetzt, bis die untergeordneten Koroutinen abgeschlossen sind. Recomposer.shutDown wurde in „Abbrechen“ umbenannt, um einen Kontrast mit „Schließen“ zu bilden. (Ib6d76)

  • Das Artefakt compose:runtime-dispatch wurde jetzt eingestellt. MonotonicFrameClock ist jetzt in „compose:runtime“ und „AndroidUiDispatcher“ in „compose:ui“ zu finden. (Ib5c36)

  • Die API, auf die das Compiler-Plug-in „Compose“ ausgerichtet ist, wurde umgestaltet, um eine Schnittstelle anstelle einer konkreten Klasse zu verwenden. In der Schnittstelle wird auch kein Typparameter mehr verwendet.

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

  • SnapshotMutableState wurde eingeführt (Icfd03).

  • DisposableEffectDisposable wurde in DisposaleEffectResult (Ica7c6) umbenannt

  • Recomposer.current() wurde entfernt. [Abstrakt]ComposeView werden jetzt standardmäßig auf verzögerte, fensterbezogene Recomposers verwendet, die vom ViewTreeLifecycleOwner für das Fenster gesteuert werden. Die Neuzusammensetzung und mit FrameNanos-basierte Animationsmarkierungen werden pausiert, während der Hostlebenszyklus angehalten wird. (I38e11)

  • Recomposer.runningRecomposers bietet jetzt einen globalen StateFlow mit schreibgeschütztem RecomposerInfo zur Beobachtung des laufenden Kompositionsstatus während des Prozesses. Bevorzugen Sie diese API Recomposer.current(), da diese mittlerweile eingestellt wurde. (If8ebe)

  • DisposableEffectDisposable wurde in DisposaleEffectResult (I3ea68) umbenannt

Version 1.0.0-alpha11

28. Januar 2021

androidx.compose.runtime:runtime-*:1.0.0-alpha11 wird freigegeben. Version 1.0.0-alpha11 enthält diese Commits.

API-Änderungen

  • onCommit, onDispose und onActive wurden zugunsten der SideEffect und DisposableEffect APIs (If760e) eingestellt
  • Die emit() API und alle Überlastungen wurden verworfen und in ComposeNode umbenannt. Die APIs sind identisch, nur ein anderer Name, um den Namenskonventionen von Compose zu entsprechen (I4137b).
  • "invalid" und "compositionReference()" wurden zugunsten von "currentRecomposeScope" und "memoryCompositionReference" eingestellt. (I583a8)
  • MerkObserver ersetzt CompositionLifecycleObserver und CompositionLifecycleObserver wurde jetzt eingestellt.

    RememberObserver ist ein Ersatz für CompositionLifecycleObserver mit geänderter Semantik und umbenannten Methoden. Der Wechsel zur neuen API kann mechanisch für Objekte erfolgen, die nur einmal gespeichert werden. Dies ist und bleibt die empfohlene Vorgehensweise. Wenn eine Referenz jedoch in einer Komposition mehr als einmal 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 die Garantie für einen einzelnen onEnter-Aufruf unzuverlässig wurde und für RememberObserver entfernt wurde.

    RememberObserver fügt onAbandoned hinzu, die aufgerufen wird, wenn die RememberObserver-Instanz von dem an remember übergebenen Callback zurückgegeben wird, aber im Zusammensetzungsstatus nicht gespeichert wurde. Daher wird onRemembered nie aufgerufen. Dies kann auftreten, wenn eine Ausnahme die Komposition vor dem Abschluss beendet oder die Zusammensetzung verworfen wird, weil der Status, für den eine Komposition erstellt wurde, nicht mehr aktuell ist oder nicht mehr benötigt wird. Wenn die Instanz von RememberObserver, die der oben genannten Referenzempfehlung folgt, eine externe Ressource sowohl onForgotten als auch onAbandoned verfolgt, weisen beide darauf hin, dass die Ressource nicht mehr benötigt wird. Wenn das Objekt die gestarteten Arbeitsschritte oder in onRemembered zugewiesenen Ressourcen verfolgt, kann onAbandoned ignoriert werden, da es bei onRemembered nicht aufgerufen wird. (I02c36)

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

Fehlerkorrekturen

  • WithConstraints wurde in „BoxWithConstraints“ umgestaltet und nach „fundation.layout“ verschoben. (I9420b, b/173387208)
  • TestCoroutineDispatcher beim Testen verwenden (I532b6)

Version 1.0.0-alpha10

13. Januar 2021

androidx.compose.runtime:runtime-*:1.0.0-alpha10 wird freigegeben. Version 1.0.0-alpha10 enthält diese Commits.

Wichtige Änderung

  • Durch die Umstrukturierung der internen Compiler API können Änderungen an den Knoten, die infolge der Zusammensetzung generiert wurden, in Batches in die Phase „Änderungen anwenden“ übertragen werden, nachdem alle @Composable-Funktionen abgeschlossen sind.

    Dies ist eine Änderung, die das Verhalten beeinträchtigt und sich auf den Anwendungscode auswirken kann, da Knoten über interne und experimentelle APIs erst nach dem Anwenden von Änderungen verfügbar sind. Dies lässt sich normalerweise umgehen, indem Sie Code mit solchen Abhängigkeiten in eine zusammensetzbare SideEffect-Datei einfügen, um die Ausführung des Codes zu verzögern, bis die Knoten erstellt und initialisiert wurden. (I018da)

API-Änderungen

  • Es wurde eine Möglichkeit hinzugefügt, um nachzuverfolgen, ob Änderungen angewendet wurden. (I1b3e2)
  • Erweitern Sie [Zusammenfassung]ComposeView APIs, um Compose-basierte Ansichten wiederverwenden zu können, deren Zusammensetzung entsorgt und später neu erstellt werden soll. Fügen Sie APIs hinzu, um fensterbezogene Recomposers und CompositionReferences zum Erstellen von untergeordneten Kompositionen zu installieren und zu erkennen.

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

Fehlerkorrekturen

  • Recomposer stellt jetzt einen Flow mit seinem aktuellen Status bereit, sodass seine Aktivität und die Aktivität der zugehörigen Effekte überwacht werden können. (Ifb2b9)
  • Auf das native keyEvent kann jetzt über keyEvent.nativeKeyEvent zugegriffen werden (I87c57, b/173086397).

Version 1.0.0-alpha09

16. Dezember 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha09 wird freigegeben. 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 intern im Composer-Modul.

    CompositionData und CompositionGroup wurden als Ersatz für die UI-Tooling API hinzugefügt, mit der Informationen zur Zusammensetzung extrahiert werden können. Sie sind öffentlich, aber nicht für die Verwendung außerhalb der UI-Tooling API gedacht, da sie die Rohdaten bereitstellen, die die UI-Tooling API interpretiert (I31a9c).

  • Die Applier-Klasse gilt nicht mehr als (Id85b0)

  • Die Oberfläche Applier wurde geändert, um das Erstellen von Bäumen von unten anstelle von Top-down zu vereinfachen.

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

    Die neue Methode insertBottomUp() wurde hinzugefügt.

    Ein Anwender fügt entweder mit insertTopDown() oder insertBottomUp() Knoten in die Baumstruktur ein, die er bearbeitet, je nachdem, welcher besser funktioniert.

    Einige Bäume wie LayoutNode und View sind beim Erstellen von Bottom-up-Anlagen viel effizienter als von Top-down. Vor dieser Änderung war ein Stapel von Einfügungen erforderlich, um die Bottom-up-Methode zu implementieren, die dann in jede Anwendung kopiert werden musste, die eine Bottom-up-Konstruktion für die Leistung erforderte. Mit dieser Änderung überschreibt ein Applier insertBottomUp(), um einen Baum von Bottom-up zu erstellen, und insertTopDown(), um den Baum von oben nach unten zu erstellen. (Icbdc2)

  • Compose unterstützt Attribut-Getter, die zusammensetzbare Aufrufe erstellen können. Dies wird auch weiterhin unterstützt, aber die Syntax, mit der ein Property-Getter als „@Composable“ deklariert wird, ändert sich.

    Die inzwischen eingestellte Syntax hierfür war das Annotieren der Property selbst:

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

    Die nun korrekte Syntax hierfür ist das Annotieren des Getter der Eigenschaft:

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

    Beide Syntaxen funktionieren noch einige Zeit, aber die frühere veraltete Syntax wird letztendlich zu einem Kompilierungsfehler werden. (Id9197)

Fehlerkorrekturen

Version 1.0.0-alpha08

2. Dezember 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha08 wird freigegeben. 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 Erstellungsrichtlinien zu prüfen. Außerdem wurden einige APIs mit children als Name für die nachgestellte Lambda-Funktion gemäß Lint-Prüfung und Anleitung zu content migriert. (Iec48e)
  • Recomposer akzeptiert keinen EmbeddingContext mehr. Erforderliche Planungsabhängigkeiten werden aus „EffectCoroutineContext“ abgerufen. FrameManager wurde eingestellt. Plattformintegrationen sollten ihre eigene globale Snapshot-Verarbeitung initialisieren. (I02369)
  • Die Funktion „RestorableStateHolder.withRestorableState“ wurde in „ResorableStateProvider“ (I66640) umbenannt

Fehlerkorrekturen

  • Ambients mit dem Namen Ambient als Suffix wurden eingestellt und durch neue Properties mit dem Präfix „Ambient“ ersetzt. Dabei wurden andere Richtlinien für Ambients und die Compose API befolgt. (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 wird freigegeben. Version 1.0.0-alpha07 enthält diese Commits.

Neue Funktionen

API-Änderungen

  • Die Annotation @UnionType wurde eingestellt (I57cde).
  • „OfferDefault“ wurde als Alternative zum Bereitstellen von Ambients hinzugefügt. Damit können Sie Umgebungswerte angeben, die nur festgelegt werden, wenn noch kein Umgebungswert angegeben wurde. (Id6635, b/171024925)
  • LaunchedTask wurde aus Gründen der Konsistenz mit den SideEffect und DisposableEffect APIs in LaunchedEffect umbenannt. LaunchedEffect ohne Themenparameter 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 dem Anwenden von Änderungen auf die Struktur beginnt bzw. fertig ist. Sie können bei Bedarf für die Batch-Ressourcenverwaltung verwendet werden. ICF476
  • Recomposer erfordert jetzt CoroutineContext beim Erstellen (Ic4610)
  • Änderungen an der internen SlotTable-Implementierung, die sich nicht auf die öffentliche API auswirken sollte (If9828)
  • Verworfene rxjava2-Adapter, die den Anfangswert nicht übernehmen, wurden entfernt (Idb72f).

Fehlerkorrekturen

  • „fundation.Text“ wurde eingestellt und durch „material.Text“ ersetzt. Eine einfache, neutrale 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)
  • Einige Layout-Symbole wurden von androidx.compose.ui nach androidx.compose.layout.ui verschoben. (I0fa98, b/170475424)

Externer Beitrag

  • Das Modul runtime-rxjava3 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 wird freigegeben. Version 1.0.0-alpha06 enthält diese Commits.

API-Änderungen

  • Recomposer ist jetzt eine CompositionReference und eine gültige übergeordnete Komposition. Die explizite Neuerstellung von Komponisten ist jetzt an weniger Stellen erforderlich. (I4036f)
  • SideEffect wurde die DisposableEffect-Gegenstück-API hinzugefügt, wodurch die Rolle von onCommit-with-params mit der erforderlichen onDispose gefüllt wird.
    • Die MemorystoreUpdatedState API wurde hinzugefügt, um Daten aus der Neuzusammensetzung zu laufenden oder langlebigen Prozessen wie DisposableEffects oder LaunchedTasks zu veröffentlichen.
    • (Id50b9)
  • MutableVector implementiert jetzt RandomAccess (I85d73, b/170461551)
  • Es wurde eine zusammensetzbare Funktion von SideEffect hinzugefügt, mit der Nebeneffekte der Komposition auf Objekte angewendet werden können, die von der Komposition verwaltet werden. SideEffect soll die zusammensetzbare Funktion onCommit ersetzen. (Ia77c2)
  • Neue experimentelle API RestorableStateHolder Sie ermöglicht, den mit [SavedInstanceState] und [rememberSavedInstanceState] für die Unterstruktur definierten Status zu speichern, bevor er freigegeben wird, damit er beim nächsten Mal mit dem wiederhergestellten Status wieder zusammengefügt werden kann. (I66884, b/166586419)

Fehlerkorrekturen

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

Version 1.0.0-alpha05

14. Oktober 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha05 wird freigegeben. Version 1.0.0-alpha05 enthält diese Commits.

API-Änderungen

  • Experimental Modifier.pointerInput sperrt Eingabemodifikator (Ia77d2)
  • Die Scrollleistung von LazyColumn/Row wird verbessert, da bei jedem Scrollen weniger Arbeit in der Unterzusammensetzung ausgeführt wird. Die neue Methode hasUngültigeations() wurde für die Composition-Klasse hinzugefügt. Die Methode "hasPendingChanges()" von Recomposer wurde in "has Invalidations()" umbenannt (Ib2f32, b/168293643, b/167972292, b/165028371).
  • Fügen Sie die ProductState API zum Starten von Koroutinen aus der Komposition hinzu, die im Laufe der Zeit einen einzelnen State<T>-Wert aktualisieren (Id4a57).
  • „launchInComposition“ wurde in „LaunchedTask“ umbenannt, um den Richtlinien für die Compose API zu entsprechen (I99a8e).
  • Die Reihenfolge der place()-Aufrufe in benutzerdefinierten Layouts definiert nun die Zeichenreihenfolge für die untergeordneten Elemente (Ibc9f6).

Version 1.0.0-alpha04

1. Oktober 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha04 wird freigegeben. Version 1.0.0-alpha04 enthält diese Commits.

API-Änderungen

  • "OwnerScope" wurde hinzugefügt, um die Sammlung von Layout- und Beobachtungsbereichen zuzulassen, sobald diese nicht mehr gültig sind. (Ic4cf8)
  • AbgeleiteteStateOf API wurde hinzugefügt, um State-Objekte auf der Grundlage einer Berechnung zu erstellen, die andere State-Objekte lesen (und ableiten) kann (If758b)
  • TestOnly API für SnapshotStateObserver (I6e2a9) hinzugefügt

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 wird freigegeben. Version 1.0.0-alpha03 enthält diese Commits.

API-Änderungen

  • CompositionCoroutineScope implementiert nicht mehr MonotonicFrameClock. 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 Entsprechungen, die in ComposeTestRule (I7f45a) definiert sind.
  • launchInComposition startet keine unausgeteilten Koroutinen mehr (Ief6af, b/166486000)

Version 1.0.0-alpha02

2. September 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha02 wird freigegeben. Version 1.0.0-alpha02 enthält diese Commits.

API-Änderungen

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

    Diese Änderung führt nicht zu einer funktionsgefährdenden Änderung auf Quellebene, da die einzigen geänderten APIs Compiler APIs sind, für die eine ausdrückliche Zustimmung gilt. (I7afd2, b/158123185)

  • Planungsmethoden aus EmbeddingContext entfernt (I7b9be)

  • onPreCommit wurde eingestellt. onCommit verhält sich jetzt wie onPreCommit.

    onCommit und onActive werden jetzt im selben 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 wird freigegeben. 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 wird freigegeben. Version 0.1.0-dev17 enthält diese Commits.

API-Änderungen

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

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

  • Die zusammensetzbare Funktion state { ... } wurde verworfen und durch explizite Aufrufe von remember { mutableStateOf(...) } ersetzt. Dies reduziert die API-Oberfläche insgesamt und die Anzahl der Konzepte für die Statusverwaltung und entspricht dem Muster by mutableStateOf() für die Delegierung von Klassenattributen. (Ia5727)

  • Flow.collectAsState ermittelt jetzt den Standard-Dispatcher aus der Zusammensetzung selbst und nicht den Standardwert "Dispatchers.Main". (I9c1d9)

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

Fehlerkorrekturen

  • emitView“ wurde verworfen. 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 nur noch unterstützt wird, wenn es sich um Blätter im Zusammensetzungsbaum handelt. In diesem Fall ist dies mit AndroidView möglich. (I29b1e, b/163871221)

Version 0.1.0-dev16

5. August 2020

androidx.compose.runtime:runtime-*:0.1.0-dev16 wird freigegeben. Version 0.1.0-dev16 enthält diese Commits.

API-Änderungen

  • Die Standard-Mutationsrichtlinie von mutableStateOf(), ambientOf() und savedInstanceStateOf() wurde in structuralEqualityPolicy() anstelle von referentialEqualityPolicy() geändert.

    Als Standardeinstellung wird jetzt == statt === 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 und wurden so geändert, dass sie mit mutableStateOf() übereinstimmen.

    Die strukturelle Gleichheit entspricht den Erwartungen der Entwickler besser.

    Beispiel:

    val state = mutableStateOf(1f)
    

    gefolgt von

    state.value = 1f
    

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

    Das ist eine nicht abwärtskompatible Änderung, aber in den meisten Fällen – z. B. bei Klassen, die equals() nicht überschreiben – hat dies keine spürbaren Auswirkungen auf eine Anwendung.

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

    Das vorherige Verhalten lässt sich wiederherstellen, indem Sie den Richtlinienparameter policy = referentialEqualityPolicy() in Aufrufe von mutableStateOf(), ambientOf() und savedInstanceStateOf() einfügen. (Ic21a7)

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

Fehlerkorrekturen

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

    Die MonotonicFrameClock-Äquivalent von „Manuelle AnimationClock“ heißt jetzt „ManuellFrameClock“. (I111c7, b/161247083)

  • „Modifier.stateDraggable“ wurde komplett überarbeitet und in „Modifier.swipeable“ umbenannt. Es wurde eine neue SwipeableState-Klasse eingeführt und DrawerState und BottomDrawerState wurden refaktoriert, um von ihr zu übernehmen. [Modal/Bottom]DrawerLayout übernimmt keinen onStateChange-Parameter mehr. (I72332, b/148023068)

  • Modifier.plus wurde eingestellt. Verwende stattdessen Modifier.then. „Dann“ gibt ein stärkeres Signal für die Sortierung, verhindert aber auch die Eingabe von Modifier.padding().background() + anotherModifier, wodurch die Kette unterbrochen wird und schwerer zu lesen ist (Iedd58, b/161529964).

  • SubcomposeLayout wird hinzugefügt. Es handelt sich um eine Low-Level-Primitive, mit der die untergeordneten Elemente während der Messung erstellt werden können, falls einige Werte verwendet werden sollen, die erst später während der Messung für die Unterstrukturzusammensetzung verfügbar sind. Zum Beispiel wird WithConstraints nicht mit SubcomposeLayout implementiert. (I25cc8)

  • Material FilledTextField wurde in TextField umbenannt und das grundlegende TextField in BaseTextField umbenannt, damit die einfachste gewünschte API leichter zu finden und zu verwenden ist (Ia6242, b/155482676).

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

Version 0.1.0-dev15

22. Juli 2020

androidx.compose.runtime:runtime-*:0.1.0-dev15 wird freigegeben. 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 deklarieren gezeigt werden.

API-Änderungen

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

    Begründung

    Die Begründung umfasst unter anderem:

    • Reduziert die API-Fläche und die Konzepte, die wir vermitteln müssen
    • Entspricht eher anderen Toolkits (Swift UI, React, Flutter)
    • Reversible Entscheidung. Wir können @Model später jederzeit wiederherstellen.
    • Die Verwendung von Sonderfällen und schwierig zu beantwortenden Fragen zur Konfiguration von @Model werden vermieden.
    • @Model-Datenklassen, Gleichheitszeichen, Hashcode usw.
    • Wie kann ich festlegen, dass einige Eigenschaften „beobachtet“ werden und andere nicht?
    • Wie lege ich für die Beobachtung die strukturelle im Vergleich zur referenziellen Gleichheit fest?
    • Reduziert die „Magie“ im System. Würde die Wahrscheinlichkeit verringern, dass jemand annimmt, dass das System schlauer ist als es ist (d. h. es weiß, wie eine Liste zu unterscheiden ist).
    • Sorgt für einen intuitiveren Detaillierungsgrad der Beobachtung.
    • Verbesserte Refaktorierbarkeit von Variable -> Eigenschaft in Klasse
    • Dadurch ergeben sich möglicherweise neue Möglichkeiten für speziell auf den jeweiligen Bundesstaat zugeschnittene Optimierungen
    • Passt sich besser an das restliche Ökosystem an und verringert die Ambiguität in Bezug auf einen unveränderlichen Zustand oder die „Akzeptanz eines veränderlichen Zustands“

    Migrationshinweise

    Nahezu alle bestehenden Verwendungen von @Model werden auf eine von zwei Arten relativ einfach umgewandelt. Im folgenden Beispiel wird die Klasse @Model mit zwei Eigenschaften verwendet und in einer zusammensetzbaren Funktion verwendet.

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

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

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

    Wichtig: Dieser Ansatz funktioniert nur, wenn die einzigen Mutationen an dieser Klasse in demselben Bereich ausgeführt wurden, in dem die Instanz State erstellt wird. Wenn sich die Klasse intern außerhalb des Umfangs der Verwendung mutiert und Sie sich auf deren Beobachtung verlassen, ist der nächste Ansatz der von Ihnen zu verwendende Ansatz.

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

    Alternative 2: „mutableStateOf“ und Attributdelegate verwenden

    Dieser Ansatz wird durch die Attributdelegate von Kotlin und die mutableStateOf API erleichtert, mit der Sie MutableState-Instanzen außerhalb der Zusammensetzung 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 gar nicht ändert, sondern nur die interne Implementierung. Das Verhalten ist jedoch nicht vollständig identisch mit dem ursprünglichen Beispiel, da jetzt jede Property einzeln beobachtet/abonniert wird, sodass die Neuzusammensetzungen, die Sie nach dieser Refaktorierung sehen, möglicherweise enger gefasst werden könnten.

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

    (I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/143413}921413}3, 41413}

  • Ändert die Strategie zur Codegenerierung des Compilers von Compose. Vor dieser Änderung wandelte der Compose-Compiler Aufrufe in zusammensetzbare Funktionen um. Mit dieser Änderung transformieren wir nun den Hauptteil einer zusammensetzbaren Funktion und lassen die Aufrufseite unverändert (zumeist).

    Das bedeutet, dass der Großteil der Logik, die mit der Erstellungslaufzeit kommuniziert, zu Beginn des Funktionstexts und nicht auf der Aufrufseite stattfindet.

    Dies sollte eine quellkompatible Änderung für die gesamte Verwendung von „Compose“ sein. Die meisten Nutzer von compose dürften aufgrund dieser Änderung keinen Code aktualisieren müssen.

    Zu diesem Zweck 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 die Composer-Ganzzahl, eine Schlüsselganzzahl. Eine Bitmasken-Ganzzahl, mit der Metadaten über Aufrufe weitergegeben werden.

    Compose wandelt jetzt auch Standardargumente in eine zusammensetzbare Funktion um. Dies geschieht, ohne eine zusätzliche synthetische Standardüberlastung der Funktion selbst einzurichten, sodass durch diese Änderung weniger Funktionen definiert werden.

    Bekannte bewusste Verhaltensänderungen, die daraus resultieren:

    1. Bei einigen Anrufen werden Anrufe im Hintergrund übersprungen.
    2. Zusammensetzbare Ausdrücke in Standardargumentausdrücken werden jetzt korrekt abonniert und verarbeitet

    Diese Arbeit beinhaltete einige Optimierungen: 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 das Überspringen von zusammensetzbaren Funktionen, die zuvor nicht übersprungen wurden.2. Parameter, die bei der Kompilierung als „statisch“ eingestuft werden, werden nicht mehr in der Laufzeit verglichen oder gespeichert. Dies reduziert die Anzahl der Vergleiche und die Größe der Slottabelle. 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 einem geringeren Aufwand 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 bezogen sich auf APIs, die vom Compiler direkt angegriffen werden. Die typische Verwendung von „compose“ ist davon nicht betroffen: 1. Composer::startExpr wurde entfernt. 2. Composer::endExpr wurde entfernt. 3. Composer::call wurde eingestellt 4. Die nicht-varargs-Überlastungen von key wurden entfernt. Verwenden Sie ab sofort die Version vararg. 5. Die Pivotal-Anmerkung wurde eingestellt. Verwende key als Ersatz. 6. „ScopeUpdateScope::updateScope“ wurde geändert, sodass nun „Function3“ anstelle von „Function1“ erwartet wird. 7. „launchableFunction“ und „neustartableFunctionN“ wurden aktualisiert, um zusätzliche Parameter für die Kompilierungszeit einzubeziehen (I60756, b/143464846).

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

  • Es wurden Standardmethodenimplementierungen für CompositionLifecycleObserver (I24289) hinzugefügt.

  • Applier erfordert jetzt eine Methode „clear()“ zum Entsorgen von Kompositionen (Ibe697).

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

  • Erinnerungs-CoroutineScope() wurde hinzugefügt, um einen verwalteten CoroutineScope zu erhalten, der für das Starten von Jobs als Reaktion auf Ereignisse zusammengesetzt wird. (I0e264)

  • MutableVector ist eine neue Sammlung, in der keine der standardmäßigen Collection-Schnittstellen implementiert ist. Diese Sammlung bietet höhere Geschwindigkeit als andere Anforderungen und ist nur für interne Implementierungen gedacht. (I8ebd6)

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

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

  • Fügen Sie die oberste Ebene der withFrameNanos-Funktion für das Timing der Animation hinzu (Ie34c5).

  • Die Annotation „@Untracked“ wurde eingestellt. Ersetzen durch @ComposableContract(tracked=false) (Id211e)

  • ResetableFunction und zugehörige APIs wurden in ComposableLambda usw. umbenannt. Diese APIs wurden nur vom Compiler angegriffen, sodass sich dies nicht normal auf die Kompatibilität auf Quellebene auswirken sollte. Die Umbenennung dient vor allem dazu, zu vermitteln, was diese Klasse besser ist, wenn sie in Stacktraces auftaucht (I7eb25).

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

  • Ambient<T> ist jetzt @Stable statt @Unmutable (I0b4bb)

  • Vor dieser Änderung konnte das Compose-Compiler-Plug-in Aufrufe an Konstruktoren innerhalb einer @Composable-Funktion nicht einfach abfangen, wenn eine (I5205a, b/158123804) vorhanden war.

  • Die Funktion „Recompose“ ist keine nützliche Abstraktion mehr. Ein Großteil der Neuzusammensetzung sollte das Ergebnis von MutableState-Zuweisungen sein. Für andere Aufgaben empfiehlt es sich, die Funktion invalidate zu verwenden, um eine Neuzusammensetzung des aktuellen Bereichs auszulösen. (Ifc992)

  • Beobachten ist keine nützliche Abstraktion mehr. Wenn Sie ihn replizieren müssen, kann seine Implementierung einfach durch Erstellen einer zusammensetzbaren Funktion repliziert werden, die einen zusammensetzbaren Lambda-Parameter ausführt. Beispiel: @Composable fun Observe(body: @Composable () -> Unit) = body() (I40d37)

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

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

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

  • [Mutable]Die Stellvertreter-Operatoren für Status-Properties wurden in Erweiterungen verschoben, um die Optimierung von Property-Delegaten für Kotlin 1.4 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“ verschoben androidx.compose.Emittable wurde entfernt. Es war durch ComponentNode redundant. 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 Composition, die von setContent zurückgegeben wird. androidx.compose.Compose.subcomposeInto wurde nach androidx.ui.core.subcomposeInto ComponentNode#emitInsertAt umbenannt in ComponentNode#insertAt ComponentNode#emitRemoveAt wurde in Component#removeAt Component0Node#emitMode umbenannt in androidx.ui.core.subcomposeIntoNode#emitInsertAt wurde in ComponentNode#insertAt umbenannt.

  • Das Flag ComposeFlags.COMPOSER_PARAM wurde in true geändert. Dadurch wird die Strategie zur Codegenerierung für das „compose“-Plug-in geändert. Auf übergeordneter Ebene führt dies dazu, dass @Composable-Funktionen mit einem zusätzlichen synthetischen Parameter generiert werden, der an nachfolgende @Composable-Aufrufe übergeben wird, damit die Laufzeit die Ausführung ordnungsgemäß verwaltet. Dies ist eine erhebliche Änderung beim Binärcode, die jedoch bei jeder genehmigten Verwendung von „compose“ die Kompatibilität auf Quellebene aufrechterhalten sollte. (I7971c)

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

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

  • Rx-Adapter ohne expliziten Anfangswert werden 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 value von observable.subscribeAsState() (Ifab4b, b/153369097)

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

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

  • Neue Funktionen: savedInstanceState() undmemorySavedInstanceState(). Sie ähneln state() und keep(), haben aber eine integrierte Instanzstatusunterstützung (If1987, b/152025209)

Fehlerkorrekturen

  • runOnIdleCompose umbenannt in runOnIdle (I83607)
  • Made LayoutNode experimentelle API (I4f2e9)
  • „androidx.ui.foundation.TextFieldValue“ und „androidx.ui.input.EditorValue“ wurden eingestellt. Die zusammensetzbaren Funktionen „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 entfernt und durch den Modifier ersetzt. Wir haben die DrawBackground-Implementierungen für Farbe, Pinsel und Farbe überarbeitet, um Codepfade zu reduzieren. Außerdem wurde die Anforderung entfernt, dass der Modifikator als Teil der Komposition erstellt werden muss. (I0343a)
  • Die APIs der höheren Ebene, die ein Canvas zur Freigabe von CanvasScope bereitstellen, wurden aktualisiert. Nutzer müssen dann ihre eigenen Paint-Objekte nicht mehr verwalten. Nutzer, die weiterhin Zugriff auf einen Canvas benötigen, können die DrawCanvas-Erweiterungsmethode verwenden. Diese bietet einen Callback, mit dem Zeichenbefehle mit dem zugrunde liegenden Canvas ausgeführt werden können. (I80afd)
  • Die nachgelagerte Lambda API WithConstraints wurde geändert. Statt zwei Parametern gibt es nun einen Empfängerbereich, der neben den Einschränkungen und layoutDirection der Eigenschaften minWidth, maxWidth, minHeight und maxHeight in Dp definiert ist (I91b9a, b/149979702)
  • Modifikator für symmetrischen Abstand hinzugefügt. (I39840)
  • „wrapContentWidth“ und „wrapContentHeight“ wurden aktualisiert, sodass jetzt eine vertikale oder horizontale Ausrichtung anstelle einer Ausrichtung erwartet wird. Der Gravitationsmodifikator wurde aktualisiert, um die vertikale oder horizontale Ausrichtung zu akzeptieren. Die Zeilen-, Spalten- und Filterlisten wurden aktualisiert, um benutzerdefinierte kontinuierliche Ausrichtungen zu unterstützen. (Ib0728)
  • Das Modul "ui-text" wird in "ui-text-core" (I57dec) umbenannt.
  • Verbesserung der DrawModifier API:
    • Der Empfängerbereich fürdraw() ContentDrawScope wurde erstellt.
    • Alle Parameter fürdraw() wurden entfernt
    • DrawScope hat die gleiche Oberfläche wie das frühere CanvasScope
    • ContentDrawScope verfügt über die MethodedrawContent() (Ibaced, b/152919067).
  • ColoredRect wurde eingestellt. Verwende stattdessen Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)
  • Der Operator "Modifier Plus" wurde durch Erweiterungsfunktionen auf Werkseinstellungen ersetzt (I225e4).
  • RowScope- und ColumnScope-Mitglieder sind jetzt außerhalb von Row und Column zugänglich. (I3a641)
  • LayoutFlexible wurde in LayoutWeight umbenannt. Enger zu füllender Parameter wurde umbenannt. (If4738)
  • WithConstraints hat LayoutDirection-Parameter erhalten (I6d6f7)
  • Hintergrund wurde in „Hintergrund zeichnen“ umbenannt und der Hintergrund soll standardmäßig gespeichert werden (Ia0bd3).
  • ButtonStyle wurde durch eindeutige Funktionen ersetzt und Textüberlastung (String) beseitigt. 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

  • Nicht benötigte APIs wie Looper und Handler aus der Portierungsebene für die Erstellung der Laufzeit entfernen (I6847d)
  • Flow<T>.collectAsState() ohne Anfangswert verwerfen. Verwenden Sie stattdessen StateFlow<T> oder übergeben Sie einen expliziten Anfangswert. (I63f98, b/157674865)