Laufzeit erstellen
androidx.compose.runtime
androidx.compose.runtime.rxjava2
androidx.compose.runtime.rxjava3
androidx.compose.runtime.saveable
androidx.compose.runtime.Snapshots
(Siehe API-Referenzdokumentation für alle Erstellungspakete)
Letzte Aktualisierung | Stabile Version | Releasekandidat | Beta-Ausgabe | Alpha-Release |
---|---|---|---|---|
4. September 2024 | 1.7.0 | - | - | 1.8.0-alpha01 |
Struktur
Compose besteht aus sieben Maven-Gruppen-IDs innerhalb von androidx
. Jede Gruppe
enthält eine ausgewählte Teilmenge von Funktionen, jede mit ihren eigenen Release-Sätzen
Notizen.
In dieser Tabelle werden die Gruppen und Links zu den einzelnen Versionshinweisen erläutert.
Gruppe | Beschreibung |
---|---|
compose.animation: | Animationen in den Jetpack Compose-Anwendungen erstellen, um die User Experience zu bereichern |
compose.compiler | @Composable-Funktionen transformieren und Optimierungen mit einem Kotlin-Compiler-Plug-in aktivieren. |
compose.foundation | Schreiben Sie Jetpack Compose-Anwendungen mit gebrauchsfertigen Bausteinen und erweitern Sie die Grundlage für den Aufbau Ihrer eigenen Designsysteme. |
compose.material | Jetpack Compose-UIs mit einsatzbereiten Material Design-Komponenten erstellen Dies ist der übergeordnete Einstiegspunkt von Compose. Hier werden Komponenten bereitgestellt, die den unter www.material.io beschriebenen Komponenten entsprechen. |
compose.material3 einfügen | Jetpack Compose-UIs mit Material Design 3 Components erstellen, der nächsten Entwicklung des Material Design Material 3 enthält aktualisierte Designs und Komponenten sowie Funktionen zur Personalisierung von Material You wie dynamische Farben. Das Produkt wurde so entwickelt, dass es zum visuellen Stil und zur System-UI von Android 12 passt. |
compose.runtime | Grundlegende Bausteine des Programmiermodells und der Statusverwaltung von Compose sowie die zentrale Laufzeit für das Compose-Compiler-Plug-in. |
compose.ui | Grundlegende Komponenten der Benutzeroberfläche zum Schreiben von E-Mails, die für die Interaktion mit dem Gerät erforderlich sind, darunter Layout, Zeichnen und Eingabe |
Abhängigkeiten deklarieren
Wenn Sie eine Abhängigkeit von Compose hinzufügen möchten, müssen Sie das Maven-Repository von Google zu Ihrem Projekt arbeiten. Maven-Repository von Google lesen .
Fügen Sie der Datei build.gradle
die Abhängigkeiten für die Artefakte hinzu, die Sie benötigen
Ihre App oder Ihr Modul:
Cool
dependencies { implementation "androidx.compose.runtime:runtime:1.7.0" implementation "androidx.compose.runtime:runtime-livedata:1.7.0" implementation "androidx.compose.runtime:runtime-rxjava2:1.7.0" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.runtime:runtime:1.7.0") implementation("androidx.compose.runtime:runtime-livedata:1.7.0") implementation("androidx.compose.runtime:runtime-rxjava2:1.7.0") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Dein Feedback hilft uns, Jetpack zu verbessern. Teilen Sie uns mit, wenn Sie neue Ausgaben entdecken oder zur Verbesserung dieser Bibliothek. In der bestehende Probleme in dieser Bibliothek, bevor Sie eine neue erstellen. So können Sie für ein vorhandenes Problem abstimmen: indem Sie auf die Sternschaltfläche klicken.
Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung. .
Laufzeitversion 1.0
Version 1.0.0-beta01
29. November 2023
androidx.compose.runtime:runtime-tracing:1.0.0-beta01
wurde veröffentlicht. Version 1.0.0-beta01 enthält diese Commits.
Version 1.0.0-alpha05
15. November 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha05
wurde veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.
Fehlerkorrekturen
- Abhängigkeiten wurden an die niedrigsten unterstützten stabilen Versionen (z. B. Composer-runtime und Tracing-Perfetto) angepinnt. Dadurch wurde ein Problem behoben, bei dem Composer-runtime-tracing eine neuere Version von Compose-runtime in die App einbrachte.
Version 1.0.0-alpha04
23. August 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha04
wurde veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.
Neue Funktionen
- Kompatibel mit den neuesten Versionen von Benchmark und Tracing Perfetto, wodurch die Nachverfolgung von Kompositionen beim Start der App (Kaltstart) unterstützt wird, z.B. in AndroidX Benchmark und Android Studio (ab Hedgehog Beta 2).
API-Änderungen
androidx.tracing.perfetto.Trace
wurde inandroidx.tracing.perfetto.PerfettoSdkTrace
umbenannt. (I44af8)- Konsistenz der Tracing Perfetto SDK APIs mit
android.os.Trace
(I73ba0, b/282199917) - Voraussetzungen für das Tracing beim App-Start (Iad890)
- Experimentelle und öffentliche API-Dateien zusammengeführt (I0f2e1, b/278769092)
Version 1.0.0-alpha02
8. Februar 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha02
wurde veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.
Neue Funktionen
- Keine funktionellen Änderungen. Mehrere Leistungsoptimierungen in nachgelagerten Abhängigkeiten
androidx.tracing:tracing-perfetto*
.
Version 1.0.0-alpha01
7. September 2022
androidx.compose.runtime:runtime-tracing:1.0.0-alpha01
wurde veröffentlicht. Version 1.0.0-alpha01 enthält diese Commits.
Neue Funktionen
androidx.compose.runtime:runtime-tracing
ist eine Bibliothek, die – dank unterstützter Tools (demnächst verfügbar) – erweitertes Tracing in einer Compose-App ermöglicht. Diese erste Version ist 1.0.0-alpha01.
Version 1.8
Version 1.8.0-alpha01
4. September 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha01
wurde veröffentlicht. Version 1.8.0-alpha01 enthält diese Commits.
Version 1.7
Version 1.7.0
4. September 2024
androidx.compose.runtime:runtime-*:1.7.0
wurde veröffentlicht. Version 1.7.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.6.0
- Es besteht jetzt die Möglichkeit, eine lokale Zusammensetzung anzugeben, die entweder standardmäßig mithilfe von
compositionLocalWithComputedDefault()
anhand der Werte anderer lokaler Kompositionen berechnet wird oder indem eine Lambda-Funktion zur Berechnung des Werts mithilfe vonprovidesComputed
anstelle vonprovides
bereitgestellt wird. - Der Wert einer lokalen Zusammensetzung kann mithilfe der Eigenschaft
currentValue
der lokalen Zusammensetzung abgerufen werden, auf die innerhalb der Lambda-Funktion zugegriffen werden kann, um den Wert zu berechnen. Diese wird anstelle voncurrent
verwendet, auf das nur in@Composable
-Funktionen zugegriffen werden kann. (Iadbc0) - Neu erstellte Statusobjekte sind über andere Snapshots, einschließlich des globalen Snapshots, sofort mit ihrem Anfangszustand zugänglich. Nachfolgende Änderungen sind erst sichtbar, wenn der Snapshot angewendet wird, in dem das Objekt erstellt wurde.
- Der Anfangszustand von
mutableStateOf()
sowie deren primitive Versionen sind der Wert, der als Parameter anmutableStateOf()
übergeben wird. Der Anfangszustand vonmutableStateListOf()
undmutableStateMapOf()
ist leer. Snapshot.isInSnapshot
undSnapshot.PreexistingSnapshotId
wurden hinzugefügt, um zu ermöglichen, dass ein Statusobjekt sofort aus dem globalen Snapshot nach seiner Erstellung zugänglich ist.- Benutzerdefinierte Statusobjekte können den sofortigen Zugriff unterstützen, indem dem Muster der Änderungen an den integrierten Snapshot-Objekten gefolgt wird. (I84a17)
- Aktivieren Sie
nonSkippingGroupOptimization
für Erstellungsbibliotheken. Dadurch wird der generierte Code für alle nicht neustartbaren zusammensetzbaren Funktionen in androidx effizienter. Wir planen, diese Funktion in Zukunft standardmäßig zu aktivieren. I(acbc08) - Zusammensetzbare Lambdas in Unterzusammensetzungen im selben Frame entwerten. (98301c)
- Rufe den
onRelease
-Callback in der gleichen Reihenfolge wieonForgotten
auf. (2cd790) - Modus für starkes Überspringen aktivieren (ed1766)
- Machen Sie
currentCompoundHashKey
in mehr Fällen eindeutig (d4a872)
Version 1.7.0-rc01
21. August 2024
androidx.compose.runtime:runtime-*:1.7.0-rc01
wurde veröffentlicht. Version 1.7.0-rc01 enthält diese Commits.
Version 1.7.0-beta07
7. August 2024
androidx.compose.runtime:runtime-*:1.7.0-beta07
wurde veröffentlicht. Version 1.7.0-beta07 enthält diese Commits.
Version 1.7.0-beta06
24. Juli 2024
androidx.compose.runtime:runtime-*:1.7.0-beta06
wurde veröffentlicht. Version 1.7.0-beta06 enthält diese Commits.
Version 1.7.0-beta05
10. Juli 2024
androidx.compose.runtime:runtime-*:1.7.0-beta05
wurde veröffentlicht. Version 1.7.0-beta05 enthält diese Commits.
Version 1.7.0-beta04
26. Juni 2024
androidx.compose.runtime:runtime-*:1.7.0-beta04
wurde veröffentlicht. Version 1.7.0-beta04 enthält diese Commits.
Version 1.7.0-beta03
12. Juni 2024
androidx.compose.runtime:runtime-*:1.7.0-beta03
wurde veröffentlicht. Version 1.7.0-beta03 enthält diese Commits.
Version 1.7.0-beta02
29. Mai 2024
androidx.compose.runtime:runtime-*:1.7.0-beta02
wurde veröffentlicht. Version 1.7.0-beta02 enthält diese Commits.
Version 1.7.0-beta01
14. Mai 2024
androidx.compose.runtime:runtime-*:1.7.0-beta01
wurde veröffentlicht. Version 1.7.0-beta01 enthält diese Commits.
Version 1.7.0-alpha08
1. Mai 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha08
wurde veröffentlicht. Version 1.7.0-alpha08 enthält diese Commits.
Version 1.7.0-alpha07
17. April 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha07
wurde veröffentlicht. Version 1.7.0-alpha07 enthält diese Commits.
Neue Funktionen
- Es besteht jetzt die Möglichkeit, eine lokale Zusammensetzung anzugeben, die entweder standardmäßig mithilfe von
compositionLocalWithComputedDefault()
anhand der Werte anderer lokaler Kompositionen berechnet wird oder indem eine Lambda-Funktion zur Berechnung des Werts mithilfe vonprovidesComputed
anstelle vonprovides
bereitgestellt wird. - Der Wert einer lokalen Zusammensetzung kann mithilfe der Eigenschaft
currentValue
der lokalen Zusammensetzung abgerufen werden, auf die innerhalb der Lambda-Funktion zugegriffen werden kann, um den Wert zu berechnen. Diese wird anstelle voncurrent
verwendet, auf das nur in@Composable
-Funktionen zugegriffen werden kann. (Iadbc0)
API-Änderungen
- Neu erstellte Statusobjekte sind über andere Snapshots, einschließlich des globalen Snapshots, sofort mit ihrem Anfangszustand zugänglich. Nachfolgende Änderungen sind erst sichtbar, wenn der Snapshot angewendet wird, in dem das Objekt erstellt wurde.
- Der Anfangszustand von
mutableStateOf()
sowie deren primitive Versionen sind der Wert, der als Parameter anmutableStateOf()
übergeben wird. Der Anfangszustand vonmutableStateListOf()
undmutableStateMapOf()
ist leer. Snapshot.isInSnapshot
undSnapshot.PreexistingSnapshotId
wurden hinzugefügt, um zu ermöglichen, dass ein Statusobjekt sofort aus dem globalen Snapshot nach seiner Erstellung zugänglich ist.- Benutzerdefinierte Statusobjekte können den sofortigen Zugriff unterstützen, indem dem Muster der Änderungen an den integrierten Snapshot-Objekten gefolgt wird. (I84a17)
Fehlerkorrekturen
- Das Zusammenführen von
readObserver
in verschachtelten Snapshots wurde behoben. Dies hat dazu geführt, dass verschachtelte abgeleitete Zustände bei Verwendung innerhalb einersnapshotFlow
zu wenig entwertet wurden. (Idf138)
Version 1.7.0-alpha06
3. April 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha06
wurde veröffentlicht. Version 1.7.0-alpha06 enthält diese Commits.
Fehlerkorrekturen
- Zur Korrektur bereitstellen Sie einzelne Werte für die Verarbeitung von
providesDefault
(538f45) - Deadlocks beim Zugriff auf die Frame-Clock von Recomposer vermeiden (07e5c6)
Version 1.7.0-alpha05
20. März 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha05
wurde veröffentlicht. Version 1.7.0-alpha05 enthält diese Commits.
Fehlerkorrekturen
- Verspätete Änderungen an deaktivierter Komposition löschen (5950bc)
Version 1.7.0-alpha04
6. März 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha04
wurde veröffentlicht. Version 1.7.0-alpha04 enthält diese Commits.
Leistungsverbesserungen
Snapshot.current
einmal pro Auswertung des abgeleiteten Zustands aufrufen (ee7daf)currentRecord
einmal pro Beobachtung in der Zusammensetzung lesen (b882b2)- Versehentliche Iterator-Zuweisung in
snapshotFlow
entfernen (231e56) - Aktivieren Sie
nonSkippingGroupOptimization
für Erstellungsbibliotheken. Dadurch wird der generierte Code für alle nicht neustartbaren zusammensetzbaren Funktionen in androidx effizienter. Wir planen, diese Funktion in Zukunft standardmäßig zu aktivieren. I(acbc08)
Version 1.7.0-alpha03
21. Februar 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha03
wurde veröffentlicht. Version 1.7.0-alpha03 enthält diese Commits.
API-Änderungen
- Führen Sie eine Ersetzungsgruppe ein, um die Erkennung von Änderungen zu verbessern (0941b5).
Leistungsverbesserungen
- Arbeitsspeicherzuweisung beim Erkennen von Änderungen verbessern (53e7fd)
- Speicherleck im Composer beheben (0e097d)
- Entwertungen bei der Neuzusammensetzung mit
ScopeMap
übergeben (e19a7e) - Entwertungen optimieren, um nur abgeleitete Zustände beizubehalten (f11c44)
IdentityArraySet
-Nutzungen durchScatterSet
ersetzen (db572e)removeScope
inScopeMap
optimieren (bb0530)
Version 1.7.0-alpha02
7. Februar 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha02
wurde veröffentlicht. Version 1.7.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Zusammensetzbare Lambdas in Unterzusammensetzungen im selben Frame entwerten. (98301c)
- Rufe den
onRelease
-Callback in der gleichen Reihenfolge wieonForgotten
auf. (2cd790) - Filtert nach geänderten Status, die in
snapshotFlow
nicht berücksichtigt werden. (796b80)
Leistungsverbesserungen
- Snapshot-Beobachter ändern, wenn er bereits transparent ist. (f60f30)
SnapshotIdSet.lowest()
optimieren (7ae149)fold()
ohne Zuweisung inSnapshotIdSet
verwenden. (532b7d)- Iteratorzuweisung entfernen (83f96b)
Version 1.7.0-alpha01
24. Januar 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha01
wurde veröffentlicht. Version 1.7.0-alpha01 enthält diese Commits.
Leistungsoptimierungen
- Möglichkeit zum Erstellen von Anzeigenflächen hinzufügen, nachdem eine untergeordnete Gruppe hinzugefügt wurde (b5960c)
- Aufnahmeänderungen des Snapshot-Status optimieren (28c3fe)
- Modus für starkes Überspringen aktivieren (ed1766)
Fehlerkorrekturen
- Standardparameter-Meta in systeminternem Erinnerung (096665) berücksichtigen
- Machen Sie
currentCompoundHashKey
in mehr Fällen eindeutig (d4a872) - Gruppen beim Beenden des Inline-Funktionsaufrufs realisieren (2a90fc)
Version 1.6
Version 1.6.8
12. Juni 2024
androidx.compose.runtime:runtime-*:1.6.8
wurde veröffentlicht. Version 1.6.8 enthält diese Commits.
Version 1.6.7
1. Mai 2024
androidx.compose.runtime:runtime-*:1.6.7
wurde veröffentlicht. Version 1.6.7 enthält diese Commits.
Version 1.6.6
17. April 2024
androidx.compose.runtime:runtime-*:1.6.6
wurde veröffentlicht. Keine Änderungen seit dem letzten Release.
Version 1.6.5
3. April 2024
androidx.compose.runtime:runtime-*:1.6.5
wurde veröffentlicht. Version 1.6.5 enthält diese Commits.
Version 1.6.4
20. März 2024
androidx.compose.runtime:runtime-*:1.6.4
wurde veröffentlicht. Version 1.6.4 enthält diese Commits.
Version 1.6.3
6. März 2024
androidx.compose.runtime:runtime-*:1.6.3
wurde veröffentlicht. Version 1.6.3 enthält diese Commits.
Version 1.6.2
21. Februar 2024
androidx.compose.runtime:runtime-*:1.6.2
wurde veröffentlicht. Version 1.6.2 enthält diese Commits.
Version 1.6.1
7. Februar 2024
androidx.compose.runtime:runtime-*:1.6.1
wurde veröffentlicht. Version 1.6.1 enthält diese Commits.
Fehlerkorrekturen
- Rufe den
onRelease
-Callback in der gleichen Reihenfolge wieonForgotten
auf. (2cd790) - Filtert nach geänderten Status, die in
snapshotFlow
nicht berücksichtigt werden. (796b80)
Version 1.6.0
24. Januar 2024
androidx.compose.runtime:runtime-*:1.6.0
wurde veröffentlicht. Version 1.6.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.5.0
Neue Funktionen
- Ausnahmen noch einmal auslösen, die während der Neuzusammensetzungsschleife verschluckt wurden (4dff9a)
Leistungsoptimierungen
- Aufnahmeänderungen des Snapshot-Status optimieren (28c3fe)
rememberSaveable
optimieren (f01d79)- Das erneute Lesen abgeleiteter Status verzögern, bis Änderungen aufgezeichnet werden (f38099)
- Bereitstellung lokaler Werte für die Komposition verbessern (a337ea)
Fehlerkorrekturen
- Speicherleck in der Slottabelle beheben (73fcfe)
- Neuzusammensetzung der zu entfernenden Unterzusammensetzungen überspringen. (Ieeb99, b/254645321)
RememberObserver
-Lebenszyklen nur dann auslösen, wenn sie in der Erinnerungsberechnung gespeichert werden. (f6b4dc)$dirty
-Erfassung auf Inline-Lambdas beschränken. acfca0- Bewegliche Inhalte korrigieren, bei denen manchmal falsche Kompositionen angezeigt werden (035cd6)
Version 1.6.0-rc01
10. Januar 2024
androidx.compose.runtime:runtime-*:1.6.0-rc01
wurde veröffentlicht. Version 1.6.0-rc01 enthält diese Commits.
Version 1.6.0-beta03
13. Dezember 2023
androidx.compose.runtime:runtime-*:1.6.0-beta03
wurde veröffentlicht. Version 1.6.0-beta03 enthält diese Commits.
Version 1.6.0-beta02
29. November 2023
androidx.compose.runtime:runtime-*:1.6.0-beta02
wurde veröffentlicht. Version 1.6.0-beta02 enthält diese Commits.
Version 1.6.0-beta01
15. November 2023
androidx.compose.runtime:runtime-*:1.6.0-beta01
wurde veröffentlicht. Version 1.6.0-beta01 enthält diese Commits.
API-Änderungen
- Bestimmte Stabilitätswerte in Annotationen weitergeben (274a4c)
Fehlerkorrekturen
- Verwenden Sie eine referenzielle Richtlinie für den lokalen Geltungsbereich der Zusammensetzung im Kontext. (83361c)
- Beschränke die $dirty-Erfassung auf Inline-Lambdas. (acfca0)
- Bewegliche Inhalte korrigieren, bei denen manchmal falsche Kompositionen angezeigt werden (035cd6)
- Schnellere Hashmaps ohne Zuweisung in
RecomposeScopeImpl
verwenden. (d79494) ObjectIntMap
inDerivedState
verwenden. (21862e)- Verwenden Sie
IntRef
für intSnapshotThreadLocal
inDerivedState
. (04eaf4)
Version 1.6.0-alpha08
18. Oktober 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha08
wurde veröffentlicht. Version 1.6.0-alpha08 enthält diese Commits.
Fehlerkorrekturen
RememberObserver
-Lebenszyklen nur dann auslösen, wenn sie in der Erinnerungsberechnung gespeichert werden. (f6b4dc)- Zuordnungen bei der Sortierung von Entwertungslisten verbessern. (954d63)
- Verwenden Sie neue Karten ohne Zuordnung in
SnapshotStateObserver
. (4303ce) - Entwertungen löschen, wenn die Komposition deaktiviert ist. (e001be)
Version 1.6.0-alpha07
4. Oktober 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha07
wurde veröffentlicht. Version 1.6.0-alpha07 enthält diese Commits.
API-Änderungen
SnapshotStateList
ist jetzt alsRandomAccess
gekennzeichnet, damit die Direktindexierungsversion der Listenhelfer verwendet werden kann. (I5210c, b/219554654)
Version 1.6.0-alpha06
20. September 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha06
wurde veröffentlicht. Version 1.6.0-alpha06 enthält diese Commits.
Version 1.6.0-alpha05
6. September 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha05
wurde veröffentlicht. Version 1.6.0-alpha05 enthält diese Commits.
Version 1.6.0-alpha04
23. August 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha04
wurde veröffentlicht. Version 1.6.0-alpha04 enthält diese Commits.
Neue Funktionen
- Ausnahmen noch einmal auslösen, die während der Neuzusammensetzungsschleife verschluckt wurden (4dff9a)
API-Änderungen
- Es wurde eine Methode zum Deaktivieren von
ReusableComposition
hinzugefügt. Dabei werden Beobachtungen entfernt, aber Knoten beibehalten. Die deaktivierte Zusammensetzung kann durch Aufrufen vonsetContent
wieder aktiviert werden. (Ib7f31) ReusableComposition
-Schnittstelle zur Verwaltung des Lebenszyklus und der Wiederverwendung von Unterzusammensetzungen hinzugefügt. (I812d1, b/252846775)
Version 1.6.0-alpha03
9. August 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha03
wurde veröffentlicht. Version 1.6.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Neue
CompositionLocalProvider
-Optimierung korrigieren (3118e88) - Korrigieren Sie, wie Knoten für bewegliche Inhalte auseinandergenommen werden. (5e3d59b)
Version 1.6.0-alpha02
26. Juli 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha02
wurde veröffentlicht. Version 1.6.0-alpha02 enthält diese Commits.
Neue Funktionen und Leistungsverbesserungen
rememberSaveable
optimieren (f01d79)- Das erneute Lesen abgeleiteter Status verzögern, bis Änderungen aufgezeichnet werden (f38099)
- Bereitstellung lokaler Werte für die Komposition verbessern (a337ea)
SideEffect
ist als@ExplicitGroupsComposable
gekennzeichnet, damit keine Gruppe erstellt werden kann. (I74815)- Vergleich von lokalen Kompositionskarten bei der Wiederverwendung vermeiden (782071)
API-Änderungen
- Eine Überlastung im Sonderfall für
CompositionLocalProviders
wurde hinzugefügt. Damit wird der Aufwand vermieden, der zur schnelleren Bereitstellung mehrerer Werte verwendet wird, aber zu einem Mehraufwand bei der Bereitstellung eines einzelnen Werts. (I6d640, b/288169379)
Fehlerkorrekturen
- Speicherleck in der Slottabelle beheben (73fcfe)
- Behebung des Problems beim Wiederherstellen von
rememberSaveable
, wennstateSaver
null zurückgibt (90748c)
Version 1.6.0-alpha01
21. Juni 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha01
wurde veröffentlicht. Version 1.6.0-alpha01 enthält diese Commits.
Fehlerkorrekturen
- Neuzusammensetzung der zu entfernenden Unterzusammensetzungen überspringen. (Ieeb99, b/254645321)
- Weniger Zuweisungen beim Anwenden von Snapshots. (I65c09)
- Berechnen Sie
readableHash
inDerivedState
nicht, wenn der Snapshot nicht geändert wurde (68c565).
Version 1.5
Version 1.5.4
18. Oktober 2023
androidx.compose.runtime:runtime-*:1.5.4
wurde veröffentlicht. Version 1.5.4 enthält diese Commits.
Version 1.5.3
4. Oktober 2023
androidx.compose.runtime:runtime-*:1.5.3
wurde veröffentlicht. Version 1.5.3 enthält diese Commits.
Version 1.5.2
27. September 2023
androidx.compose.runtime:runtime-*:1.5.2
wurde veröffentlicht. Version 1.5.2 enthält diese Commits.
Version 1.5.1
6. September 2023
androidx.compose.runtime:runtime-*:1.5.1
wurde veröffentlicht. Version 1.5.1 enthält diese Commits.
Version 1.5.0
9. August 2023
androidx.compose.runtime:runtime-*:1.5.0
wurde veröffentlicht. Version 1.5.0 enthält diese Commits.
API-Änderungen
- Zuweisungen bei Neuzusammensetzung, Farbanimationen und
AndroidComposeView
wurden entfernt. (Ib2bfa) - Eine
@StateFactoryMarker
-Anmerkung wurde hinzugefügt, um Funktionen zu markieren, die Zustände erstellen und in einenremember
-Aufruf eingebunden werden müssen. (I64550) - Primitive Versionen von State und
MutableState
hinzufügen (fb3d89) Snapshot.isApplyObserverNotificationPending
hinzugefügt (I672a5)- Primitive Versionen der
State
API wurden hinzugefügt, mit denen Werte vom Typ „Int“, „Long“, „Float“ und „Double“ inState
-Objekten verfolgt werden können, ohne dass für Autoboxing Strafmaßnahmen anfallen. Verwenden Sie dafür die neuen Factory-MethodenmutableIntState(Int)
,mutableFloatStateOf(Float)
usw. (I48e43)
Fehlerkorrekturen
- Neuzusammensetzung der zu entfernenden Unterzusammensetzungen überspringen. (Ieeb99, b/254645321)
- Snapshot-Referenz in
ComposerImpl
nicht beibehalten (0206f7) - Komposition nicht zweimal anwenden (f5791b)
- Entwertung für nicht initialisierte abgeleitete Statuswerte sicherstellen (aa2a92)
- Rufe
onEndChanges
während der Entsorgung über die Komposition auf. (62cc8c) - Probleme beim Verschieben von Inhalten in eine Unterkomposition beheben (4beb41)
- Potenzielle Deadlocks beheben (c1a425 und 8edce0)
- Der für ein Android-Fenster erstellte Recomposer blockiert jetzt nur dann
withFrameNanos
-Aufrufe anstelle aller Kompositionen, wenn eine ON_STOP-Benachrichtigung eingeht. Das bedeutet, dass Fenster, die mit beendeten Aktivitäten verknüpft sind, bei Datenänderungen weiterhin neu zusammengesetzt werden, aber die Animationen oder andere Aufrufer vonwithFrameNanos
werden blockiert. (Id9e7f, b/240975572) - Führe Deaktivierungs-Callbacks für
LayoutNode
aus, bevor die Effekte entfernt werden 3784073 - Geänderte Flags für neu gestartete Lambdas ea81df9 korrigiert
- Fehler bei der Live-Bearbeitungsregression für zusammensetzbare Knoten mit Knoten 73fd4d8 beheben
- ON_STOP sollte die Übertragungen der Frame-Clocks anstelle der Komposition ae276f1 anhalten.
SnapshotStateObserver
-Bereiche für unveränderte abgeleitete Zustände 84d9b1c entwerten- Potenzielle Blockade beim Entfernen von Kompositionen beheben 28761fc
- Fehler beim Verschieben von Inhalten in eine Unterkomposition 92d4156 beheben
- Fehlerkorrektur für geänderte Flags für neu gestartete Lambdas (8a03e9)
- Führe Deaktivierungs-Callbacks für
LayoutNode
aus, bevor Effekte entfernt werden (8b0fa4) - Fehler in
endToMarker()
beim Beenden von Knotengruppen beheben. (d71d980) - Aktuelle
SlotWriter
-Gruppe zur Prüfung der Deaktivierung verwenden (a0b518b) - Entfernen Sie das
fill
-Element inSlotTable.moveSlotGapTo()
und schließen Sie es. (81f9935) - Fehlende Entwertungen beheben, während bewegliche Inhalte verschoben werden (1d7c024)
- Sofortige Deaktivierungen von verschobenen beweglichen Inhalten beheben (8676618)
Leistungsverbesserungen
- Berechnen Sie
readableHash
nicht inDerivedState
, wenn der Snapshot nicht geändert wurde. (307102) - Reduzierte Zuweisungen (I65c09, d7ea77, 727974 und 445808)
- Schnelle Stornierung des Editors mit der E-Mail-Adresse
CoroutineScopes
(a55362 und bd382f) - Datensätze von Zustandsobjekten mit nicht zugänglichen Statuseinträgen überschreiben (c986960)
- Composer mit dem richtigen Bereich bei der Erkennung von Gruppen verwenden (9a5e5b6)
IdentityArraySet
zum Speichern von Snapshot-Entwertungen verwenden (7f60cca)- Zuweisungen für Snapshot-Beobachtungen reduzieren (5bc535f)
Version 1.5.0-rc01
26. Juli 2023
androidx.compose.runtime:runtime-*:1.5.0-rc01
wurde veröffentlicht. Version 1.5.0-rc01 enthält diese Commits.
Fehlerkorrekturen
Das erneute Lesen abgeleiteter Status verzögern, bis Änderungen aufgezeichnet werden (f38099)
Es ist eine optionale Prüfung verfügbar, um zu empfehlen,
mutableStateOf()
-Aufrufe zu den entsprechenden speziellen Typen für Primitive zu migrieren. Die Lint-ID lautetAutoboxingStateCreation
. Bisher war diese Prüfung standardmäßig für alle Projekte aktiviert. Wenn Sie diese Warnung im Android Studio-Editor und in den Lint-Ausgaben Ihres Projekts sehen möchten, ändern Sie den Schweregrad von „Informativ“ zu „Warnung“ (oder höher). Deklarieren Sie dazuwarning "AutoboxingStateCreation"
in der Konfiguration Ihres Moduls „build.gradle“ oder „build.gradle.kts“ (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
Version 1.5.0-beta03
28. Juni 2023
androidx.compose.runtime:runtime-*:1.5.0-beta03
wurde veröffentlicht. Version 1.5.0-beta03 enthält diese Commits.
Fehlerkorrekturen
- Neuzusammensetzung der zu entfernenden Unterzusammensetzungen überspringen. (Ieeb99, b/254645321)
Version 1.5.0-beta02
7. Juni 2023
androidx.compose.runtime:runtime-*:1.5.0-beta02
wurde veröffentlicht. Version 1.5.0-beta02 enthält diese Commits.
Leistungsverbesserungen
- Berechnen Sie
readableHash
nicht inDerivedState
, wenn der Snapshot nicht geändert wurde. (307102)
Version 1.5.0-beta01
24. Mai 2023
androidx.compose.runtime:runtime-*:1.5.0-beta01
wurde veröffentlicht. Version 1.5.0-beta01 enthält diese Commits.
API-Änderungen
- Zuweisungen bei Neuzusammensetzung, Farbanimationen und
AndroidComposeView
(Ib2bfa) wurden entfernt. - Eine
@StateFactoryMarker
-Anmerkung wurde hinzugefügt, um Funktionen zu markieren, die Zustände erstellen und in einenremember
-Aufruf eingebunden werden müssen. (I64550) - Primitive Versionen von State und
MutableState
hinzufügen (fb3d89) Snapshot.isApplyObserverNotificationPending
hinzugefügt (I672a5)
Fehlerkorrekturen
- Reduzierte Zuweisungen (I65c09, d7ea77, 727974 und 445808)
- Snapshot-Referenz in
ComposerImpl
nicht beibehalten (0206f7) - Schnelle Stornierung des Editors mit der E-Mail-Adresse
CoroutineScopes
(a55362 und bd382f) - Komposition nicht zweimal anwenden (f5791b)
- Entwertung für nicht initialisierte abgeleitete Statuswerte sicherstellen (aa2a92)
- Rufe
onEndChanges
während der Entsorgung über die Komposition auf. (62cc8c) - Probleme beim Verschieben von Inhalten in eine Unterkomposition beheben (4beb41)
- Potenzielle Deadlocks beheben (c1a425
- ON_STOP sollte die Übertragungen der Frame-Uhr anstelle der Komposition anhalten (f4a2d1).
- Fehlerkorrektur für geänderte Flags für neu gestartete Lambdas (8a03e9)
- Führe Deaktivierungs-Callbacks für
LayoutNode
aus, bevor Effekte entfernt werden (8b0fa4)
Externer Beitrag
Snapshot.isApplyObserverNotificationPending
hinzugefügt (I672a5)
Version 1.5.0-alpha04
10. Mai 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha04
wurde veröffentlicht. Version 1.5.0-alpha04 enthält diese Commits.
API-Änderungen
- Primitive Versionen der
State
API wurden hinzugefügt, mit denen Werte vom Typ „Int“, „Long“, „Float“ und „Double“ inState
-Objekten verfolgt werden können, ohne dass für Autoboxing Strafmaßnahmen anfallen. Verwenden Sie dafür die neuen Factory-MethodenmutableIntState(Int)
,mutableFloatStateOf(Float)
usw. (I48e43)
Fehlerkorrekturen
Rufe
onEndChanges
während der Entsorgung über die Komposition auf. WährendComposition.dispose
entfernte Fokusknoten abonnierenonEndChanges
, um den Fokus zurückzusetzen.(03d4a47)Achten Sie darauf, dass nicht initialisierte abgeleitete Statuswerte entwertet werden. Jeder abgeleitete Status ist einer Liste seiner Abhängigkeiten in
SnapshotStateObserver
zugeordnet. Dies wird verwendet, um mit dem abgeleiteten Status verknüpfte Bereiche zu entwerten, wenn sich die Abhängigkeit ändert. Die Abhängigkeitsänderung wird beim Voranstellen des Snapshots registriert, der nach dem Lesen des abgeleiteten Status (aufgrund des Aufrufs vonSnapshot.notifyObjectsInitialized()
) auftreten kann.Die Beobachtungslogik des vorherigen abgeleiteten Zustands in
SnapshotStateObserver
hat alte Abhängigkeiten bereinigt und anschließend den neuen Wert gelesen. Dies führte zu einer Race-Bedingung mit Entwertung im Status „bereinigt“, bei der die Abhängigkeitsentwertung nicht registriert wurde.Durch diese Änderung werden der Lesevorgang des abgeleiteten Status und die Abhängigkeitsbereinigung neu angeordnet, damit die Entwertung immer in einem gültigen Status erfolgt. (c472be6)
Version 1.5.0-alpha03
19. April 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha03
wurde veröffentlicht. Version 1.5.0-alpha03 enthält diese Commits.
API-Änderungen
- Der für ein Android-Fenster erstellte Recomposer blockiert jetzt nur dann
withFrameNanos
-Aufrufe anstelle aller Kompositionen, wenn eine ON_STOP-Benachrichtigung eingeht. Das bedeutet, dass Fenster, die mit beendeten Aktivitäten verknüpft sind, bei Datenänderungen weiterhin neu zusammengesetzt werden, aber die Animationen oder andere Aufrufer vonwithFrameNanos
werden blockiert. (Id9e7f, b/240975572)
Fehlerkorrekturen
- Potenzielle Deadlocks in der Snapshot-Liste und Zuordnung 5c1a425 beheben
- Führe Deaktivierungs-Callbacks für
LayoutNode
aus, bevor die Effekte entfernt werden 3784073 - Geänderte Flags für neu gestartete Lambdas ea81df9 korrigiert
- Fehler bei der Live-Bearbeitungsregression für zusammensetzbare Knoten mit Knoten 73fd4d8 beheben
- ON_STOP sollte die Übertragungen der Frame-Clocks anstelle der Komposition ae276f1 anhalten.
SnapshotStateObserver
-Bereiche für unveränderte abgeleitete Zustände 84d9b1c entwerten- Potenzielle Blockade beim Entfernen von Kompositionen beheben 28761fc
- Fehler beim Verschieben von Inhalten in eine Unterkomposition 92d4156 beheben
Version 1.5.0-alpha02
5. April 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha02
wurde veröffentlicht. Version 1.5.0-alpha02 enthält diese Commits.
Neue Funktionen
- Der
getValue
-Operator von Kotlin kann jetzt zusammensetzbar sein (f174f6e).
Fehlerkorrekturen, Leistungsverbesserungen
- Datensätze von Zustandsobjekten mit nicht zugänglichen Statuseinträgen überschreiben (c986960)
- Composer mit dem richtigen Bereich bei der Erkennung von Gruppen verwenden (9a5e5b6)
- Fehler in
endToMarker()
beim Beenden von Knotengruppen beheben. (d71d980) - Aktuelle
SlotWriter
-Gruppe zur Prüfung der Deaktivierung verwenden (a0b518b) IdentityArraySet
zum Speichern von Snapshot-Entwertungen verwenden (7f60cca)- Entfernen Sie das
fill
-Element inSlotTable.moveSlotGapTo()
und schließen Sie es. (81f9935) - Fehlende Entwertungen beheben, während bewegliche Inhalte verschoben werden (1d7c024)
- Sofortige Deaktivierungen von verschobenen beweglichen Inhalten beheben (8676618)
- Zuweisungen für Snapshot-Beobachtungen reduzieren (5bc535f)
Version 1.5.0-alpha01
22. März 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha01
wurde veröffentlicht. Version 1.5.0-alpha01 enthält diese Commits.
Neue Funktionen
- Fügt
Modifier.Node#coroutineScope
hinzu, damitModifier.Nodes
gemeinsame Routinen starten kann (I76ef9) - Erlaube
Modifier.Nodes
,CompositionLocals
zu lesen, indem du dieCompositionLocalConsumerModifierNode
-Schnittstelle implementierst. (Ib44df)
Version 1.4
Version 1.4.3
3. Mai 2023
androidx.compose.runtime:runtime-*:1.4.3
wurde ohne Änderungen freigegeben.
Version 1.4.2
19. April 2023
androidx.compose.runtime:runtime-*:1.4.2
wurde veröffentlicht. Version 1.4.2 enthält diese Commits.
Fehlerkorrekturen
Potenzielle Deadlocks in der Snapshot-Liste und Zuordnung 2eb6570 beheben
Beim Hinzufügen von Inhalten zu einem
SnapshotStateList
oderSnapshotStateMap
kann es zu einem Deadlock kommen, wenn die Änderung gleichzeitig mit einem direkten Schreibvorgang in den Statuseintrag erfolgt. Dies ist bei den Änderungen durch 93fcae828b, die direkte Schreibvorgänge zur Freigabe nicht verwendeter Datensätze verwenden, deutlich höher.Die Sperren sind jetzt so angeordnet, dass nie versucht wird, eine Snapshot-Sperre zu erstellen, wenn eine Karten- oder Listensperre aktiv ist.
Version 1.4.1
5. April 2023
androidx.compose.runtime:runtime-*:1.4.1
wurde veröffentlicht. Version 1.4.1 enthält diese Commits.
Fehlerkorrekturen
- Fehler in
endToMarker()
beim Beenden von Knotengruppen beheben. d71d980
Version 1.4.0
22. März 2023
androidx.compose.runtime:runtime-*:1.4.0
wurde veröffentlicht. Version 1.4.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.3.0
- Initialisierten Wert aus
LiveData
für die erste Zusammensetzung 3680e25 verwenden - Fügen Sie
ComposeNodeLifecycleCallback
hinzu, um den Lebenszyklus von Zusammensetzungsknoten zu beobachten. 8b6a258 - Property
parameterTypes
zuComposableMethod
7b6c7ad hinzufügen
Fehlerkorrekturen und Leistungsverbesserungen
- Beide Bereichsindexe in
SnapshotStateObserver
29f4a3e löschen - Im Text von nicht überspringbaren Lambdas benötigte Gruppen hinzufügen 7d06752
- Arbeitsspeicherreferenzmerkmale des Snapshot-Status verbessern 93fcae8
- Boxing in lokalen Lookups für Kompositionen 0875717 entfernen
- Richtigen Schlüssel für nicht wiederverwendbare Knotengruppen verwenden 6388d8d
SnapshotStateObserver
vor rekursiven und gleichzeitigen Anwendung von 98cb6ba schützen- Überprüfung der Indexgrenzen in
IdentityArraySet
in "get" hinzugefügt 35a77d3-Methode - Editormodul aktualisieren, um
ViewTreeLifecycleOwner
-Erweiterungen zu verwenden 21c2122 - App-Benachrichtigungen senden, nachdem Recomposer den Frame beendet hat. 98f2641
- Absturz des Index außerhalb des gültigen Bereichs beim Abbrechen von Recomposer 8f8656f behoben
- Neuzusammensetzung immer erzwingen, wenn der übergeordnete Anbieter von Kompositionen 9526fcc geändert hat
- Recomposer-Toleranz für abgebrochene Jobs a55f7ed
- Umgang mit Entwertungen für eine große Anzahl von Komponisten verbessern 9b7ed67
- Fehler beim Generieren schließender Gruppen für nicht lokale Rückgaben b6f590c behoben
Version 1.4.0-rc01
8. März 2023
androidx.compose.runtime:runtime-*:1.4.0-rc01
wurde veröffentlicht. Version 1.4.0-rc01 enthält diese Commits.
Fehlerkorrekturen
Version 1.4.0-beta02
22. Februar 2023
androidx.compose.runtime:runtime:1.4.0-beta02
und androidx.compose.runtime:runtime-saveable:1.4.0-beta02
wurden veröffentlicht. Version 1.4.0-beta02 enthält diese Commits.
Version 1.4.0-beta01
8. Februar 2023
androidx.compose.runtime:runtime-*:1.4.0-beta01
wurde veröffentlicht. Version 1.4.0-beta01 enthält diese Commits.
API-Änderungen
ComposeNodeLifecycleCallback
wurde hinzugefügt, um den Lebenszyklus von Compose-Knoten zu beobachten (I3731b)@TestOnly
wurde zuComposer.disableSourceInformation()
hinzugefügt, da der Aufruf dieser Funktion nur in einem Test sicher ist. (I896c8)
Fehlerkorrekturen
- Boxing in lokalen Lookups für Kompositionen entfernen (62f66a)
- Speicherreferenzmerkmale des Snapshot-Status verbessern (dfb451)
Version 1.4.0-alpha05
25. Januar 2023
androidx.compose.runtime:runtime:1.4.0-alpha05
und androidx.compose.runtime:runtime-saveable:1.4.0-alpha05
wurden veröffentlicht. Version 1.4.0-alpha05 enthält diese Commits.
API-Änderungen
- Mehr Typen/Null-Zulässigkeit von Inline-/eingestellten/verborgenen Funktionen (I24f91)
Version 1.4.0-alpha04
11. Januar 2023
androidx.compose.runtime:runtime-*:1.4.0-alpha04
wurde veröffentlicht. Version 1.4.0-alpha04 enthält diese Commits.
API-Änderungen
TestMonotonicFrameClock
verwendet jetzt die korrekte experimentelle Anmerkung. (I95c9e)
Fehlerkorrekturen
SnapshotStateObserver
vor rekursiven und gleichzeitigen Anwendung schützen (d902fb)
Version 1.4.0-alpha03
7. Dezember 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha03
wurde veröffentlicht. Version 1.4.0-alpha03 enthält diese Commits.
API-Änderungen
- Hinzufügen einer neuen öffentlichen Methode zur Klasse
ComposableMethod
analog zujava.lang.reflect.Method#getParameterTypes()
(Iab0c3)
Fehlerkorrekturen
- Benachrichtigungen zum Anwenden von Snapshots werden jetzt gesendet, nachdem
Recomposer
die Änderungen angewendet hat. (Iad6c0, b/222093277)
Version 1.4.0-alpha02
9. November 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha02
wurde veröffentlicht. Version 1.4.0-alpha02 enthält diese Commits.
Version 1.4.0-alpha01
24. Oktober 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha01
wurde veröffentlicht. Version 1.4.0-alpha01 enthält diese Commits.
API-Änderungen
- In
SnapshotStateList
undSnapshotStateMap
wurdentoList()
undtoMap()
jetzt respektvoll implementiert. Bei diesen Methoden wird der aktuelle Inhalt ohne Kopie zurückgegeben, da sie die internen unveränderlichen Daten zurückgeben, die zum Speichern des Inhalts verwendet wurden. Dieser Wert kann beispielsweise verwendet werden, um einen Wertefluss mitsnapshotFlow
zu erstellen, ohne dass die Daten kopiert werden müssen. (Ica2bd)
Version 1.3
Version 1.3.3
11. Januar 2023
androidx.compose.runtime:runtime-*:1.3.3
wurde veröffentlicht. Version 1.3.3 enthält diese Commits.
- Keine Änderungen seit Version 1.3.2
Version 1.3.2
7. Dezember 2022
androidx.compose.runtime:runtime-*:1.3.2
wurde veröffentlicht. Version 1.3.2 enthält diese Commits.
Fehlerkorrekturen
- Aktualisiert, um androidx.compose.ui 1.3.2 zu unterstützen
Version 1.3.1
9. November 2022
androidx.compose.runtime:runtime-*:1.3.1
wurde veröffentlicht. Version 1.3.1 enthält diese Commits.
Version 1.3.0
24. Oktober 2022
androidx.compose.runtime:runtime-*:1.3.0
wurde veröffentlicht. Version 1.3.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.2.0
Ausnahmebehandlung / Support bei Live-Bearbeitung
- Zur besseren Unterstützung der Live-Bearbeitung wurden APIs hinzugefügt, um die Verarbeitung von Ausnahmen während der Erstellung zu ermöglichen.
- Kompositionsfehlerbehandlung beim Hot Refresh
- Fehler bei der Live-Bearbeitung beim Speichern/Wiederherstellen beheben
Nachverfolgen von Kompositionen
- Es wurden Laufzeit-Tracing-APIs hinzugefügt, um neue Tools zum Nachzeichnen von Kompositionen zu unterstützen
- Start-/Endaufrufe für zusammensetzbare Trace-Ereignisse generieren
- ComposeKt.traceEventStart(Int, String) wieder hinzugefügt
Zusammensetzbare Reflexions-APIs
- Eine neue
ComposableMethod
API wurde hinzugefügt, um zuverlässigere reflexionsbasierte Aufrufe zusammensetzbarer APIs zu ermöglichen. - callComposable verschieben, um die Laufzeit zu erstellen
- Rework API zum Aufrufen der zusammensetzbaren Methode
Laufzeitkorrekturen
- Fehlerhaften Bereichstest bei der Prüfung der Slot-Tabelle auf Markierungen behoben
- Verschieben von beweglichen Inhalten in und aus SubcomposeLayout zulassen
- Probleme beim Verschieben von Inhalten zu neuen Inhalten einer Unterkomposition beheben
Snapshot-System
- Das Snapshot-System wurde im Hinblick auf Arbeitsspeicherverwaltung, Leistung und Richtigkeit verbessert.
- Entfernen des Bereichs in SnapshotStateObserver optimieren
- Verschachtelte Snapshots löschen, die aus transparenten Snapshots erstellt wurden
- Feste Race-Bedingung beim Lesen des Status aus dem globalen Snapshot
- Unterstützung von DerivedState in SnapshotStateObserver
- Entfernen des abgeleiteten Status aus der Zusammensetzung verhindern, wenn er in anderen Bereichen gelesen wird
- IdentityArrayMap anstelle von HashMap in DerivedState verwenden
- Beobachten des abgeleiteten Zustands zur Verwendung eines änderbaren Vektors aktualisieren
- SnapshotStateObserver-Statusbereinigung aktualisieren
- SnapshotStateObserver.invalidated durch ArraySet ersetzen
- Feste Race-Bedingung beim Lesen des Status aus dem globalen Snapshot
- Fehler bei der Verwendung eines veralteten Eintrags bei der Berechnung des DerivedState-Hashs beheben
- Race-Bedingung beim Voranstellen des globalen Snapshots korrigieren
- Beschleunigen der Bereinigung von Bereichsbeobachtungen in SnapshotStateObserver
Version 1.3.0-rc01
5. Oktober 2022
androidx.compose.runtime:runtime-*:1.3.0-rc01
wurde veröffentlicht. Version 1.3.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Korrigiertes
ArrayIndexOutOfBoundsException
aus der Slot-Tabelle (b/249076084)
Version 1.3.0-beta03
21. September 2022
androidx.compose.runtime:runtime-*:1.3.0-beta03
wurde veröffentlicht. Version 1.3.0-beta03 enthält diese Commits.
Wichtige Änderungen des Verhaltens
- Der Parameter von
remember
undrememberCoroutineScope
wurde incrossinline
geändert. Dadurch wird ein Fehler für vorzeitige Rückgaben gemeldet, anstatt eine vorzeitige Rückgabe zuzulassen, die dazu führt, dass ein späterer interner Fehler gemeldet wird. - Diese Änderung kann möglicherweise dazu führen, dass neue Compiler-Fehler gemeldet werden. In diesem Fall müssen nicht lokale Rückgaben aus den Lambdas entfernt werden, die an diese Funktionen übergeben werden. (Ibea62)
Version 1.3.0-beta02
7. September 2022
androidx.compose.runtime:runtime-*:1.3.0-beta02
wurde veröffentlicht. Version 1.3.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Aktualisierte API (I64ca0)
Version 1.3.0-beta01
24. August 2022
androidx.compose.runtime:runtime-*:1.3.0-beta01
wurde veröffentlicht. Version 1.3.0-beta01 enthält diese Commits.
API-Änderungen
CompositionData
wurde einefind
-Methode hinzugefügt, damit Entwicklertools, die diese API verwenden, schnell eine Untergruppe von Kompositionen anhand ihrer Identität finden können. (I5794f)
Version 1.3.0-alpha03
10. August 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha03
wurde veröffentlicht. Version 1.3.0-alpha03 enthält diese Commits.
Version 1.3.0-alpha02
27. Juli 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha02
wurde veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.
API-Änderungen
ComposerKt.traceEventStart(Int, String)
wurde zur Abwärtskompatibilität wieder hinzugefügt (I6e6de)
Version 1.3.0-alpha01
29. Juni 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha01
wurde veröffentlicht. Version 1.3.0-alpha01 enthält diese Commits.
API-Änderungen
- Dienstprogrammfunktionen zur Laufzeit verschieben (I4f729)
Version 1.2
Version 1.2.1
10. August 2022
androidx.compose.runtime:runtime-*:1.2.1
wurde veröffentlicht. Version 1.2.1 enthält diese Commits.
Fehlerkorrekturen
- Speicherleck behoben: verschachtelte Snapshots, die aus transparenten Snapshots erstellt wurden, entfernen b/239603305
Version 1.2.0
27. Juli 2022
androidx.compose.runtime:runtime-*:1.2.0
wurde veröffentlicht. Version 1.2.0 enthält diese Commits.
Wichtige Änderungen seit dem 1.1.0
Compose Runtime enthielt eine Handvoll Funktionen, die mit 1.2.0 eingeführt wurden, sowie viele stabilisierende Fehlerkorrekturen. Die wichtigste neue Funktion war die Einführung der
movableContentOf
API, mit der komplexe UX-Funktionen wie der Übergang von gemeinsam genutzten Elementen möglich sind. DiemovableContentOf
API konvertiert eine zusammensetzbare Lambda-Funktion in eine Lambda-Funktion, die den Status und entsprechende Knoten an einen beliebigen neuen Speicherort verschiebt, der aufgerufen wird. Wenn der vorherige Aufruf die Zusammensetzung verlässt, wird der Status vorübergehend beibehalten. Wenn ein neuer Aufruf der Lambda-Funktion in die Zusammensetzung eintritt, werden der Status und die zugehörigen Knoten an den Speicherort des neuen Aufrufs verschoben. Wenn kein neuer Aufruf hinzugefügt wird, wird der Status dauerhaft entfernt und denken Sie daran, dass Beobachter benachrichtigt werden.Wenn ein
movableContentOf
-Lambda mehrmals in derselben Zusammensetzung aufgerufen wird, werden für jeden Aufruf ein neuer Status und neue Knoten erstellt. Wenn Aufrufe die Zusammensetzung verlassen und neue Aufrufe eintreten, wird der Status in der Reihenfolge, in der sie aufgerufen werden, von den ersten verlassenden Aufrufen zu den Eingabeaufrufen verschoben. Jeder Status, der bei neuen Anrufen nicht beansprucht wird, wird dauerhaft entfernt.Zusätzlich zu diesen und einigen anderen neuen Funktionen wurde viel Zeit für die Stabilisierung des Laufzeit- und Snapshot-Statussystem aufgewendet. Verschiedene Speicherlecks wurden beseitigt und Codepfade optimiert.
Im Folgenden finden Sie eine Zusammenfassung der Änderungen:
Neue Funktionen in 1.2
- Experimentellen Snapshot hinzufügen (unsichere Eingabe/Verlassen)
- Experimentelle API "Snapshot.asContextElement" hinzufügen
- Vorstellung von Snapshot.withoutReadObservation
- Verschieben des Status innerhalb einer Komposition zulassen
- Nachverfolgen von Neuzusammensetzungen in Compose
Leistung im 1.2
- Lokale Leistung der Zusammensetzung verbessern
- Referenzprofile für das Zusammenstellen sollten aus Benchmarks abgeleitet werden
Fehlerkorrekturen in 1.2
- Tracking-Informationen aus Bereichen für die Neuzusammensetzung von Releases entfernen
- Entfernen des abgeleiteten Status aus der Zusammensetzung verhindern, wenn er in anderen Bereichen gelesen wird
- Effizienteres removeScope() in SnapshotStateObserver verwenden
- Abhängigkeiten von abgeleiteten Status bei der Zusammensetzung bereinigen
- Änderung von currentCompositeKeyHash nach innerer Neuzusammensetzung in beweglichen Inhalten beheben
- Ungültige Kompositionen bei der Entsorgung bereinigen
- Ableitungsstatus bei der Neuzusammensetzung lesen
- Speicherleck bei der Beobachtung abgeleiteter Statusobjekte beheben
- Konsistenter zusammengesetzter movableContent-Hash-Schlüssel
- Behebung eines Falles, bei dem der Komponist abstürzt
- Die erzwungene Entwertung einer Gruppe erzwingt die Neuzusammensetzung
- Fehler beheben, bei dem „memorySaveable“ mit Eingabe in der falschen Reihenfolge wiederhergestellt wurde
Version 1.2.0-rc03
29. Juni 2022
androidx.compose.runtime:runtime-*:1.2.0-rc03
wurde veröffentlicht. Version 1.2.0-rc03 enthält diese Commits.
Fehlerkorrekturen
- Abgeleitete Zustandsbeobachtungen wurden zuvor bedingungslos aus dem Bereich „Neuzusammensetzen“ und „Zusammensetzung“ entfernt. Dadurch wurden andere Bereiche aufgelöst, die möglicherweise noch den abgeleiteten Zustand beobachten. Durch diese Änderung werden Instanzen des abgeleiteten Status nur entfernt, wenn sie von anderen Bereichen nicht mehr beobachtet werden. (b/236618362)
Version 1.2.0-rc02
22. Juni 2022
androidx.compose.runtime:runtime-*:1.2.0-rc02
wurde veröffentlicht. Version 1.2.0-rc02 enthält diese Commits.
Version 1.2.0-rc01
15. Juni 2022
androidx.compose.runtime:runtime-*:1.2.0-rc01
wurde veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.
API-Änderungen
- Schnittstellen in Erstellungsbibliotheken werden jetzt mit jdk8-Standardschnittstellenmethoden erstellt (I5bcf1).
Version 1.2.0-beta03
1. Juni 2022
androidx.compose.runtime:runtime-*:1.2.0-beta03
wurde veröffentlicht. Version 1.2.0-beta03 enthält diese Commits.
Version 1.2.0-beta02
18. Mai 2022
androidx.compose.runtime:runtime-*:1.2.0-beta02
wurde veröffentlicht. Version 1.2.0-beta02 enthält diese Commits.
Version 1.2.0-beta01
11. Mai 2022
androidx.compose.runtime:runtime-*:1.2.0-beta01
wurde veröffentlicht. Version 1.2.0-beta01 enthält diese Commits.
Neue Funktionen
- Dies ist die erste Betaversion von Version 1.2.
API-Änderungen
- Experimentelles
Snapshot.unsafeEnter/unsafeLeave
hinzugefügt (I108f3) - Experimentelle
Snapshot.asContextElement()
API hinzugefügt (Iff072) - Die Annotation
@ComposableTarget
und die mit@ComposableTargetMarker
gekennzeichneten Annotationen können jetzt im Dateibereich mit dem Präfix@file
verwendet werden. Bei Verwendung einer Zielannotation auf Dateiebene geht der Compiler davon aus, dass alle zusammensetzbaren Funktionen in der Datei auf den zugehörigen Applier ausgerichtet sein sollen. Mit@file:UiComposable
wird beispielsweise deklariert, dass alle@Composable
-Funktionen auf den Anwender der Benutzeroberfläche zum Erstellen ausgerichtet sind. Eine Funktion, die auf einen anderen Applier ausgerichtet ist, muss die Zielmarkierungsannotation für den gewünschten Applier explizit bereitstellen. (I40804)
Version 1.2.0-alpha08
20. April 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha08
wurde veröffentlicht. Version 1.2.0-alpha08 enthält diese Commits.
API-Änderungen
TracingInProgress
wurde derCompositionTracer
-Oberfläche hinzugefügt. (Ic6f12)recomposeScopeIdentity
zu Composer hinzufügen (I0c873)- APIs für das Tracing (Composer.setTracer) eingeschränkt auf
OptIn(InternalComposeTracingApi)
(I9187f) ResuableContentHost
wurde hinzugefügt, um eine bessere Kontrolle über die Lebensdauer des Status für wiederverwendbare Inhalte zu erhalten. Wenn beispielsweise eine Unterkomposition vorübergehend nicht verwendet wird, kann der Inhalt deaktiviert werden, sodass alle Elemente, an die sich die Komposition gehört, vergessen werden. Dadurch werden beispielsweise alle Einwegeffekte ausgelöst. (I2c0f2, b/220322704)
Version 1.2.0-alpha07
6. April 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha07
wurde veröffentlicht. Version 1.2.0-alpha07 enthält diese Commits.
API-Änderungen
- Die neue Funktion
Snapshot.withoutReadObservation { ... }
wurde hinzugefügt. Damit können Nutzer die übergebene Lambda-Funktion ausführen, ohne die Änderungen der Statuswerte zu abonnieren, die während dieses Blocks gelesen werden. Dies kann in Anwendungsfällen nützlich sein, wenn Sie von den Snapshot-basierten Thread-sicheren Schreibvorgängen/Lesevorgängen profitieren möchten, aber den Wert lesen möchten, ohne eine unnötige Neuzusammensetzung oder erneute Messung zu verursachen. (I9f365, b/214054486)
Version 1.2.0-alpha06
23. März 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha06
wurde veröffentlicht. Version 1.2.0-alpha06 enthält diese Commits.
Version 1.2.0-alpha05
9. März 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha05
wurde veröffentlicht. Version 1.2.0-alpha05 enthält diese Commits.
Externer Beitrag
- Aktualisiert für die Verwendung der Kotlinx-Koroutinen 1.6.0 (I3366d)
Version 1.2.0-alpha04
23. Februar 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha04
wurde veröffentlicht. Version 1.2.0-alpha04 enthält diese Commits.
API-Änderungen
ComposableTarget
,ComposableTargetMarker
undComposableOpenTarget
, mit dem in Berichten zur Kompilierungszeit angegeben wird, Eine zusammensetzbare Funktion wird als Targeting auf eine Anwendung bezeichnet, auf die sie nicht entwickelt wurden.In den meisten Fällen können die Anmerkungen aus dem Editor Compiler-Plug-in. Die direkte Verwendung dieser Annotationen selten . Zu den Fällen, die nicht abgeleitet werden können, gehören das Erstellen und abstrakte zusammensetzbare Funktionen (z. B. -Schnittstellenmethoden), Felder oder globale Variablen, zusammensetzbare Lambdas (lokale Variablen und Parameter werden abgeleitet), oder wenn Sie
ComposeNode
oder ähnliche zusammensetzbare Funktionen verwenden.Für benutzerdefinierte Anwendungen sind die zusammensetzbaren Funktionen, die Für
ComposeNode
oderReusableComposeNode
muss Folgendes hinzugefügt werden:CompoableTarget
-Annotation für die Funktion und alle zusammensetzbaren Lambda-Parametertypen. Es wird jedoch empfohlen, um eine Anmerkung zu erstellen, die mitComposableTargetMarker
und dann die markierte Anmerkung werden verwendet. statt direktComposableTarget
. Eine zusammensetzbare Anmerkung mitComposableTargetMarker
gekennzeichnet ist, entsprichtComposbleTarget
durch den voll qualifizierten Namen des Attributs als Anwendungsparameter. Ein Beispiel für die Verwendung vonComposableTargetMarker
sieheanroidx.compose.ui.UiComposable
. (I38f11)
Version 1.2.0-alpha03
9. Februar 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha03
wurde veröffentlicht. Version 1.2.0-alpha03 enthält diese Commits.
API-Änderungen
movableContentOf
wurde hinzugefügt, um eine zusammensetzbare Funktion zu konvertieren Lambda in eine Lambda-Funktion, die den Status und die entsprechenden Knoten ändert. an jedem neuen Ort, an dem es aufgerufen wird. Wenn der vorherige Anruf beendet wird Die Zusammensetzung wird vorübergehend bewahrt. Wenn ein neuer Aufruf erfolgt, in die Zusammensetzung, dann in den Zustand -Knoten an den Standort des neuen Aufrufs verschoben werden. Wenn kein neuer Anruf wurde der Status dauerhaft entfernt. Beachten Sie, dass Beobachter benachrichtigt.Wenn ein
movableContentOf
-Lambda mehrmals im selben Zusammensetzung, neuer Status und Knoten werden für jeden Aufruf erstellt. Anrufe verlassen die Zusammensetzung und neue Anrufe gehen ein. Der Status wird von den ersten Aufrufen bis zu den eingehenden Aufrufen in der Reihenfolge, aufgerufen werden. Alle Status, die nicht von neuen Anrufen beansprucht werden, werden entfernt dauerhaft. (Ib4850)Der Komposition wurde eine Tracing-API hinzugefügt, damit Tools ermöglichen eine detailliertere Nachverfolgung zusammensetzbarer Funktionen. Der Compiler generiert nun Aufrufe an die Tracing API, die Informationen. (Ib0eb5)
So entfernen Sie diese Aufrufe und die zugehörige Quelle: Informationen aus einem Release-Build hinzugefügt haben, fügen Sie die folgende Proguard-Regel hinzu:
-assumenosideeffects public class androidx.compose.runtime.ComposerKt { boolean isTraceInProgress(); void traceEventStart(int,java.lang.String); void traceEventEnd(); }
Fügen Sie
InternalComposeScope
hinzu, damit Tools um eine zusammensetzbare Funktion zu identifizieren. (I07a3f)
Version 1.2.0-alpha02
26. Januar 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha02
wurde veröffentlicht. Version 1.2.0-alpha02 enthält diese Commits.
Version 1.2.0-alpha01
12. Januar 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha01
wurde veröffentlicht. Version 1.2.0-alpha01 enthält diese Commits.
API-Änderungen
- Feld
identity
zum Generieren vonCompositionData
hinzugefügt im Layout Inspector an. (IC116e)
Aktualisierung der Abhängigkeiten
- Jetzt abhängig von Kotlin-
1.6.10
.
Version 1.1
Version 1.1.1
23. Februar 2022
androidx.compose.runtime:runtime-*:1.1.1
wurde veröffentlicht. Version 1.1.1 enthält diese Commits.
Fehlerkorrekturen
- Problem mit
NullPointerException
unterandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
beheben (aosp/1947059, b/206677462) - Absturz behoben, der durch Inhalte in der Zwischenablage beim Lesen von die Zwischenablage auf Android-Geräten. (I06020, b/197769306)
- RTL-Fehler in
LazyVerticalGrid
behoben (aosp/1931080, b/207510535)
Version 1.1.0
9. Februar 2022
androidx.compose.runtime:runtime-*:1.1.0
wurde veröffentlicht. Version 1.1.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.0.0
- Stabile Unterstützung für den Overscroll-Effekt von Android 12
- Verbesserungen bei der Größe von Berührungszielbereichen
- In Bezug auf Compose 1.0 wird der Layoutbereich von Material-Komponenten so erweitert, dass sie den Richtlinien für Bedienungshilfen von Material für die Größe des Berührungszielbereichs entsprechen. Das Berührungsziel der Schaltfläche wird beispielsweise auf eine Mindestgröße von
48x48dp
erweitert, auch wenn Sie die Größe der Schaltfläche entsprechend verringern. Dadurch wird das Material Design auf das gleiche Verhalten wie die Material Design-Komponenten abgestimmt, was ein einheitliches Verhalten ermöglicht, wenn du „View“ und „Compose“ mischst. Durch diese Änderung wird außerdem sichergestellt, dass beim Erstellen der Benutzeroberfläche mit „Material erstellen“-Komponenten die Mindestanforderungen für die Barrierefreiheit auf Berührungszielbereichen erfüllt sind. - Stabile Unterstützung für Navigation Rail
- Umstellung einer Reihe zuvor experimenteller APIs auf stabile Version
- Support für neuere Versionen von Kotlin
Version 1.1.0-rc03
26. Januar 2022
androidx.compose.runtime:runtime-*:1.1.0-rc03
wurde veröffentlicht. Version 1.1.0-rc03 enthält diese Commits.
Fehlerkorrekturen
- Aktualisiert, um Material zu verfassen
1.1.0-rc03
Version 1.1.0-rc01
15. Dezember 2021
androidx.compose.runtime:runtime-*:1.1.0-rc01
wurde veröffentlicht. Version 1.1.0-rc01 enthält diese Commits.
Version 1.1.0-beta04
1. Dezember 2021
androidx.compose.runtime:runtime-*:1.1.0-beta04
wurde veröffentlicht. Version 1.1.0-beta04 enthält diese Commits.
Neue Funktionen
- Aktualisiert, um mit Kotlin-
1.6.0
kompatibel zu sein
Version 1.1.0-beta03
17. November 2021
androidx.compose.runtime:runtime-*:1.1.0-beta03
wurde veröffentlicht. Version 1.1.0-beta03 enthält diese Commits.
Version 1.1.0-beta02
3. November 2021
androidx.compose.runtime:runtime-*:1.1.0-beta02
wurde veröffentlicht. Version 1.1.0-beta02 enthält diese Commits.
API-Änderungen
- Der Snapshot-Code wurde in mehrere Dateien aufgeteilt, aber alle wurden trotzdem befindet sich in derselben JVM-Klasse. (IC6c98)
Version 1.1.0-beta01
27. Oktober 2021
androidx.compose.runtime:runtime-*:1.1.0-beta01
wurde veröffentlicht. Version 1.1.0-beta01 enthält diese Commits.
Version 1.1.0-alpha06
13. Oktober 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha06
wurde veröffentlicht. Version 1.1.0-alpha06 enthält diese Commits.
API-Änderungen
InternalCompilerApi
wurde aus den Composer-Methoden entfernt, die müssen modulübergreifend aufgerufen werden (I1aa0b)- „
Recomposer.state
“ wurde verworfen und ersetzt durchRecomposer.currentState
, um seinen Typ in einen StateFlow zu ändern (Ic2ab3, b/197773820)
Version 1.1.0-alpha05
29. September 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha05
wurde veröffentlicht. Version 1.1.0-alpha05 enthält diese Commits.
Version 1.1.0-alpha04
15. September 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha04
wurde veröffentlicht. Version 1.1.0-alpha04 enthält diese Commits.
Version 1.1.0-alpha03
1. September 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha03
wurde veröffentlicht. Version 1.1.0-alpha03 enthält diese Commits.
Neue Funktionen
- Der Compose-Compiler unterstützt jetzt ältere Versionen der Compose Runtime (1.0). Vor dieser Änderung war der Compose-Compiler nur mit der Compose-Laufzeit derselben oder einer neueren Version kompatibel. Nach dieser Änderung ist der Compose-Compiler mit einer älteren Version der Compose-Laufzeit (1.0) kompatibel. (aosp/1796968)
- Die Funktion „Compose“ (
1.1.0-alpha03
) wurde so aktualisiert, dass sie von „1.5.30
“ in Kotlin abhängig ist. (I74545)
Version 1.1.0-alpha02
18. August 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha02
wurde veröffentlicht. Version 1.1.0-alpha02 enthält diese Commits.
Version 1.1.0-alpha01
4. August 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha01
wurde veröffentlicht. Version 1.1.0-alpha01 enthält diese Commits.
Version 1.0
Version 1.0.5
3. November 2021
androidx.compose.runtime:runtime-*:1.0.5
wurde veröffentlicht. Version 1.0.5 enthält diese Commits.
Fehlerkorrekturen
- Ein Absturz-Tracking von RelatedStateOf-Instanzen wurde behoben. (aosp/1792247)
Version 1.0.4
13. Oktober 2021
androidx.compose.runtime:runtime-*:1.0.4
wurde veröffentlicht. Version 1.0.4 enthält diese Commits.
Aktualisierung der Abhängigkeiten
- Aktualisiert und abhängig von Kotlin
1.5.31
Version 1.0.3
29. September 2021
androidx.compose.runtime:runtime-*:1.0.3
wurde veröffentlicht. Version 1.0.3 enthält diese Commits.
Aktualisierung der Abhängigkeiten
- Aktualisiert und abhängig von Kotlin
1.5.30
Version 1.0.2
1. September 2021
androidx.compose.runtime:runtime-*:1.0.2
wurde veröffentlicht. Version 1.0.2 enthält diese Commits.
Aktualisiert, um die Compose-Version 1.0.2
zu unterstützen. „Compose 1.0.2
“ ist weiterhin mit Kotlin 1.5.21
kompatibel.
Version 1.0.1
4. August 2021
androidx.compose.runtime:runtime-*:1.0.1
wurde veröffentlicht. Version 1.0.1 enthält diese Commits.
Aktualisierung der Abhängigkeiten
- Aktualisiert und abhängig von Kotlin-
1.5.21
.
Version 1.0.0
28. Juli 2021
androidx.compose.runtime:runtime-*:1.0.0
wurde veröffentlicht. Version 1.0.0 enthält diese Commits.
Hauptfunktionen von Version 1.0.0
Dies ist die erste stabile Version von Compose. Weitere Informationen finden Sie im offiziellen Blog „Compose Release“.
Bekannte Probleme
Wenn Sie Android Studio Bumblebee Canary 4 oder AGP
7.1.0-alpha04
/7.1.0-alpha05
verwenden, kann es zu folgendem Absturz kommen:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Erhöhen Sie in der Datei
build.gradle
vorübergehend Ihre minSdkVersion auf 24 oder höher, um das Problem zu beheben. Dieses Problem wird in der nächsten Version von Android Studio Bumblebee und AGP7.1
behoben. (b/194289155)
Version 1.0.0-rc02
14. Juli 2021
androidx.compose.runtime:runtime-*:1.0.0-rc02
wurde veröffentlicht. Version 1.0.0-rc02 enthält diese Commits.
- Die Race-Bedingungen in SnapshotStateObserver wurden behoben, die zu einer spurrativen Reaktion geführt haben. NullPointerExceptions. (aosp/1763445, aosp/1758105, b/192677711)
- Probleme mit Laufzeit-Snapshots, die
java.lang.IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied
Abstürze verursachten, wurden behoben. (b/193006595, b/192570897)
Version 1.0.0-rc01
1. Juli 2021
androidx.compose.runtime:runtime-*:1.0.0-rc01
wurde veröffentlicht. Version 1.0.0-rc01 enthält diese Commits.
Version 1.0.0-beta09
16. Juni 2021
androidx.compose.runtime:runtime-*:1.0.0-beta09
wurde veröffentlicht. Version 1.0.0-beta09 enthält diese Commits.
Regeln für Profil hinzugefügt
In diesem Release werden den folgenden Erstellungsmodulen (I14ed6) Profilregeln hinzugefügt:
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometrie
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit.
- androidx.compose.ui.util-
Was sind Profilregeln?
Profilregeln für eine Bibliothek werden in der Textdatei
baseline-prof.txt
imsrc/main
oder einem entsprechenden Verzeichnis angegeben. In der Datei ist eine Regel pro Zeile angegeben, wobei eine Regel in diesem Fall ein Muster für den Abgleich mit Methoden oder Klassen in der Bibliothek ist. Die Syntax für diese Regeln ist eine Obermenge des visuell lesbaren ART-Profilformats, das bei Verwendung vonadb shell profman --dump-classes-and-methods ...
verwendet wird. Für die Ausrichtung auf Methoden oder Klassen gibt es zwei Arten dieser Regeln.Eine Methodenregel hat das folgende Muster:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Und eine Klassenregel hat das folgende Muster:
<CLASS_DESCRIPTOR>
Hier steht
<FLAGS>
für mindestens eines der ZeichenH
,S
undP
, 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 Klasseandroidx.compose.runtime.SlotTable
hätte beispielsweise den DeskriptorLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
ist die Signatur der Methode und enthält den Namen sowie die Parametertypen und Rückgabetypen der Methode. Die Methodefun isPlaced(): Boolean
fürLayoutNode
hat beispielsweise die SignaturisPlaced()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 "heiß" ist. und sollten im Voraus kompiliert werden.Eine Methode mit dem Flag
S
gibt an, dass es sich um eine Methode handelt, die beim Start aufgerufen und im Voraus kompiliert werden sollte, um die Kosten für die Kompilierung und die Interpretation der Methode beim Start zu vermeiden.Eine Methode mit dem Flag
P
gibt an, dass es sich um eine Methode handelt, die nach dem Start aufgerufen wird.Eine in dieser Datei vorhandene Klasse gibt an, dass sie beim Start verwendet wird und im Heap zugewiesen werden sollte, um Kosten für das Laden der Klasse zu vermeiden.
So funktioniert's
- Bibliotheken können diese Regeln definieren, die in AAR-Artefakte gepackt werden. Wenn dann eine Anwendung erstellt wird, die diese Artefakte enthält, werden diese Regeln zusammengeführt und die zusammengeführten Regeln zum Erstellen eines kompakten binären ART-Profils verwendet, das speziell für die Anwendung gilt. ART kann dieses Profil dann nutzen, wenn die App auf Geräten installiert wird, um im Voraus eine bestimmte Teilmenge der App zu kompilieren und so die Leistung der App zu verbessern, insbesondere bei der ersten Ausführung. Dies hat keine Auswirkungen auf Debug-fähige Anwendungen.
Version 1.0.0-beta08
2. Juni 2021
androidx.compose.runtime:runtime-*:1.0.0-beta08
wurde veröffentlicht. Version 1.0.0-beta08 enthält diese Commits.
API-Änderungen
State<T>
ist jetztState<out T>
(I69049)ControlledComposition
API-Änderung, um die Neuzusammensetzung zu ermöglichen Änderungen in einer einzelnen Neuzusammensetzung des Durchlaufs. (Iaafd1, b/184173932)
Version 1.0.0-beta07
18. Mai 2021
androidx.compose.runtime:runtime-*:1.0.0-beta07
wurde veröffentlicht. Version 1.0.0-beta07 enthält diese Commits.
API-Änderungen
- Neue Compiler-APIs hinzugefügt, die eine die vom Compiler generierten Quellinformationen, werden während der Quellenminifizierung entfernt. (Ia34e6)
Führt
ReusableContent
ein, das versucht, den enthalten, anstatt sie zu ersetzen, wenn der Schlüssel geändert wird. Wenn der Schlüssel geändert wird, werden die vorherigen Werte in wird die Anzeigenflächentabelle für den Inhalt ignoriert, mit Ausnahme der Knoten, die generiert wurden, und die Werte, die zur Aktualisierung der Knoten.Führt
ReusableComposeNode
ein, die den Knoten wiederverwendet. ausgegeben, anstatt es wie beiComposeNode
zu ersetzen. (I1dd86)@ComposeCompilerApi
nicht mehr@RequiresOptIn
(Iab690)
Fehlerkorrekturen
- In LazyColumn/Row bleiben jetzt bis zu zwei zuvor sichtbare Elemente aktiv (nicht entsorgt), auch wenn sie bereits herausgescrollt werden. Dadurch kann die Komponente die aktiven Unterzusammensetzungen wiederverwenden, wenn ein neues Element erstellt werden muss, was das Scrollen verbessert. (IE5555)
Version 1.0.0-beta06
5. Mai 2021
androidx.compose.runtime:runtime-*:1.0.0-beta06
wurde veröffentlicht. Version 1.0.0-beta06 enthält diese Commits.
API-Änderungen
@ComposeCompilerApi
nicht mehr@RequiresOptIn
(Iab690)
Version 1.0.0-beta05
21. April 2021
androidx.compose.runtime:runtime-*:1.0.0-beta05
wurde veröffentlicht. Version 1.0.0-beta05 enthält diese Commits.
API-Änderungen
@InternalComposeApi
für die Aufzeichnung von Lese- und Schreibvorgängen von Snapshots entfernt (Id134d)
Fehlerkorrekturen
- Die AndroidManifest-Dateien aus ui-test-manifest und ui-tooling-data sind jetzt mit Android 12 kompatibel (I6f9de, b/184718994).
Version 1.0.0-beta04
7. April 2021
androidx.compose.runtime:runtime-*:1.0.0-beta04
wurde veröffentlicht. Version 1.0.0-beta04 enthält diese Commits.
Fehlerkorrekturen
Vor dieser Änderung waren lokale zusammensetzbare Funktionen aufgrund ihrer Parameter überspringbar. Nach dieser Änderung werden keine lokalen zusammensetzbaren Funktionen mehr übersprungen. Diese Änderung erfolgt, da lokale Funktionen häufig Parameter aus dem übergeordneten Element erfassen und dass das Überspringen eine häufige Ursache für Fehler ist.
Betrachten Sie das folgende Beispiel zusammenzufassen:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }
Vor dieser Änderung wurde die Funktion
ShowCount
immer übersprungen, auch nachdem der Parametercount
aktualisiert wurde. Diese Änderungen haben wir jedoch nicht vorgenommen (I5648a)Das Problem, dass
rememberSaveable()
bei Verwendung mit Eingabeparametern den alten Wert wiederhergestellt (I1b110, b/182403380) wurde behoben.
Version 1.0.0-beta03
24. März 2021
androidx.compose.runtime:runtime-*:1.0.0-beta03
wurde veröffentlicht. Version 1.0.0-beta03 enthält diese Commits.
API-Änderungen
DefaultMonotonicFrameClock
wurde verworfen. AnrufenwithFrameNanos
oderRecomposer.runRecomposeAndApplyChanges
ohneMonotonicFrameClock
wirft jetztIllegalStateException
. (I4eb0d)
Version 1.0.0-beta02
10. März 2021
androidx.compose.runtime:runtime-*:1.0.0-beta02
wurde veröffentlicht. Version 1.0.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Einschränkungen für die öffentliche Nutzung experimenteller APIs erzwingen (I6aa29, b/174531520)
- Behebung des fehlerhaften
rememberSaveable { mutableStateOf(0) }
, der innerhalb eines Ziels von navigation-compose verwendet wurde. (I1312b, b/180042685, b/180701630)
Version 1.0.0-beta01
24. Februar 2021
androidx.compose.runtime:runtime-*:1.0.0-beta01
wurde veröffentlicht. Version 1.0.0-beta01 enthält diese Commits.
Dies ist die erste Version der Betaversion von Compose 1.0.0.
API-Änderungen
Recomposer.runRecomposeConcurrentlyAndApplyChanges
hinzufügen experimentelle API zur Neuerstellung ungültiger Kompositionen aus dem Hauptfeed Frame-Schleife. (I342d0)- Für alle mit @ReadOnlyComposable gekennzeichneten zusammensetzbaren Funktionen wird jetzt die Kompilierungszeit validiert, damit nur Aufrufe an andere @ReadOnlyComposables gesendet werden (I58961).
Die
defaultFactory
fürcompositionLocalOf
undstaticCompositionLocalOf
ist jetzt erforderlich anstelle von optional.Durch diese Änderung wird ein möglicher Typfehler für Nicht-Nullwerte entfernt Typen, für die keine Standard-Factory angegeben wurde. Vorher würde einen Nullverweis für einen Typ liefern, der keine Nullwerte zulässt.
Für Typen, für die Nullwerte zulässig sind, sollten Sie
{ null }
als Standard festlegen Factory.Wir raten davon ab, lokale Nutzer mit Typen zu verwenden, die keine Nullwerte zulassen können, es sei denn, kann ein sinnvoller Standardwert angegeben werden. Wenn kein sinnvoller Standardwert vorhanden ist, sollte das Lambda
defaultFactory
eine Ausnahme auslösen. Allerdings dass eine Ausnahme ausgelöst wird, eine implizite Abhängigkeit von ihrer Bereitstellung, die nicht erzwungen wird durch das Typsystem. (Ifbd2a)Eingestellte Symbole wurden aus der Schreiblaufzeit entfernt (I3252c).
Die verworfene
emptyContent()
wurde entfernt. Verwende stattdessen{}
. (Idb33f, b/179432510)„Providers“ wurde in CompositionLocalProvider umbenannt
- Der Kompositionskonstruktor akzeptiert keinen Schlüsselparameter mehr und wurde eingestellt.
- currentCompositeKeyHash wurde in eine zusammensetzbare Top-Level-Eigenschaft anstelle einer zusammensetzbaren Top-Level-Funktion umgewandelt.
- CompositionData und CompositionGroup wurden in den Namespace „androidx.compose.runtime.tooling“ verschoben
- ComposableLambda wurde zu einer Schnittstelle anstelle einer konkreten Klasse gemacht und verfügt nicht mehr über Typparameter.
- ComposableLambdaN ist jetzt eine Schnittstelle anstelle einer konkreten Klasse und hat keine Typparameter mehr.
- Die Funktion „SnapshotFlow“ wurde in den Namespace „androidx.compose.runtime“ verschoben
- Die Zusammenführungsmethode von SnapshotMutationPolicy ist nicht mehr experimentell
- Die @TestOnly-Funktion „clearRoots“ der obersten Ebene wurde entfernt. Es ist nicht mehr notwendig.
- Die Funktionen „keySourceInfoOf“ und „resetSourceInfo“ wurden entfernt. Sie werden nicht mehr benötigt.
- Composer.collectKeySourceInformation wurde entfernt. Es ist nicht mehr notwendig.
- Die Methoden „isJoinedKey“, „joinKeyLeft“ und „joinKeyRight“ wurden entfernt. Sie werden nicht mehr benötigt.
- Verschiedene APIs der obersten Ebene wurden verschoben und in verschiedene Dateien neu organisiert. Aufgrund der Semantik der Dateiklassen von Kotlin wird die Kompatibilität der Binärdateien, aber nicht der Quelldateien beeinträchtigt. Daher sollte es für die meisten Nutzer kein Problem sein.
- (I99b7d, b/177245490)
SnapshotStateObserver ist nicht mehr experimentell (Id2e6a).
Einige zuvor eingestellte APIs wurden gelöscht (Ice5da, b/178633932).
Folgende Änderungen an der Material API wurden vorgenommen:
- Der Parameter "contentPadding" wurde zu Top/BottomAppBar hinzugefügt, um das Standard-Padding anzupassen.
- Die Parameter in BackdropScaffold wurden neu angeordnet, um den API-Richtlinien für erforderliche Parameter vor optionalen Parametern zu entsprechen.
- Der Parameter
icon
wurde in BottomNavigationItem hinterselected
undonClick
verschoben. - Der Parameter
alwaysShowLabels
in BottomNavigationItem wurde inalwaysShowLabel
umbenannt. bodyContent
-Parameter in einigen Komponenten incontent
umbenannt.- Parameter in
ButtonDefaults.buttonColors()
neu angeordnet. Bitte beachten Sie, dass dies keinen Fehler in Ihrem Code verursacht, da sich der Typ der Parameter nicht geändert hat. Stellen Sie sicher, dass Sie entweder benannte Parameter verwenden oder die Reihenfolge manuell aktualisieren. Andernfalls funktioniert der Code nicht wie zuvor. - Der Parameter
secondaryVariant
wurde zudarkColors()
hinzugefügt. Diese Farbe hat in der Regel die gleiche Farbe wiesecondary
im dunklen Design, sorgt aber für Einheitlichkeit und eine weitere Anpassung. - ElevationDefaults und animateElevation() wurden von der öffentlichen API-Oberfläche entfernt, da sie im Allgemeinen nicht verwendet wurden bzw. nicht nützlich waren.
onValueChangeEnd
inSlider
wurde inonValueChangeFinished
umbenannt und Nullwerte zulässig.- Der Parameter
text
inSnackbar
wurde aus Konsistenzgründen incontent
umbenannt. - Der Parameter
contentPadding
wurde zuDropdownMenuItem
hinzugefügt, um das Anpassen des Standardabstands zu ermöglichen.content
wurde zu einer Erweiterung vonRowScope
. ModalDrawerLayout
wurde inModalDrawer
umbenannt.BottomDrawerLayout
wurde inBottomDrawer
umbenannt.- (I1cc66)
Version 1.0.0-alpha12
10. Februar 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha12
wurde veröffentlicht. Version 1.0.0-alpha12 enthält diese Commits.
API-Änderungen
- ViewGroups werden aus UiApplier nicht mehr unterstützt. Die verworfenen zusammensetzbaren Funktionen von emitView wurden entfernt. (Ifb214)
- CompositionReference wurde in CompositionContext (I53fcb) umbenannt
- ComponentActivity.setContent wurde verschoben nach androidx.activity.compose.setContent im androidx.activity:activity-compose-Modul. (Icf416)
- Die Snapshot API wurde im Hinblick auf Konsistenz mit API-Richtlinie und Ausblenden interner Implementierungsklassen aus der öffentlichen API. (Id9e32)
- Ambients wurden umbenannt, um sie an den Inaktivmodus anzupassen -> CompositionLocal- umbenennt. Ambients hießen früher AmbientFoo, CompositionLocals heißt jetzt LocalFoo. (I2d55d)
- „Ambient –“ wurde in „CompositionLocal“ und „AmbientOf / staticAmbientOf“ in „compositionLocalOf / staticCompositionLocalOf“ umbenannt. Diese Änderung verdeutlicht den Zweck von CompositionLocal: ein Mechanismus zum Bereitstellen / Abrufen von Werten für lokale Kompositionen. CompositionLocal-Instanzen sollte das Präfix
Local
vorangestellt werden, z. B. val LocalFoo = CompositionLocalOf { Foo() }. (Ia55b6) - Mit den Optionen „takeMutableSnapshot“ und „takeSnapshot“ kann sind jetzt Companion-Methoden von Snapshot. (I91f19)
@ComposableContract
wurde zugunsten von drei weiteren spezifischen Annotationen eingestellt.@ComposableContract(restartable = false)
ist jetzt@NonRestartableComposable
@ComposableContract(readonly = true)
ist jetzt@ReadOnlyComposable
@ComposableContract(preventCapture = true)
ist jetzt@DisallowComposableCalls
@ComposableContract(tracked = true)
wurde entfernt. (I60a9d)emptyContent() und (@Composable () -> Unit).orEmpty() wurden eingestellt, da sie keine positiven Auswirkungen oder Werte mehr auf die Leistung haben (I0484d).
snapshotFlow
undwithMutableSnapshot
wurden entfernt experimentell (I6a45f)Recomposeren können jetzt geschlossen werden. Geschlossene Rekomponisten Setze die Neuzusammensetzung fort, bis die untergeordneten Koroutinen der Komposition abgeschlossen sind. Recomposer.shutDown wurde umbenannt, um den Vorgang abzubrechen und einen Kontrast mit dem Schließen zu bilden. (Ib6d76)
Das Artefakt
compose:runtime-dispatch
wurde verworfen. MonotonicFrameClock befindet sich jetzt unter Du findest den AndroidUiDispatcher unter „Compose:ui“. (Ib5c36)Die API, auf die das Compiler-Plug-in ausgerichtet ist wurde refaktoriert, sodass nun eine Schnittstelle anstelle einer konkrete Klasse. Außerdem werden auf der Oberfläche Typparameter.
Dies ist eine interne Änderung, die sich nicht auf die Quelle auswirken sollte Codekompatibilität, ist aber eine funktionsgefährdende Änderung des Binärprogramms. (I3b922, b/169406779)
SnapshotMutableState wurde eingeführt (Icfd03).
DisposableEffectDisposable wurde in DisposaleEffectResult (Ica7c6) umbenannt
Recomposer.current() wurde entfernt. [Zusammenfassung]ComposeView jetzt werden nur langsam erstellte, fensterbezogene Recomposers verwendet, die vom ViewTreeLifecycleOwner für das Fenster. Neuzusammensetzung und mitFrameNanos-basierten Animationsmarkierungen werden während des Host-Lebenszyklus wurde beendet. (I38e11)
Recomposer.runningRecomposers bietet jetzt einen globalen StateFlow von schreibgeschützten RecomposerInfo zur Beobachtung des aktuellen Kompositionsstatus in zu verstehen. Ziehen Sie diese API Recomposer.current() vor, das jetzt heißt. eingestellt. (If8ebe)
„DisposableEffectDisposable“ wurde in „DisposaleEffectResult“ umbenannt (I3ea68).
Version 1.0.0-alpha11
28. Januar 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha11
wurde veröffentlicht. Version 1.0.0-alpha11 enthält diese Commits.
API-Änderungen
- onCommit, onDispose und onActive wurden zugunsten der SideEffect und DisposableEffect APIs eingestellt (If760e)
- Die emit() API und alle Überlastungen wurden verworfen und in ComposeNode umbenannt. Die APIs sind identisch, nur unter einem anderen Namen, um den Namenskonventionen in „Compose“ (I4137b) zu entsprechen.
- invalid und summaryReference() wurden zugunsten von currentRecomposeScope bzw. memoryCompositionReference verworfen. (I583a8)
SaveObserver ersetzt CompositionLifecycleObserver und CompositionLifecycleObserver wurde verworfen.
RememberObserver
ist ein Ersatz fürCompositionLifecycleObserver
mit modifizierter Semantik und umbenannten Methoden. Der Wechsel zur neuen API kann mechanisch erfolgen. für Objekte, an die man sich nur einmal erinnert. Das heißt, die empfohlene Vorgehensweise. Wurde jedoch eine Referenz die in einer Komposition mehrfach gespeichert wurden,onRemembered
wird aufgerufen für jede Referenz, bei deronEnter
nur einmal aufgerufen wird.onEnter
mehrfach aufgerufen, wenn das Objekt in Unterzusammensetzungen verwendet wurde, wieWithConstraints
undScaffold
, sodass die SingleonEnter
-Anrufgarantie unzuverlässig und wurde entfernt fürRememberObserver
.RememberObserver
fügtonAbandoned
hinzu. Dies wird aufgerufen, wenn die DieRememberObserver
-Instanz wird von der übergebenen Callback-Funktion zurückgegeben. aufremember
gesetzt, wurde aber im Kompositionsstatus nicht gespeichert und wird daher niemalsonRemembered
aufgerufen. Dies kann tritt auf, wenn die Komposition durch eine Ausnahme beendet wird, bevor sie abgeschlossen ist, oder wird die Komposition verworfen, da der Bundesstaat eine Komposition für nicht mehr aktuell oder anderweitig nicht mehr gültig ist erforderlich. Wenn die Instanz vonRememberObserver
nach dem einzelnen Empfehlung oben: Tracking einer externen RessourceonForgotten
undonAbandoned
zeigen jeweils an, Ressource nicht mehr benötigt. Wenn das Objekt die Tracking-Funktion aktiviert, gestartet oder Ressourcen zugewiesen inonRemembered
,onAbandoned
kann ignoriert werden, da es nicht aufgerufen wird, wennonRemembered
aufgerufen. (I02c36)collectAsState()
-Funktionen nicht als inline markieren (Ia73e4)
Fehlerkorrekturen
- WithConstraints wurde als BoxWithConstraints überarbeitet und zu "foundation.layout" verschoben. (I9420b, b/173387208)
- TestCoroutineDispatcher beim Testen nutzen (I532b6)
Version 1.0.0-alpha10
13. Januar 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha10
wurde veröffentlicht. Version 1.0.0-alpha10 enthält diese Commits.
funktionsgefährdende Änderung
Umstrukturierung des internen Compilers Die API ermöglicht Batchänderungen an den generierten Knoten als Ergebnis der Zusammensetzung Phase der Komposition, nachdem alle
@Composable
-Funktionen abgeschlossen wurden.Dies ist ein Bruch des Verhaltens die sich auf den Anwendungscode auswirken könnten, sind nicht mehr in den internen und experimentelle APIs, bis nach Änderungen angewendet. Das lässt sich in der Regel umgehen, der Code mit solchen Abhängigkeiten in einer
SideEffect
zusammensetzbar, um die Ausführung des erst nach dem Erstellen der Knoten und initialisiert. (I018da)
API-Änderungen
- Es wurde eine Möglichkeit hinzugefügt, nachzuverfolgen, ob der recomposer hat Änderungen übernommen. (I1b3e2)
[Zusammenfassung]ComposeView APIs erweitern, um Recycling zu ermöglichen Kompositionsbasierte Ansichten, deren Komposition zur erneuten Erstellung entsorgt wird . APIs zum Installieren und Erkennen von fensterbezogenen Recomposers hinzufügen und CompositionReferences zum Erstellen untergeordneter Kompositionen.
ViewCompositionStrategy zum Konfigurieren der Entsorgung von Kompositionen hinzufügen Strategie von [Zusammenfassung]ComposeViews; Standardverhalten ist Dispose auf Fenster lösen. (I860ab)
Fehlerkorrekturen
- Recomposer zeigt jetzt einen Flow des aktuellen Status an, sodass Überwachung der Aktivitäten und der damit verbundenen Auswirkungen. (Ifb2b9)
- Auf das native "keyEvent" kann jetzt über "keyEvent.nativeKeyEvent" (I87c57, b/173086397) zugegriffen werden.
Version 1.0.0-alpha09
16. Dezember 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha09
wurde veröffentlicht. Version 1.0.0-alpha09 enthält diese Commits.
API-Änderungen
SlotTable, SlotReader und SlotWriter aus der öffentlichen API. Diese wurden markiert als InternalComposeAPI. Jetzt sind sie intern zum Verfassen-Modul.
CompositionData und CompositionGroup wurden als Ersatz für die UI-Tooling-API zum Extrahieren Informationen zur Zusammensetzung. Diese sind öffentlich, sind für die Verwendung außerhalb der UI-Tooling API gedacht, da sie die von der UI-Tooling API interpretierten Rohinformationen (I31a9c)
Die Applier-Klasse wird nicht mehr als (Id85b0) angesehen.
Die Benutzeroberfläche von
Applier
wurde vereinfacht dass Bäume von unten nach oben statt von oben nach unten gebaut werden.Die Methode
insert()
wurde ininsertTopDown()
umbenannt.Die neue Methode
insertBottomUp()
wurde hinzugefügt.Ein Anwender fügt entweder Knoten in den Baum ein, den er bearbeitet. mit
insertTopDown()
oderinsertBottomUp()
, je nachdem, und eine bessere Leistung.Einige Bäume, z. B.
LayoutNode
undView
, sind viel größer ist die Erstellung von Bottom-up-Ansatz effizienter als von Top-down. Vor dieser Änderung für die Bottom-up-Implementierung erforderlich war, in jeden Anwendungsanbieter kopiert werden, wobei ein Bottom-up-Ansatz erforderlich ist für eine optimale Leistung. Mit dieser Änderung hat einApplier
überschreibtinsertBottomUp()
, um eine Baumstruktur für Bottom-up-insertTopDown()
, um den Baum oben nach unten zu bauen. (Icbdc2)Compose unterstützt Eigenschafts-Getter, die zusammensetzbare Aufrufe erstellen können. Die Unterstützung dafür wird nicht eingestellt, aber die Syntax zum Deklarieren eines Eigenschafts-Getters als @Composable ändert sich.
Die inzwischen eingestellte Syntax dafür war das Annotieren der Eigenschaft selbst:
@Composable val someProperty: Int get() = ...
Die korrekte Syntax hierfür ist jetzt das Annotieren des Getters der Eigenschaft:
val someProperty: Int @Composable get() = ...
Beide Syntaxen funktionieren noch eine Zeit lang, aber die alte eingestellte Syntax wird irgendwann zu einem Kompilierungsfehler werden. (ID9197)
Fehlerkorrekturen
- AndroidOwner intern gemacht (Ibcad0, b/170296980)
- subcomposeInto(LayoutNode) intern gemacht (Id724a)
Version 1.0.0-alpha08
2. Dezember 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha08
wurde veröffentlicht. Version 1.0.0-alpha08 enthält diese Commits.
API-Änderungen
- Es wurde eine Lint-Prüfung für die Benennung und Position von zusammensetzbaren Lambda-Parametern hinzugefügt, um die Konsistenz mit den Richtlinien für das Schreiben zu prüfen.
Außerdem wurden einige APIs gemäß der Lint-Prüfung und der Anleitung mit
children
als Namen für das nachgestellte Lambda zucontent
migriert. (Iec48e) - Recomposer akzeptiert einen EmbeddingContext nicht mehr. erforderlich Planungsabhängigkeiten werden aus „EffectCoroutineContext“ abgerufen. FrameManager wurde eingestellt. Plattformintegrationen sollten initialisiert werden, eigenen globalen Snapshot-Verarbeitung. (I02369)
- Die Funktion RestorableStateHolder.withRestorableState wurde in RestorableStateProvider (I66640) umbenannt
Fehlerkorrekturen
- Die eingestellten Ambients mit dem Suffix
Ambient
wurden gemäß den anderen Richtlinien für Ambients und Compose API durch neue Properties mit dem Präfix „Inaktiv“ ersetzt. (I33440) - Entfernen Sie das alte UI-Test-Modul und die zugehörigen Stubs (I3a7cb).
Version 1.0.0-alpha07
11. November 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha07
wurde veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.
Neue Funktionen
API-Änderungen
- Die Annotation
@UnionType
wurde verworfen (I57cde). - Das Attribut „createDefault“ wurde als Alternative zur Bereitstellung von Umgebungswerten hinzugefügt. Es kann verwendet werden, um Umgebungswerte anzugeben, die nur festgelegt werden, wenn noch kein Umgebungswert angegeben wurde. (Id6635, b/171024925)
- "LaunchedTask" wurde aus Konsistenzgründen in "LaunchedEffect" umbenannt SideEffect und DisposableEffect API LaunchedEffect ohne subject params nicht zulässig sind, um Best Practices zu fördern. (Ifd3d4)
- Applier verfügt nun über onBeginChanges/onEndChanges-Callbacks, die wird aufgerufen, wenn ein Composer mit der Anwendung von Änderungen an der Baumstruktur beginnt bzw. fertig ist. Sie können bei Bedarf für die Batch-Ressourcenverwaltung verwendet werden. (Icf476)
- Recomposer erfordert jetzt bei der Erstellung einen CoroutineContext (Ic4610).
- Änderungen an der internen SlotTable-Implementierung, die sollte sich nicht auf die öffentliche API auswirken. (If9828)
- Veraltete rxjava2-Adapter, die nicht den ursprünglichen Wert verwenden, wurden entfernt (Idb72f).
Fehlerkorrekturen
- Foundation.Text wurde eingestellt und durch material.Text ersetzt. Eine einfache, uneindeutige Text-API, die keine Werte aus einem Design verwendet, finden Sie unter androidx.compose.foundation.BasicText. (If64cb)
- „BaseTextField“ wurde eingestellt. Verwenden Sie stattdessen BasicTextField. (I896eb)
- Mehrere Layoutsymbole wurden von androidx.compose.ui nach androidx.compose.layout.ui verschoben. (I0fa98, b/170475424)
Externer Beitrag
- Das
runtime-rxjava3
-Modul zum Schreiben wurde hinzugefügt. Ähnlich wieruntime-rxjava2
(I02cbf)
Version 1.0.0-alpha06
28. Oktober 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha06
wurde veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.
API-Änderungen
- Recomposer ist jetzt eine CompositionReference und eine gültige übergeordnetes Element der Komposition. Expliziter Recomposer ist jetzt an weniger Stellen erforderlich. (I4036f)
- DisposableEffect-Gegenstück-API zu SideEffect hinzugefügt, Füllung
onCommit-with-params,
aber mit einer erforderlichen onDispose-Funktion.
- Die Funktion „memoryUpdatedState“ wurde hinzugefügt, um Daten von der Neuzusammensetzung in andauernde oder langlebige Prozesse wie DisposableEffects oder LaunchedTasks.
- (ID50b9)
- MutableVector implementiert jetzt RandomAccess (I85d73, b/170461551).
- Zusammensetzbare Funktion "Nebeneffekt" zum Anwenden von Nebeneffekten von auf Objekte, die durch die Komposition verwaltet werden. Nebeneffekt ist die die zusammensetzbare Funktion onCommit ersetzen soll. (Ia77c2)
- Neue experimentelle API RestorableStateHolder. Damit kann der mit [SavedInstanceState] und [rememberSavedInstanceState] für die Unterstruktur definierte Status gespeichert werden, bevor sie verworfen wird. So ist es möglich, sie beim nächsten Mal mit dem wiederhergestellten Status wieder zusammenzustellen. (I66884, b/166586419)
Fehlerkorrekturen
- Übergänge in ComposeTestRule aktivieren Option entfernen, um aktivieren Sie den blinkenden Cursor in ComposeTestRule. (If0de3)
Version 1.0.0-alpha05
14. Oktober 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha05
wurde veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.
API-Änderungen
- Experimental Modifier.pointerInput zum Sperren des Eingabemodifikators (Ia77d2)
- Die Scrollleistung von LazyColumn/Row wird verbessert, indem bei jedem Scrollen weniger Arbeit an der Unterzusammensetzung ausgeführt wird. Für die Zusammensetzungsklasse wurde die neue has Entwertungs()-Methode hinzugefügt. Die Methode hasPendingChanges() von Recomposer wurde in hasInvalidations() umbenannt (Ib2f32, b/168293643, b/167972292, b/165028371).
- Die „produceState“-API zum Starten von Koroutinen aus der Komposition hinzufügen
die einen einzelnen
State<T>
-Wert im Laufe der Zeit aktualisieren (Id4a57) - launchInComposition wurde in "LaunchedTask" umbenannt, um der Funktion "Compose" zu entsprechen API-Richtlinien (I99a8e)
- Durch die Reihenfolge der „place()“-Aufrufe in benutzerdefinierten Layouts wird jetzt die Zeichenreihenfolge für die untergeordneten Elemente definiert (Ibc9f6).
Version 1.0.0-alpha04
1. Oktober 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha04
wurde veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.
API-Änderungen
- OwnerScope wurde hinzugefügt, um die Erfassung von zu ermöglichen. um Beobachtungsbereiche zu zeichnen, ist nicht mehr gültig. (Ic4cf8)
- Es wurde die abgeleitete StateOf API hinzugefügt, um State-Objekte auf der Grundlage einer Berechnung zu erstellen, die andere State-Objekte lesen (und davon ableiten kann) (If758b)
- TestOnly API für SnapshotStateObserver hinzugefügt (I6e2a9)
Fehlerkorrekturen
- Foundation.Box wurde eingestellt. Verwende stattdessen „foundation.layout.Box“. (Ie5950, b/167680279)
Version 1.0.0-alpha03
16. September 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha03
wurde veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.
API-Änderungen
- Von
CompositionCoroutineScope
nicht mehr implementiertMonotonicFrameClock
. Aufrufer vonwithFrameNanos
sollten die oberste Ebene importieren. explizit auf. (Icb642, b/166778123)
Fehlerkorrekturen
- Globale Testfunktionen wie
onNode
oderwaitForIdle
sind jetzt Veraltet, migrieren Sie zu den neuen Versionen, die im ComposeTestRule (I7f45a) launchInComposition
startet keine nicht weitergeleiteten Koroutinen mehr (Ief6af, b/166486000)
Version 1.0.0-alpha02
2. September 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha02
wurde veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.
API-Änderungen
- Fügen Sie die APIs
snapshotFlow
undwithMutableSnapshot
für die Nutzung hinzu und zum Erstellen von Snapshot-Datenänderungen. (I3e722) Die Aufrufkonvention für zusammensetzbare Funktionen enthält geändert. Dies ist eine funktionsgefährdende Änderung des Binärprogramms. Alle Bibliotheken müssen um mit dieser Version des Compiler-Plug-ins zu arbeiten.
Diese Änderung führt nicht zu einer funktionsgefährdenden Änderung auf Quellebene, da Nur APIs, die geändert wurden, sind Compiler-APIs mit einer expliziten aktivieren können. (I7afd2, b/158123185)
Planungsmethoden wurden aus EmbeddingContext (I7b9be) entfernt.
onPreCommit wurde verworfen. onCommit verfügt jetzt über das Feld verhalten.
onCommit und onActive werden nun im selben Choreografen-Frame ausgeführt, die Commit-Änderungen an der Zusammensetzung des nächsten Frames der Choreografin. (I70403)
Version 1.0.0-alpha01
26. August 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha01
wurde veröffentlicht. Version 1.0.0-alpha01 enthält diese Commits.
Version 0.1.0-dev
Version 0.1.0-dev17
19. August 2020
androidx.compose.runtime:runtime-*:0.1.0-dev17
wurde veröffentlicht. Version 0.1.0-dev17 enthält diese Commits.
API-Änderungen
- Benutzerdefinierte Emissions können jetzt deklarieren, dass einer oder mehrere ihrer Setter unabhängig von der Emit übersprungen und neu zusammengesetzt werden. (Ibbd13)
Die eingestellten FrameManager-Aufrufe wurden entfernt.
Interne APIs zum Verfassen wurden geändert, um die Anzahl der zur Verfolgung von Zustandsobjekten wie
mutableStateof()
(I80ba6)Die zusammensetzbare Funktion
state { ... }
wurde zugunsten von explizite Aufrufe anremember { mutableStateOf(...) }
zur Verdeutlichung. Dies reduziert die API-Oberfläche insgesamt und die Anzahl der Konzepte für den Status Verwaltung und entspricht dem Musterby mutableStateOf()
für die Klasse Property-Delegierung. (Ia5727)Flow.collectAsState bestimmt jetzt den Standard-Dispatcher von die Komposition selbst, anstatt Dispatchers.Main zu verwenden. (I9c1d9)
Absturz, wenn ein Problem behoben wurde, das den Status in der For-Schleife speichert. Da nun derselbe Schlüssel in savedInstanceState() zulässig ist, ist die API von UiSavedStateRegistry an diese neue Anforderung angepasst (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561).
Fehlerkorrekturen
- „
emitView
“ wurde eingestellt. Verwenden Sie nach Möglichkeit stattdessenAndroidView
, um Ansichten innerhalb von „Compose“ auszugeben. Beachten Sie, dass das direkte Erstellen von Ansichten und ViewGroups in Zukunft nicht mehr unterstützt wird, es sei denn, es handelt sich dabei um Blätter im Erstellungsbaum. Dies ist dann der Fall, wenn dies mit AndroidView möglich ist. (I29b1e, b/163871221)
Version 0.1.0-dev16
5. August 2020
androidx.compose.runtime:runtime-*:0.1.0-dev16
wurde veröffentlicht. Version 0.1.0-dev16 enthält diese Commits.
API-Änderungen
Die Standard-Mutationsrichtlinie
mutableStateOf()
,ambientOf()
undsavedInstanceStateOf()
wurden zustructuralEqualityPolicy()
stattreferentialEqualityPolicy()
.Standardeinstellung für die Entscheidung, ob ein neuer Wert einer
mutableStateOf()
-Instanz gilt als Änderung und wird jetzt standardmäßig verwendet mit==
statt===
.Siehe https://kotlinlang.org/docs/reference/equality.html
ambientOf()
undsavedInstanceStateOf()
verwendenmutableStateOf()
Implementierung, sodass sie im Einklang mitmutableStateOf()
Stärkerer Ansatz struktureller Gleichheit für Entwickler Erwartungen erfüllt.
Beispiel:
val state = mutableStateOf(1f)
gefolgt von:
state.value = 1f
wird nicht mehr als Änderung an
state
berücksichtigt und die Verwendung vonstate
muss während der Komposition nicht mehr neu zusammengesetzt werden.Dies ist zwar eine funktionsgefährdende Änderung, aber in den meisten Fällen (z. B. bei Klassen, die
equals()
nicht überschreiben), hat dies keine spürbaren Auswirkungen auf eine Anwendung.Klassen, die
equals()
überschreiben, z. B.data
-Klassen, kann zu Leistungseinbußen kommen, da dieequals()
-Methode werden jetzt standardmäßig aufgerufen, wenn sie einermutableStateOf()
zugewiesen sind.Das vorherige Verhalten kann durch Hinzufügen der Richtlinie wiederhergestellt werden
policy = referentialEqualityPolicy()
für Aufrufe anmutableStateOf()
,ambientOf()
undsavedInstanceStateOf()
. (IC21a7)Row
undColumn
sind jetzt erheblich Inline-Funktion und reduziert den Aufwand. (I75c10)
Fehlerkorrekturen
- „setViewContent“ wurde eingestellt. Stattdessen sollte „setContent“ verwendet werden. (I7e497, b/160335130)
MonotonicFrameAnimationClock wurde hinzugefügt, mit dem Sie eine MonotonicFrameClock als AnimationClockObservable, um die Lücke zu schließen zwischen den neuen, auf Koroutinen basierenden Uhren und APIs, die noch die alten auf Rückrufen basierende Uhren.
Das MonotonicFrameClock-Äquivalent zu manualAnimationClock ist jetzt Manueller FrameClock. (I111c7, b/161247083)
Modifier.stateDraggable wurde vollständig überarbeitet und umbenannt. in Modifier.swipeable um. Es wurde eine neue SwipeableState-Klasse eingeführt. DrawerState und BottomDrawerState wurden so refaktoriert, dass sie die Elemente übernehmen. [Modal/Bottom]DrawerLayout nimmt keinen onStateChange-Parameter mehr an. (I72332, b/148023068)
Modifier.plus wurde eingestellt. Verwenden Sie stattdessen "Modifier.then". „Dann“ ein stärkeres Signal für die Reihenfolge hat, während gleichzeitig die Eingabe von
Modifier.padding().background() + anotherModifier
unterbunden wird, wodurch die Kette unterbrochen wird und schwerer zu lesen ist (Iedd58, b/161529964).SubcomposeLayout hinzugefügt. Es handelt sich um ein Low-Level-Primitive, mit dem die untergeordneten Elemente während der Messung zusammengefügt werden können, wenn wir einige Werte verwenden möchten, die erst später während des Messwerts für die Unterstrukturzusammensetzung verfügbar sind. WithConstraints wird beispielsweise nicht mit SubcomposeLayout implementiert. (I25cc8)
Material FilledTextField wurde in TextField und grundlegendes TextField in BaseTextField umbenannt, damit die einfachste gewünschte API leicht zu finden und zu verwenden ist (Ia6242, b/155482676).
"Modifier.drawBackground" wurde in "Modifier.background" umbenannt (I13677).
Version 0.1.0-dev15
22. Juli 2020
androidx.compose.runtime:runtime-*:0.1.0-dev15
wurde veröffentlicht. Version 0.1.0-dev15 enthält diese Commits.
Abhängigkeiten aktualisieren
- Wenn Sie die
0.1.0-dev15
-Version von Compose verwenden möchten, müssen Sie Ihre Abhängigkeiten aktualisieren gemäß den neuen Code-Snippets, die oben unter Abhängigkeiten angeben aufgeführt sind.
API-Änderungen
Die Anmerkung
@Model
wurde verworfen. Verwenden Sie „state“ und „mutableStateOf“ als Alternativen. Diese Entscheidung über die Einstellung wurde nach sorgfältiger Diskussion getroffen.Begründung
Mögliche Gründe:
- Reduziert die API-Oberfläche und die Konzepte, die wir vermitteln müssen
- Bessere Anpassung an andere vergleichbare Toolkits (Swift UI, React, Flutter)
- Reversible Entscheidung.
@Model
kann später jederzeit wiederhergestellt werden. - Vermeidet Grenzfälle und schwierig zu beantwortende Fragen zur Konfiguration von
@Model
als Aufgaben, die wir übernehmen müssen. @Model
-Datenklassen, ist gleich, Hashcode usw.- Wie kann ich dafür sorgen, dass einige Eigenschaften „beobachtet“ werden und andere nicht?
- Wie lege ich fest, ob strukturelle und referenzielle Gleichheit in der Beobachtung verwendet werden soll?
- Reduziert „Magie“ im System. Würde die Wahrscheinlichkeit verringern, dass jemand annimmt, dass das System intelligenter ist als es ist (d. h., es wüsste, eine Liste zu vergleichen)
- Macht die Granularität der Beobachtung intuitiver.
- Verbessert die Refaktorierbarkeit von Variablen -> Property der Klasse
- Gibt möglicherweise Möglichkeiten für handgefertigte zustandsspezifische Optimierungen frei
- Passt besser zum Rest des Ökosystems und reduziert die Ambiguität in Bezug auf unveränderliche oder uns „veränderliche Zustand“.
Hinweise zur Migration
Fast alle bestehenden Nutzungen von
@Model
werden auf eine von zwei Arten transformiert. Das folgende Beispiel hat eine@Model
-Klasse mit zwei Attributen, die nur für dieses Beispiel genutzt werden, und die in einer zusammensetzbaren Funktion verwendet wird.@Model class Position( var x: Int, var y: Int ) @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
Alternative 1:
State<OriginalClass>
verwenden und Kopien erstellen.Dieser Ansatz wird durch die Datenklassen von Kotlin vereinfacht. Im Wesentlichen wandeln Sie alle zuvor
var
-Properties inval
-Properties einer Datenklasse um, verwenden dannstate
anstelle vonremember
und weisen den Statuswert geklonten Kopien des Originals mithilfe der Datenklasse-copy(...)
-Methode zu.Beachten Sie, dass dieser Ansatz nur funktioniert, wenn die einzigen Mutationen an dieser Klasse im selben Bereich wie die
State
-Instanz vorgenommen wurden. Wenn sich die Klasse intern außerhalb des Anwendungsbereichs ändert und Sie sich auf diese Beobachtung verlassen, ist der nächste Ansatz der richtige Ansatz, den Sie verwenden werden.data class Position( val x: Int, val y: Int ) @Composable fun Example() { var p by state { Position(0, 0) } PositionChanger( position=p, onXChange={ p = p.copy(x=it) } onYChange={ p = p.copy(y=it) } ) }
Alternative 2: „MadableStateOf“ und Property-Bevollmächtigte verwenden
Dieser Ansatz wird durch die Property-Delegaten von Kotlin und die
mutableStateOf
API vereinfacht, mit der Sie MutableState-Instanzen außerhalb der Komposition erstellen können. Ersetzen Sie im Wesentlichen allevar
-Properties der ursprünglichen Klasse durchvar
-Properties mitmutableStateOf
als Property-Delegaten. Dies hat den Vorteil, dass sich die Verwendung der Klasse überhaupt nicht ändert, sondern nur ihre interne Implementierung. Das Verhalten ist jedoch nicht ganz mit dem ursprünglichen Beispiel identisch, da jetzt jede Property einzeln beobachtet/abonniert wird. Daher könnten die Neuzusammensetzungen, die Sie nach dieser Refaktorierung sehen, enger gefasst sein (eine gute Sache).class Position(x: Int, y: Int) { var x by mutableStateOf(x) var y by mutableStateOf(y) } // source of Example is identical to original @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
(I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/7143263) b/143263}
Ändert die Strategie zur Codegenerierung des Compose-Compilers. Vor der Änderung hat der Compiler Aufrufe in zusammensetzbare Funktionen transformiert. Mit dieser Änderung transformieren wir jetzt den Text einer zusammensetzbaren Funktion und lassen die Aufrufsite (meistens) unverändert.
Das bedeutet, dass die meiste Logik der Kommunikation mit der Compose-Laufzeit am Anfang des Funktionstexts und nicht auf der Aufrufseite stattfindet.
Die Änderung sollte mit der Quelle kompatibel sein, wenn Sie den Editor verwenden. Die meisten Nutzer des Editors sollten aufgrund dieser Änderung keinen Code aktualisieren müssen.
Um diese Arbeit zu unterstützen, wurde die JVM-Signatur aller zusammensetzbaren Funktionen geändert. Eine zusammensetzbare Funktion, die einen einzelnen Parameter akzeptiert, wird in eine Funktion umgewandelt, die drei Parameter akzeptiert. Die zusätzlichen Parameter sind der Composer, eine „Schlüssel“-Ganzzahl. Eine Bitmasken-Ganzzahl, die zur Weitergabe von Metadaten durch Aufrufe verwendet wird.
„Compose“ wandelt jetzt auch Standardargumente in eine zusammensetzbare Funktion um. Dies geschieht, ohne eine zusätzliche synthetische Standardüberlastung der Funktion selbst einzuführen, sodass diese Änderung dazu führt, dass weniger Funktionen definiert werden.
Bekannte beabsichtigte Verhaltensänderungen, die sich daraus ergeben:
- Einige Anrufe werden an der Stelle übersprungen, an der sie vorher nicht gekommen wären
- Zusammensetzbare Ausdrücke in Standardargumentausdrücken werden jetzt korrekt abonniert und verarbeitet
Im Rahmen dieser Arbeit wurden einige Optimierungen vorgenommen: 1. Das Ergebnis von Vergleichen von Parametern wird über die Aufrufgrafik an andere zusammensetzbare Funktionen weitergegeben. Dies führt zu weniger Vergleichen während der Laufzeit, verringert die Größe der Slottabelle und es werden häufiger zusammensetzbare Funktionen übersprungen, die zuvor nicht übersprungen wurden. 2. Parameter, die zum Zeitpunkt der Kompilierung als „statisch“ eingestuft werden, werden nicht mehr in der Laufzeit verglichen oder gespeichert. Dies reduziert die Anzahl der Vergleiche und verringert die Größe der Slot-Tabelle. 3. Die Ablaufstruktur des Funktionskörpers wird verwendet, um die Anzahl der generierten Gruppen zu minimieren. Dadurch wird die Größe der Slottabelle verringert und die Laufzeit reduziert 4. Nicht verwendete Weiterleitungs- und Empfängerparameter für Funktionen werden bei der Bestimmung der Überspringbarkeit der Funktion nicht berücksichtigt, wenn sie nicht innerhalb des Hauptteils der Funktion verwendet werden.
Die meisten funktionsgefährdenden Änderungen betreffen APIs, auf die der Compiler direkt abzielt. Die typische Verwendung des Editors ist davon nicht betroffen: 1. Composer::startExpr wurde entfernt. 2. Composer::endExpr wurde entfernt. 3. Composer::call wurde eingestellt 4. Die Nicht-varargs-Überlasten von
key
wurden entfernt. Verwende ab sofort dievararg
-Version. 5. Die Pivotal-Anmerkung wurde eingestellt. Du kannstkey
als Ersatz verwenden. 6. ScopeUpdateScope::updateScope wurde geändert und erwartet nun eine Function3-Funktion anstelle von Function1. 7. neustartableFunction und erneutstartableFunctionN wurden aktualisiert, um zusätzliche Kompilierungszeitparameter aufzunehmen. (I60756, b/143464846)"sortWith" und "removeRange" wurden zu MutableVector hinzugefügt (Icccf7).
Implementierungen der Standardmethoden für CompositionLifecycleObserver (I24289)
Applier erfordert jetzt eine Clear()-Methode für die Entsorgung Kompositionen (Ibe697)
asMutableList() wurde zu MutableVector hinzugefügt, um dies zuzulassen. an die öffentliche API übergeben werden, ohne die gesamte Liste. (I298df)
Das Element „memoryCoroutineScope()“ wurde hinzugefügt, um ein verwaltetes Element zu erhalten. CoroutineScope in der Zusammensetzung zum Starten von Jobs als Reaktion auf Ereignisse. (I0e264)
MutableVector ist eine neue Sammlung, die eine der Standard-Collection-Schnittstellen zu implementieren. Dieses dass die Datensammlung schneller ist als die nur in internen Implementierungen verwendet werden dürfen. (I8ebd6)
StableMutableList
undStableMutableMap
wurden vorübergehend entfernt um Probleme in der Kotlin-Composer-Version zu vermeiden. Diese Nach der Aktualisierung auf eine Version werden neue Benutzeroberflächen eingeführt. in denen dieses Problem nicht auftritt.SnapshotStateList
undSnapshotStateMap
sind jetzt öffentlich, werden aber eingestellt, sobaldStableMutableList
undStableMutableMap
wiederhergestellt wurden. (Ia7769)Übergeordnete withFrameNanos-Funktion für das Animations-Timing hinzufügen (Ie34c5)
Die Anmerkung „@Untracked“ wurde eingestellt. Durch @ComposableContract(tracked=false) ersetzen (Id211e)
RestartableFunction und die zugehörigen APIs wurden in ComposableLambda usw. umbenannt. Diese APIs wurden nur vom Compiler angegriffen, sodass sich dies normalerweise nicht auf die Kompatibilität auf Quellebene auswirken sollte. Durch die Umbenennung soll in erster Linie vermittelt werden, welche Klasse diese Klasse besser ist, wenn sie in Stacktraces angezeigt wird (I7eb25).
@Composable-Annotation ist für Klassen nicht mehr gültig (Ia5f02)
Ambient<T>
ist jetzt @Stabil statt @Unveränderlich (I0b4bb)Vor dieser Änderung hat das Compiler-Plug-in Aufrufe an Konstruktoren innerhalb einer @Composable-Funktion nicht triviale abgefangen, wenn ein (I5205a, b/158123804) vorhanden war.
Die zusammensetzbare Funktion „Neu zusammensetzen“ ist keine nützliche Abstraktion mehr. Die Neuzusammensetzung sollte in der Regel als Ergebnis von MutableState-Zuweisungen erfolgen. Für alle anderen Bereiche wird empfohlen, die
invalidate
-Funktion zu verwenden, um eine Neuzusammensetzung des aktuellen Bereichs auszulösen. (Ifc992)„Beobachtung“ ist keine nützliche Abstraktion mehr. Wenn Sie sie replizieren müssen, kann ihre Implementierung repliziert werden, indem Sie einfach eine zusammensetzbare Funktion erstellen, die einen zusammensetzbaren Lambda-Parameter ausführt. Beispiel:
@Composable fun Observe(body: @Composable () -> Unit) = body()
(I40d37)@Direct wurde zugunsten von @ComposableContract(restartable=false) eingestellt (If4708)
Es wurde ein Adapter für den kürzlich eingeführten StateFlow hinzugefügt, der es ermöglicht, den Anfangswert vorab auszufüllen, sodass der zurückgegebene Status keine Nullwerte zulässt (I61dd8, b/156233789).
Ein Adapter für Flow wurde hinzugefügt. Beispiel für die Verwendung: val-Wert durch „flow.collectAsState()“ (If2198, b/153375923)
[Mutable]Operatoren für Bevollmächtigte von Statuseigenschaften wurden in Erweiterungen verschoben zur Unterstützung von Optimierungen für Kotlin 1.4-Property-Delegationen. Aufrufer müssen Folgendes hinzufügen: um
by state { ... }
oderby mutableStateOf(...)
weiterhin zu verwenden. (I5312c)androidx.compose.ViewComposer wurde nach androidx.ui.node.UiComposer verschoben „androidx.compose.Emittable“ wurde entfernt. Er war redundant mit ComponentNode. „androidx.compose.ViewAdapters“ wurde entfernt. Sie werden nicht mehr unterstützt. Compose.composeInto wurde eingestellt. Verwende stattdessen
setContent
odersetViewContent
. „Compose.disposeComposition“ wurde eingestellt. Verwenden Sie stattdessen die Methodedispose
für dieComposition
, die vonsetContent
zurückgegeben wird. androidx.compose.Compose.subcomposeInto wurde zu androidx.ui.core.subcomposeInto verschoben ComponentNode#emitInsertAt wurde in ComponentNode#insertAt umbenannt. ComponentNode#emitRemoveAt wurde in ComponentNode#removeAt umbenannt. ComponentNode#emitMode wurde in ComponentNode#move (Idef00) umbenannt.Das Flag
ComposeFlags.COMPOSER_PARAM
wurde auftrue
aktualisiert. Dadurch wird die Strategie zur Codegenerierung für das Editor-Plug-in geändert. Auf übergeordneter Ebene werden @Composable-Funktionen mit einem zusätzlichen synthetischen Parameter generiert, der an nachfolgende @Composable-Aufrufe übergeben wird, damit die Laufzeit die Ausführung ordnungsgemäß verwalten kann. Dies ist eine erhebliche funktionsgefährdende Änderung, die jedoch bei jeder genehmigten Verwendung des Editors auf Quellebene die Kompatibilität beibehalten sollte. (I7971c)Nicht abwärtskompatible Änderungen an der Ambients API. Weitere Informationen finden Sie in der Protokoll- und
Ambient<T>
-Dokumentation (I4c7ee, b/143769776).ui-livedata wurde hinzugefügt: neues Artefakt mit einem Adapter für LiveData. Beispiel für die Verwendung: val-Wert von liveData.observeAsState() (Ie9e8c, b/150465596)
Rx-Adapter ohne expliziten Anfangswert wurden eingestellt. Die Verwendung von null ist nicht immer die beste Standardeinstellung. Wenn Sie beispielsweise eine Liste haben, ist es besser, mit emptyList() oder einem anderen angemessenen Standardwert zu beginnen (I00025, b/161348384).
ui-rxjava2 wurde hinzugefügt – neues Artefakt mit Adaptern für RxJava2. Beispiel für die Verwendung: val-Wert durch beobservable.subscriptionAsState() (Ifab4b, b/153369097)
savedInstanceState()
kann jetzt mit Typen verwendet werden, für die Nullwerte zulässig sind (I6847f, b/153532190).Neue listSaver() und mapSaver() zum einfacheren Schreiben benutzerdefinierter Saver-Objekte (I8cf68, b/152331508)
Neue Funktionen: savedInstanceState() und memorySavedInstanceState(). Sie ähneln state() und memory(), haben aber eine integrierte Unterstützung für den Status gespeicherter Instanzen (If1987, b/152025209).
Fehlerkorrekturen
runOnIdleCompose
umbenannt inrunOnIdle
(I83607)- Experimentelle LayoutNode-API erstellt (I4f2e9)
- androidx.ui.foundation.TextFieldValue und „androidx.ui.input.EditorValue“ wurde eingestellt. „TextField“, Zusammensetzbare Funktionen von FilledTextField und CoreTextField, bei denen wird dieser Typ ebenfalls nicht mehr unterstützt. Bitte verwenden Sie Stattdessen androidx.ui.input.TextFieldValue (I4066d, b/155211005)
- Veraltete DrawBackground-Funktion entfernt API zugunsten der Erweiterung „drawBackground“ APIs auf Modifier. Refaktoriert Farbe, Pinsel und Zeichnen, Zeichnen, Hintergrund Implementierungen, um auch Codepfade zu reduzieren da der Modifizierer zum Entfernen erforderlich ist. als Teil der Komposition. (I0343a)
- Höhere Ebene aktualisiert APIs erstellen, die einen Canvas für CanvasScope. Dadurch wird Folgendes entfernt: die Notwendigkeit, dass die Verbraucher eigenen Paint-Objekten erstellen. Für Verbraucher, die benötigen weiterhin Zugriff auf einen Canvas, können sie die Erweiterung „drawCanvas“ verwenden, -Methode, die einen Callback des Problems liefert Zeichenbefehle mit der zugrunde liegenden Canvas (I80afd)
- Die nachgestellte Lambda API mit Einschränkungen wurde geändert. Jetzt hat es anstelle von zwei Parametern einen Empfängerbereich, der zusätzlich zu den Einschränkungen und „layoutDirection“ die Eigenschaften „minWidth“, „maxWidth“, „minHeight“ und „maxHeight“ in dp bereitstellt (I91b9a, b/149979702).
- Modifikator für symmetrischen Abstand wurde hinzugefügt. (I39840)
- „wrapContentWidth“ und „wrapContentHeight“ wurden aktualisiert und sind nun mit der vertikalen oder horizontalen Ausrichtung anstelle der Ausrichtung zu erwarten. Der Schwerkraftmodifikator wurde aktualisiert und akzeptiert nun die vertikale oder horizontale Ausrichtung. Zeilen, Spalten und Stapel wurden aktualisiert, um benutzerdefinierte fortlaufende Ausrichtungen zu unterstützen. (Ib0728)
- Modul ui-text wurde in ui-text-core umbenannt (I57dec).
- DrawModifier API verbessern:
<ph type="x-smartling-placeholder">
- </ph>
- Der Empfängerumfang für „draw() ContentDrawScope“ wurde erstellt.
- Alle Parameter fürdraw() wurden entfernt.
- DrawScope hat dieselbe Oberfläche wie der frühere CanvasScope.
- ContentDrawScope verfügt über die Methode „drawContent()“ (Ibaced, b/152919067).
- „ColoredRect“ wurde eingestellt. Verwende stattdessen
Box(Modifier.preferredSize(width, height).drawBackground(color))
. (I499fa, b/152753731) - Modifikator plus Operator durch Factory-Erweiterungsfunktionen ersetzt (I225e4)
- RowScope- und ColumnScope-Mitglieder sind jetzt außerhalb von Zeile und Spalte zugänglich. (I3a641)
- LayoutFlexible wurde in LayoutWeight umbenannt. Zum Ausfüllen muss enger Parameter umbenannt werden. (If4738)
- WithConstraints hat den LayoutDirection-Parameter erhalten (I6d6f7)
- Hintergrund wurde in DrawBackground umbenannt und zum Standardspeicher gemacht (Ia0bd3).
- Ersetzen von ButtonStyle durch eigene Funktionen und entfernte Textüberlastung (Zeichenfolge). Informationen zur Nutzung finden Sie in den aktualisierten Beispielen. (If63ab, b/146478620, b/146482131)
runOnIdleCompose
undrunOnUiThread
sind jetzt globale Funktionen anstelle von Methoden in ComposeTestRule. (Icbe8f)
Externer Beitrag
- Entfernen Sie nicht benötigte APIs wie Looper und Handler aus der Portierungsebene der Compose-Laufzeit (I6847d).
Flow<T>.collectAsState()
ohne Anfangswert verwerfen. Verwenden Sie stattdessenStateFlow<T>
oder übergeben Sie einen expliziten Anfangswert. (I63f98, b/157674865)