Crea runtime
androidx.compose.runtime
androidx.compose.runtime.rxjava2
androidx.compose.runtime.rxjava3
androidx.compose.runtime.saveable
androidx.compose.runtime.snapshots
(Consulta la documentazione di riferimento delle API per tutti i pacchetti di scrittura)
Aggiornamento più recente | Release stabile | Candidato per l'uscita | Versione beta | Release alpha |
---|---|---|---|---|
4 settembre 2024 | 1.7.0 | - | - | 1.8.0-alpha01 |
Struttura
Compose è una combinazione di 7 ID gruppo Maven all'interno di androidx
. Ogni gruppo
contiene un sottoinsieme di funzionalità target, ciascuna con il proprio insieme di funzionalità
note.
Questa tabella illustra i gruppi e i link a ciascun insieme di note di rilascio.
Gruppo | Descrizione |
---|---|
compose.animation | Crea animazioni nelle applicazioni Jetpack Compose per arricchire l'esperienza utente. |
compose.compiler | Trasforma le funzioni @Composable e abilita le ottimizzazioni con un plug-in del compilatore Kotlin. |
compose.foundation | Scrivi applicazioni Jetpack Compose con componenti di base pronti all'uso ed estende le basi per creare i tuoi componenti di sistema di progettazione. |
compose.material | Crea UI di Jetpack Compose con componenti Material Design pronti per l'uso. Si tratta del punto di ingresso di livello superiore di Compose, progettato per fornire componenti corrispondenti a quelli descritti all'indirizzo www.material.io. |
compose.material3 | Crea UI di Jetpack Compose con Material Design 3 Components, la prossima evoluzione di Material Design. Material 3 include temi e componenti aggiornati, nonché funzionalità di personalizzazione di Material You, come il colore dinamico, ed è progettato per essere coerente con il nuovo stile visivo e la nuova UI di sistema di Android 12. |
compose.runtime | Componenti di base di base del modello di programmazione e della gestione dello stato di Compose, nonché del runtime principale per il targeting del plug-in Compose Compiler. |
compose.ui | I componenti fondamentali dell'interfaccia utente di scrittura erano necessari per interagire con il dispositivo, tra cui layout, disegno e input. |
Dichiarazione delle dipendenze
Per aggiungere una dipendenza su Compose, devi aggiungere il Repository Maven di Google al tuo progetto. Consulta il Repository Maven di Google per ulteriori informazioni.
Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle
per
l'app o il modulo:
Alla moda
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" } }
Per saperne di più sulle dipendenze, consulta Aggiungere dipendenze build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Non esitare a contattarci in caso di nuovi problemi o idee per migliorare questa raccolta. Dai un'occhiata alle problemi esistenti in questa raccolta, prima di crearne uno nuovo. Puoi aggiungere il tuo voto a un problema esistente tramite facendo clic sul pulsante a forma di stella.
Consulta la documentazione di Issue Tracker per ulteriori informazioni.
Tracciamento del runtime versione 1.0
Versione 1.0.0-beta01
29 novembre 2023
Viene rilasciato androidx.compose.runtime:runtime-tracing:1.0.0-beta01
. La versione 1.0.0-beta01 contiene questi commit.
Versione 1.0.0-alpha05
15 novembre 2023
Viene rilasciato androidx.compose.runtime:runtime-tracing:1.0.0-alpha05
. La versione 1.0.0-alpha05 contiene questi commit.
Correzioni di bug
- Dipendenze bloccate alle versioni stabili supportate più basse (ad es. write-runtime e tracing-perfetto), per la risoluzione di un problema per cui il tracciamento del runtime di composizione comportava l'inserimento nell'app di una versione più recente del runtime di composizione.
Versione 1.0.0-alpha04
23 agosto 2023
Viene rilasciato androidx.compose.runtime:runtime-tracing:1.0.0-alpha04
. La versione 1.0.0-alpha04 contiene questi commit.
Nuove funzionalità
- Compatibile con le ultime versioni di Benchmark e Tracciamento Perfetto, che attiva il supporto per il tracciamento della composizione all'avvio dell'app (avvio a freddo), ad esempio in AndroidX Benchmark e Android Studio (a partire da Hedgehog Beta 2).
Modifiche alle API
androidx.tracing.perfetto.Trace
rinominato inandroidx.tracing.perfetto.PerfettoSdkTrace
. (I44af8)- Rendi coerenti le API dell'SDK Tracciamento Perfetto con
android.os.Trace
. (I73ba0, b/282199917) - Prerequisiti per il tracciamento all'avvio dell'app. (Iad890)
- File API sperimentali e pubblici uniti (I0f2e1, b/278769092)
Versione 1.0.0-alpha02
8 febbraio 2023
Viene rilasciato androidx.compose.runtime:runtime-tracing:1.0.0-alpha02
. La versione 1.0.0-alpha02 contiene questi commit.
Nuove funzionalità
- Nessuna modifica funzionale. Ottimizzazioni multiple delle prestazioni nelle dipendenze downstream
androidx.tracing:tracing-perfetto*
.
Versione 1.0.0-alpha01
7 settembre 2022
Viene rilasciato androidx.compose.runtime:runtime-tracing:1.0.0-alpha01
. La versione 1.0.0-alpha01 contiene questi commit.
Nuove funzionalità
androidx.compose.runtime:runtime-tracing
è una libreria che, in presenza di strumenti a supporto (disponibile a breve), consente il tracciamento esteso in un'app Compose. Questa versione iniziale è la 1.0.0-alpha01.
Versione 1.8
Versione 1.8.0-alpha01
4 settembre 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.8.0-alpha01
. La versione 1.8.0-alpha01 contiene questi commit.
Versione 1.7
Versione 1.7.0
4 settembre 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.7.0
. La versione 1.7.0 contiene questi commit.
Modifiche importanti dalla versione 1.6.0
- È stata aggiunta la possibilità di fornire una composizione locale che viene calcolata in base ai valori di altri locali della composizione per impostazione predefinita, utilizzando
compositionLocalWithComputedDefault()
o fornendo una lambda da utilizzare per calcolare il valore utilizzandoprovidesComputed
anzichéprovides
. - Il valore di una composizione locale può essere ottenuto utilizzando la proprietà
currentValue
della composizione locale accessibile dalla funzione lambda calcolando il valore. Viene utilizzato al posto dicurrent
, che è accessibile solo nelle funzioni@Composable
. (Iadbc0) - Gli oggetti di stato appena creati sono immediatamente accessibili da altri snapshot, compreso quello globale, con il loro stato iniziale. Eventuali modifiche successive non sono visibili finché non viene applicato lo snapshot in cui è stato creato l'oggetto.
- Lo stato iniziale di
mutableStateOf()
e le relative versioni originarie corrispondono al valore trasmesso come parametro amutableStateOf()
. Lo stato iniziale dimutableStateListOf()
emutableStateMapOf()
è vuoto. - Sono stati aggiunti
Snapshot.isInSnapshot
eSnapshot.PreexistingSnapshotId
, utilizzati per abilitare un oggetto di stato in modo da supportare l'accesso immediato dallo snapshot globale al momento della creazione. - Gli oggetti di stato personalizzati possono supportare l'accesso immediato seguendo il pattern delle modifiche apportate agli oggetti snapshot integrati. (I84a17)
- Attiva
nonSkippingGroupOptimization
per le librerie di scrittura. In questo modo, il codice generato per tutte le funzioni componibili non riavviabili in Androidx è più efficiente. In futuro prevediamo di attivare questa funzionalità per impostazione predefinita. I(acbc08) - Annulla la convalida di lambda componibili nelle sottocomposizioni nello stesso frame. (98301c)
- Chiama il callback di
onRelease
nello stesso ordine del numeroonForgotten
. (2cd790) - Attiva la modalità di salto forte (ed1766)
- Rendi
currentCompoundHashKey
unico in più casi (d4a872)
Versione 1.7.0-rc01
21 agosto 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.7.0-rc01
. La versione 1.7.0-rc01 contiene questi commit.
Versione 1.7.0-beta07
7 agosto 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.7.0-beta07
. La versione 1.7.0-beta07 contiene questi commit.
Versione 1.7.0-beta06
24 luglio 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.7.0-beta06
. La versione 1.7.0-beta06 contiene questi commit.
Versione 1.7.0-beta05
10 luglio 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.7.0-beta05
. La versione 1.7.0-beta05 contiene questi commit.
Versione 1.7.0-beta04
26 giugno 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.7.0-beta04
. La versione 1.7.0-beta04 contiene questi commit.
Versione 1.7.0-beta03
12 giugno 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.7.0-beta03
. La versione 1.7.0-beta03 contiene questi commit.
Versione 1.7.0-beta02
29 maggio 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.7.0-beta02
. La versione 1.7.0-beta02 contiene questi commit.
Versione 1.7.0-beta01
14 maggio 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.7.0-beta01
. La versione 1.7.0-beta01 contiene questi commit.
Versione 1.7.0-alpha08
1° maggio 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.7.0-alpha08
. La versione 1.7.0-alpha08 contiene questi commit.
Versione 1.7.0-alpha07
17 aprile 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.7.0-alpha07
. La versione 1.7.0-alpha07 contiene questi commit.
Nuove funzionalità
- È stata aggiunta la possibilità di fornire una composizione locale che viene calcolata in base ai valori di altri locali della composizione per impostazione predefinita, utilizzando
compositionLocalWithComputedDefault()
o fornendo una lambda da utilizzare per calcolare il valore utilizzandoprovidesComputed
anzichéprovides
. - Il valore di una composizione locale può essere ottenuto utilizzando la proprietà
currentValue
della composizione locale accessibile dalla funzione lambda calcolando il valore. Viene utilizzato al posto dicurrent
, che è accessibile solo nelle funzioni@Composable
. (Iadbc0)
Modifiche alle API
- Gli oggetti di stato appena creati sono immediatamente accessibili da altri snapshot, compreso quello globale, con il loro stato iniziale. Eventuali modifiche successive non sono visibili finché non viene applicato lo snapshot in cui è stato creato l'oggetto.
- Lo stato iniziale di
mutableStateOf()
e le relative versioni originarie corrispondono al valore trasmesso come parametro amutableStateOf()
. Lo stato iniziale dimutableStateListOf()
emutableStateMapOf()
è vuoto. - Sono stati aggiunti
Snapshot.isInSnapshot
eSnapshot.PreexistingSnapshotId
, utilizzati per abilitare un oggetto di stato in modo da supportare l'accesso immediato dallo snapshot globale al momento della creazione. - Gli oggetti di stato personalizzati possono supportare l'accesso immediato seguendo il pattern delle modifiche apportate agli oggetti snapshot integrati. (I84a17)
Correzioni di bug
- È stata corretta l'unione di
readObserver
negli snapshot nidificati. Di conseguenza, gli stati derivati nidificati venivano considerati non validi in caso di utilizzo all'interno di un elementosnapshotFlow
. (Idf138)
Versione 1.7.0-alpha06
3 aprile 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.7.0-alpha06
. La versione 1.7.0-alpha06 contiene questi commit.
Correzioni di bug
- La correzione fornisce singoli valori che gestiscono
providesDefault
(538f45) - Evita un deadlock nel Recomposer che accede all'orologio del frame (07e5c6)
Versione 1.7.0-alpha05
20 marzo 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.7.0-alpha05
. La versione 1.7.0-alpha05 contiene questi commit.
Correzioni di bug
- Cancella le modifiche tardive sulla composizione disattivata (5950bc)
Versione 1.7.0-alpha04
6 marzo 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.7.0-alpha04
. La versione 1.7.0-alpha04 contiene questi commit.
Miglioramenti del rendimento
- Chiama
Snapshot.current
una volta per valutazione dello stato derivato (ee7daf) - Leggi
currentRecord
una volta per ogni osservazione nella composizione (b882b2) - Rimuovi l'allocazione accidentale degli iteratori in
snapshotFlow
(231e56) - Attiva
nonSkippingGroupOptimization
per le librerie di scrittura. In questo modo, il codice generato per tutte le funzioni componibili non riavviabili in Androidx è più efficiente. In futuro prevediamo di attivare questa funzionalità per impostazione predefinita. I(acbc08)
Versione 1.7.0-alpha03
21 febbraio 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.7.0-alpha03
. La versione 1.7.0-alpha03 contiene questi commit.
Modifiche alle API
- Introduci un gruppo di sostituzione per migliorare il rilevamento delle modifiche (0941b5)
Miglioramenti del rendimento
- Migliora l'allocazione della memoria durante il rilevamento delle modifiche (53e7fd)
- Correzione di una perdita di memoria nel compositore (0e097d)
- Utilizza
ScopeMap
per superare le invalidazioni durante la ricomposizione (e19a7e) - Ottimizza la mappa delle invalidazioni in modo da mantenere solo gli stati derivati (f11c44)
- Sostituisci gli utilizzi di
IdentityArraySet
conScatterSet
(db572e) - Ottimizza
removeScope
inScopeMap
(bb0530)
Versione 1.7.0-alpha02
7 febbraio 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.7.0-alpha02
. La versione 1.7.0-alpha02 contiene questi commit.
Correzioni di bug
- Annulla la convalida di lambda componibili nelle sottocomposizioni nello stesso frame. (98301c)
- Chiama il callback di
onRelease
nello stesso ordine del numeroonForgotten
. (2cd790) - Filtra gli stati modificati che non sono osservati in
snapshotFlow
. (796b80)
Miglioramenti del rendimento
- Modifica l'osservatore snapshot quando è già trasparente. (F60f30)
- Ottimizza
SnapshotIdSet.lowest()
. (7ae149). - Utilizza
fold()
senza allocazione inSnapshotIdSet
. (532b7d). - Rimuovi allocazione dell'iteratore (83f96b)
Versione 1.7.0-alpha01
24 gennaio 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.7.0-alpha01
. La versione 1.7.0-alpha01 contiene questi commit.
Ottimizzazioni del rendimento
- Aggiunta della possibilità di creare spazi dopo l'aggiunta di un gruppo secondario (b5960c)
- Ottimizza le modifiche della registrazione degli stati delle istantanee (28c3fe)
- Attiva la modalità di salto forte (ed1766)
Correzioni di bug
- Prendi in considerazione il meta parametro predefinito nel ricordo intrinseco (096665)
- Rendi
currentCompoundHashKey
unico in più casi (d4a872) - Crea gruppi all'uscita dalla chiamata di funzione in linea (2a90fc)
Versione 1.6
Versione 1.6.8
12 giugno 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.6.8
. La versione 1.6.8 contiene questi commit.
Versione 1.6.7
1° maggio 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.6.7
. La versione 1.6.7 contiene questi commit.
Versione 1.6.6
17 aprile 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.6.6
. Nessuna modifica dall'ultima release.
Versione 1.6.5
3 aprile 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.6.5
. La versione 1.6.5 contiene questi commit.
Versione 1.6.4
20 marzo 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.6.4
. La versione 1.6.4 contiene questi commit.
Versione 1.6.3
6 marzo 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.6.3
. La versione 1.6.3 contiene questi commit.
Versione 1.6.2
21 febbraio 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.6.2
. La versione 1.6.2 contiene questi commit.
Versione 1.6.1
7 febbraio 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.6.1
. La versione 1.6.1 contiene questi commit.
Correzioni di bug
- Chiama il callback di
onRelease
nello stesso ordine del numeroonForgotten
. (2cd790) - Filtra gli stati modificati che non sono osservati in
snapshotFlow
. (796b80)
Versione 1.6.0
24 gennaio 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.6.0
. La versione 1.6.0 contiene questi commit.
Modifiche importanti dalla versione 1.5.0
Nuove funzionalità
- Rigenera eccezioni che vengono ingerite durante il ciclo di ricomposizione (4dff9a)
Ottimizzazioni del rendimento
- Ottimizza le modifiche della registrazione degli stati delle istantanee (28c3fe)
- Ottimizza
rememberSaveable
(f01d79) - Rimanda la rilettura degli stati derivati fino alla registrazione delle modifiche (f38099)
- Migliora l'inserimento di valori locali di composizione (a337ea)
Correzioni di bug
- Correggi la perdita di memoria della tabella degli slot (73fcfe)
- Salta la ricomposizione delle sottocomposizioni che verranno rimosse. (Ieeb99, b/254645321)
- Attiva i cicli di vita di
RememberObserver
solo se viene archiviato nel calcolo di memorizzazione. (f6b4dc) - Limita l'acquisizione di
$dirty
alle funzioni lambda in linea. (acfca0) - Correggi i contenuti spostabili che a volte ricevono una composizione errata. (035cd6)
Versione 1.6.0-rc01
10 gennaio 2024
Viene rilasciato androidx.compose.runtime:runtime-*:1.6.0-rc01
. La versione 1.6.0-rc01 contiene questi commit.
Versione 1.6.0-beta03
13 dicembre 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.6.0-beta03
. La versione 1.6.0-beta03 contiene questi commit.
Versione 1.6.0-beta02
29 novembre 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.6.0-beta02
. La versione 1.6.0-beta02 contiene questi commit.
Versione 1.6.0-beta01
15 novembre 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.6.0-beta01
. La versione 1.6.0-beta01 contiene questi commit.
Modifiche alle API
- Propaga determinati valori di stabilità nell'annotazione. (274a4c)
Correzioni di bug
- Utilizza il criterio di riferimento per lo stato della composizione nell'ambito locale nel contesto. (83361c)
- Limita l'acquisizione di $dirty alle funzioni lambda in linea. (acfca0)
- Correggi i contenuti spostabili che a volte ricevono una composizione errata. (035cd6)
- Utilizza mappe hash non allocabili più veloci in
RecomposeScopeImpl
. (d79494) - Utilizza
ObjectIntMap
inDerivedState
. (21862e) - Utilizza
IntRef
per l'intSnapshotThreadLocal
inDerivedState
. (04eaf4)
Versione 1.6.0-alpha08
18 ottobre 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.6.0-alpha08
. La versione 1.6.0-alpha08 contiene questi commit.
Correzioni di bug
- Attiva i cicli di vita di
RememberObserver
solo se viene archiviato nel calcolo di memorizzazione. (f6b4dc) - Migliora le allocazioni nell'ordinamento degli elenchi di invalidazioni. (954d63)
- Utilizza nuove mappe non allocate in
SnapshotStateObserver
. (4303ce) - Cancella gli annullamenti quando la composizione viene disattivata. (e001be).
Versione 1.6.0-alpha07
4 ottobre 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.6.0-alpha07
. La versione 1.6.0-alpha07 contiene questi commit.
Modifiche alle API
SnapshotStateList
è ora contrassegnato comeRandomAccess
per consentire l'utilizzo della versione di indicizzazione diretta degli assistenti elenchi. (I5210c, b/219554654)
Versione 1.6.0-alpha06
20 settembre 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.6.0-alpha06
. La versione 1.6.0-alpha06 contiene questi commit.
Versione 1.6.0-alpha05
6 settembre 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.6.0-alpha05
. La versione 1.6.0-alpha05 contiene questi commit.
Versione 1.6.0-alpha04
23 agosto 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.6.0-alpha04
. La versione 1.6.0-alpha04 contiene questi commit.
Nuove funzionalità
- Rigenera eccezioni che vengono ingerite durante il ciclo di ricomposizione (4dff9a)
Modifiche alle API
- È stato aggiunto un metodo per disattivare
ReusableComposition
, rimuovendo le osservazioni ma mantenendo i nodi in posizione. La composizione disattivata può essere riattivata chiamando il numerosetContent
. (Ib7f31) - Aggiungi l'interfaccia
ReusableComposition
per la gestione del ciclo di vita e il riutilizzo delle sottocomposizioni. (I812d1, b/252846775)
Versione 1.6.0-alpha03
9 agosto 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.6.0-alpha03
. La versione 1.6.0-alpha03 contiene questi commit.
Correzioni di bug
- Correggi la nuova ottimizzazione di
CompositionLocalProvider
(3118e88) - Correggere il modo in cui i nodi di contenuti mobili vengono disassemblati. (5e3d59b).
Versione 1.6.0-alpha02
26 luglio 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.6.0-alpha02
. La versione 1.6.0-alpha02 contiene questi commit.
Nuove funzionalità e Miglioramenti delle prestazioni
- Ottimizza
rememberSaveable
(f01d79) - Rimanda la rilettura degli stati derivati fino alla registrazione delle modifiche (f38099)
- Migliora l'inserimento di valori locali di composizione (a337ea)
SideEffect
è contrassegnato come@ExplicitGroupsComposable
per evitare di generare un gruppo. (I74815)- Evita di confrontare le mappe locali della composizione sul riutilizzo (782071)
Modifiche alle API
- È stato aggiunto un sovraccarico di casi speciali per
CompositionLocalProviders
, che evita l'overhead utilizzato per velocizzare la fornitura di più valori, ma che costituisce un overhead quando viene fornito un singolo valore. (I6d640, b/288169379)
Correzioni di bug
- Correggi la perdita di memoria della tabella degli slot (73fcfe)
- Correggi il modo in cui ripristiniamo
rememberSaveable
quandostateSaver
restituisce null (90748c)
Versione 1.6.0-alpha01
21 giu 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.6.0-alpha01
. La versione 1.6.0-alpha01 contiene questi commit.
Correzioni di bug
- Salta la ricomposizione delle sottocomposizioni che verranno rimosse. (Ieeb99, b/254645321)
- Allocazioni ridotte durante l'applicazione degli snapshot. (I65c09)
- Evita di calcolare
readableHash
inDerivedState
se lo snapshot non è stato modificato (68c565)
Versione 1.5
Versione 1.5.4
18 ottobre 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.5.4
. La versione 1.5.4 contiene questi commit.
Versione 1.5.3
4 ottobre 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.5.3
. La versione 1.5.3 contiene questi commit.
Versione 1.5.2
27 settembre 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.5.2
. La versione 1.5.2 contiene questi commit.
Versione 1.5.1
6 settembre 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.5.1
. La versione 1.5.1 contiene questi commit.
Versione 1.5.0
9 agosto 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.5.0
. La versione 1.5.0 contiene questi commit.
Modifiche alle API
- Rimosse le allocazioni in ricomposizione, animazioni a colori e
AndroidComposeView
. (Ib2bfa) - È stata aggiunta un'annotazione
@StateFactoryMarker
per contrassegnare le funzioni che creano stati e devono essere aggregate in una chiamataremember
. (I64550) - Aggiungi le versioni primitive di State e
MutableState
(fb3d89) - Aggiunta
Snapshot.isApplyObserverNotificationPending
(I672a5) - Sono state aggiunte versioni primitive dell'API
State
, che consentono il tracciamento dei valori Int, Long, Float e Double negli oggettiState
senza incorrere in sanzioni per l'autoboxing. Per usare questi metodi, usa i nuovi metodi di fabbricamutableIntState(Int)
,mutableFloatStateOf(Float)
e così via. (I48e43)
Correzioni di bug
- Salta la ricomposizione delle sottocomposizioni che verranno rimosse. (Ieeb99, b/254645321)
- Non conservare il riferimento allo snapshot in
ComposerImpl
(0206f7) - Non applicare due volte la composizione (f5791b)
- Assicurati che l'annullamento della convalida per i valori di stato derivati non inizializzati (aa2a92)
- Chiama
onEndChanges
durante lo smaltimento della composizione. (62cc8c) - Risoluzione del problema dello spostamento di contenuti in una sottocomposizione (4beb41)
- Risolvere i potenziali deadlock (c1a425 e 8edce0)
- Il ricompositore creato per una finestra Android ora bloccherà solo le chiamate a
withFrameNanos
anziché a tutta la composizione quando riceve una notifica ON_STOP. Ciò significa che le finestre associate alle attività interrotte continueranno a ricomporsi per le modifiche dei dati, ma le animazioni, o qualsiasi altro chiamante diwithFrameNanos
, bloccheranno. (Id9e7f, b/240975572) - Esegui i callback di disattivazione per
LayoutNode
prima di eliminare gli effetti 3784073 - Correggi i flag modificati per le funzioni lambda riavviate ea81df9
- Correggi la regressione della modifica in tempo reale per Composable con nodi 73fd4d8
- ON_STOP dovrebbe mettere in pausa le trasmissioni dell'orologio del frame invece della composizione ae276f1
- Disattiva
SnapshotStateObserver
ambiti per gli stati derivati invariati 84d9b1c - Risolvere i potenziali blocchi durante lo smaltimento delle composizioni 28761fc
- Risoluzione del problema dello spostamento di contenuti in una sottocomposizione 92d4156
- Correggi i flag modificati per le funzioni lambda riavviate (8a03e9)
- Esegui i callback di disattivazione per
LayoutNode
prima di eliminare gli effetti (8b0fa4) - Correggi
endToMarker()
quando termini i gruppi di nodi. (D71d980) - Usa il gruppo
SlotWriter
attuale per controllare la disattivazione (a0b518b) - Rimuovi
fill
inSlotTable.moveSlotGapTo()
e chiudilo (81f9935) - Correggi gli errori di annullamento mancanti durante lo spostamento di contenuti spostabili (1d7c024)
- Correggi gli annullamenti immediati dei contenuti mobili spostati (8676618)
Miglioramenti del rendimento
- Evita di calcolare
readableHash
inDerivedState
se lo snapshot non è stato modificato. (307102) - Allocazioni ridotte (I65c09, d7ea77, 727974 e 445808)
- Annullamento rapido di Compose
CoroutineScopes
(a55362 e bd382f) - Sovrascrivi i record degli oggetti di stato con record di stato inaccessibili (c986960)
- Utilizza un compositore dell'ambito corretto nella realizzazione dei gruppi (9a5e5b6)
- Utilizza
IdentityArraySet
per archiviare le invalidazioni degli snapshot (7f60cca) - Ridurre le allocazioni per le osservazioni degli snapshot (5bc535f)
Versione 1.5.0-rc01
26 luglio 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.5.0-rc01
. La versione 1.5.0-rc01 contiene questi commit.
Correzioni di bug
Rimanda la rilettura degli stati derivati fino alla registrazione delle modifiche (f38099)
È disponibile un'ispezione facoltativa per consigliare la migrazione delle chiamate
mutableStateOf()
ai tipi specializzati corrispondenti per le primitive. L'ID lint èAutoboxingStateCreation
. In precedenza, questa ispezione era abilitata per impostazione predefinita per tutti i progetti. Per visualizzare questo avviso nell'editor di Android Studio e negli output lint del progetto, cambia la gravità da informativo ad avviso (o superiore) dichiarandowarning "AutoboxingStateCreation"
all'interno della configurazione build.gradle o build.gradle.kts del modulo come mostrato (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
Versione 1.5.0-beta03
28 giugno 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.5.0-beta03
. La versione 1.5.0-beta03 contiene questi commit.
Correzioni di bug
- Salta la ricomposizione delle sottocomposizioni che verranno rimosse. (Ieeb99, b/254645321)
Versione 1.5.0-beta02
7 giugno 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.5.0-beta02
. La versione 1.5.0-beta02 contiene questi commit.
Miglioramenti del rendimento
- Evita di calcolare
readableHash
inDerivedState
se lo snapshot non è stato modificato. (307102)
Versione 1.5.0-beta01
24 maggio 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.5.0-beta01
. La versione 1.5.0-beta01 contiene questi commit.
Modifiche alle API
- Allocazioni rimosse nelle ricomposizioni, nelle animazioni a colori e in
AndroidComposeView
(Ib2bfa) - È stata aggiunta un'annotazione
@StateFactoryMarker
per contrassegnare le funzioni che creano stati e devono essere aggregate in una chiamataremember
. (I64550) - Aggiungi le versioni primitive di State e
MutableState
(fb3d89) - Aggiunta
Snapshot.isApplyObserverNotificationPending
(I672a5)
Correzioni di bug
- Allocazioni ridotte (I65c09, d7ea77, 727974 e 445808)
- Non conservare il riferimento allo snapshot in
ComposerImpl
(0206f7) - Annullamento rapido di Compose
CoroutineScopes
(a55362 e bd382f) - Non applicare due volte la composizione (f5791b)
- Assicurati che l'annullamento della convalida per i valori di stato derivati non inizializzati (aa2a92)
- Chiama
onEndChanges
durante lo smaltimento della composizione. (62cc8c) - Risoluzione del problema dello spostamento di contenuti in una sottocomposizione (4beb41)
- Risolvere i potenziali deadlock (c1a425)
- ON_STOP dovrebbe mettere in pausa le trasmissioni dell'orologio del frame invece della composizione (f4a2d1)
- Correggi i flag modificati per le funzioni lambda riavviate (8a03e9)
- Esegui i callback di disattivazione per
LayoutNode
prima di eliminare gli effetti (8b0fa4)
Contributo esterno
- Aggiunta
Snapshot.isApplyObserverNotificationPending
(I672a5)
Versione 1.5.0-alpha04
10 maggio 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.5.0-alpha04
. La versione 1.5.0-alpha04 contiene questi commit.
Modifiche alle API
- Sono state aggiunte versioni primitive dell'API
State
, che consentono il tracciamento dei valori Int, Long, Float e Double negli oggettiState
senza incorrere in sanzioni per l'autoboxing. Per usare questi metodi, usa i nuovi metodi di fabbricamutableIntState(Int)
,mutableFloatStateOf(Float)
e così via. (I48e43)
Correzioni di bug
Chiama
onEndChanges
durante lo smaltimento della composizione. I nodi dello stato attivo rimossi duranteComposition.dispose
si stanno abbonando aonEndChanges
per reimpostare lo stato attivo.(03d4a47)Assicurati che l'annullamento della convalida per i valori dello stato derivato non sia stato inizializzato. Ogni stato derivato è associato a un elenco delle sue dipendenze in
SnapshotStateObserver
, utilizzato per invalidare gli ambiti associati allo stato derivato ogni volta che la dipendenza cambia. La modifica della dipendenza viene registrata all'avanzamento dello snapshot, che può verificarsi dopo la lettura dello stato derivato (a causa della chiamata aSnapshot.notifyObjectsInitialized()
).La precedente logica di osservazione dello stato derivata in
SnapshotStateObserver
eliminava le vecchie dipendenze e leggeva il nuovo valore. Ciò causava una condizione di gara con invalidazione che si verificava in uno stato ripulito, in cui l'annullamento della convalida delle dipendenze non era registrato.Questa modifica riordina la lettura dello stato derivato e la pulizia delle dipendenze, garantendo che l'annullamento della convalida avvenga sempre in uno stato valido. (C472be6)
Versione 1.5.0-alpha03
19 aprile 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.5.0-alpha03
. La versione 1.5.0-alpha03 contiene questi commit.
Modifiche alle API
- Il ricompositore creato per una finestra Android ora bloccherà solo le chiamate a
withFrameNanos
anziché a tutta la composizione quando riceve una notifica ON_STOP. Ciò significa che le finestre associate alle attività interrotte continueranno a ricomporsi per le modifiche dei dati, ma le animazioni, o qualsiasi altro chiamante diwithFrameNanos
, bloccheranno. (Id9e7f, b/240975572)
Correzioni di bug
- Correggi il potenziale deadlock nell'elenco di snapshot e mappa 5c1a425.
- Esegui i callback di disattivazione per
LayoutNode
prima di eliminare gli effetti 3784073 - Correggi i flag modificati per le funzioni lambda riavviate ea81df9
- Correggi la regressione della modifica in tempo reale per Composable con nodi 73fd4d8
- ON_STOP dovrebbe mettere in pausa le trasmissioni dell'orologio del frame invece della composizione ae276f1
- Disattiva
SnapshotStateObserver
ambiti per gli stati derivati invariati 84d9b1c - Risolvere i potenziali blocchi durante lo smaltimento delle composizioni 28761fc
- Risoluzione del problema dello spostamento di contenuti in una sottocomposizione 92d4156
Versione 1.5.0-alpha02
5 aprile 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.5.0-alpha02
. La versione 1.5.0-alpha02 contiene questi commit.
Nuove funzionalità
- L'operatore
getValue
di Kotlin ora può essere componibile (f174f6e)
Correzioni di bug, miglioramenti delle prestazioni
- Sovrascrivi i record degli oggetti di stato con record di stato inaccessibili (c986960)
- Utilizza un compositore dell'ambito corretto nella realizzazione dei gruppi (9a5e5b6)
- Correggi
endToMarker()
quando termini i gruppi di nodi. (D71d980) - Usa il gruppo
SlotWriter
attuale per controllare la disattivazione (a0b518b) - Utilizza
IdentityArraySet
per archiviare le invalidazioni degli snapshot (7f60cca) - Rimuovi
fill
inSlotTable.moveSlotGapTo()
e chiudilo (81f9935) - Correggi gli errori di annullamento mancanti durante lo spostamento di contenuti spostabili (1d7c024)
- Correggi gli annullamenti immediati dei contenuti mobili spostati (8676618)
- Ridurre le allocazioni per le osservazioni degli snapshot (5bc535f)
Versione 1.5.0-alpha01
22 marzo 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.5.0-alpha01
. La versione 1.5.0-alpha01 contiene questi commit.
Nuove funzionalità
- Aggiunge
Modifier.Node#coroutineScope
per consentire aModifier.Nodes
di avviare le coroutine (I76ef9) - Consenti a
Modifier.Nodes
di leggereCompositionLocals
implementando l'interfacciaCompositionLocalConsumerModifierNode
. (Ib44df)
Versione 1.4
Versione 1.4.3
3 maggio 2023
androidx.compose.runtime:runtime-*:1.4.3
viene rilasciato senza modifiche.
Versione 1.4.2
19 aprile 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.4.2
. La versione 1.4.2 contiene questi commit.
Correzioni di bug
Correggi il potenziale deadlock nell'elenco di snapshot e mappa 2eb6570
L'aggiunta di contenuti a
SnapshotStateList
oSnapshotStateMap
può riscontrare un deadlock se la modifica è in contemporanea con una scrittura diretta sul record di stato. Questo era molto più probabile con le modifiche introdotte da 93fcae828b che utilizzano le scritture dirette per rilasciare i record inutilizzati.I blocchi sono ora ordinati in modo che non si abbia mai tentato di eseguire un blocco snapshot quando viene bloccato un blocco di mappa o elenco.
Versione 1.4.1
5 aprile 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.4.1
. La versione 1.4.1 contiene questi commit.
Correzioni di bug
- Correggi
endToMarker()
quando termini i gruppi di nodi. d71d980
Versione 1.4.0
22 marzo 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.4.0
. La versione 1.4.0 contiene questi commit.
Modifiche importanti dalla versione 1.3.0
- Utilizza il valore inizializzato da
LiveData
per la prima composizione 3680e25 - Aggiungi
ComposeNodeLifecycleCallback
per osservare il ciclo di vita dei nodi di scrittura. 8b6a258 - Aggiungi la proprietà
parameterTypes
aComposableMethod
7b6c7ad
Correzioni di bug e Miglioramenti delle prestazioni
- Cancella entrambi gli indici di ambito in
SnapshotStateObserver
29f4a3e - Aggiungi i gruppi necessari nel corpo delle funzioni lambda non ignorabili 7d06752
- Migliora le caratteristiche di riferimento della memoria dello stato di snapshot 93fcae8
- Rimuovi boxe nelle ricerche locali di composizione 0875717
- Utilizza la chiave corretta per i gruppi di nodi non riutilizzabili 6388d8d
- Proteggi
SnapshotStateObserver
da applicazioni ricorrenti e simultanee 98cb6ba - È stato aggiunto un controllo dei limiti di indice di controllo nella sezione "get" di
IdentityArraySet
metodo 35a77d3 - Aggiorna il modulo di scrittura per utilizzare le estensioni
ViewTreeLifecycleOwner
21c2122 - Invia notifiche di applicazione al termine del frame di ricompositore. 98f2641
- Correggi l'arresto anomalo dell'indice fuori limite durante l'annullamento del Recomposer 8f8656f
- Forza sempre la ricomposizione se i fornitori principali di Composizione sono cambiati 9526fcc
- Tolleranza del ricompositore per i job annullati a55f7ed
- Migliora la gestione delle invalidazioni per un numero elevato di compositori 9b7ed67
- Risoluzione del problema relativo alla generazione di gruppi di chiusura per resi non locali b6f590c
Versione 1.4.0-rc01
8 marzo 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.4.0-rc01
. La versione 1.4.0-rc01 contiene questi commit.
Correzioni di bug
Versione 1.4.0-beta02
22 febbraio 2023
Vengono rilasciate le versioni androidx.compose.runtime:runtime:1.4.0-beta02
e androidx.compose.runtime:runtime-saveable:1.4.0-beta02
. La versione 1.4.0-beta02 contiene questi commit.
Versione 1.4.0-beta01
8 febbraio 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.4.0-beta01
. La versione 1.4.0-beta01 contiene questi commit.
Modifiche alle API
- È stato aggiunto
ComposeNodeLifecycleCallback
, che consente di osservare il ciclo di vita dei nodi Compose (I3731b) @TestOnly
aggiunto aComposer.disableSourceInformation()
perché questa funzione è sicura da chiamare durante un test. (I896c8)
Correzioni di bug
- Rimozione del pugilato nelle ricerche locali di composizione (62f66a)
- Migliora le caratteristiche di riferimento della memoria dello stato di snapshot (dfb451)
Versione 1.4.0-alpha05
25 gennaio 2023
Vengono rilasciate le versioni androidx.compose.runtime:runtime:1.4.0-alpha05
e androidx.compose.runtime:runtime-saveable:1.4.0-alpha05
. La versione 1.4.0-alpha05 contiene questi commit.
Modifiche alle API
- Più tipo/nullabilità di funzioni in linea/deprecate e nascoste (I24f91)
Versione 1.4.0-alpha04
11 gennaio 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.4.0-alpha04
. La versione 1.4.0-alpha04 contiene questi commit.
Modifiche alle API
TestMonotonicFrameClock
ora utilizza l'annotazione sperimentale corretta. (I95c9e)
Correzioni di bug
- Proteggi
SnapshotStateObserver
da applicazioni ricorrenti e simultanee (d902fb)
Versione 1.4.0-alpha03
7 dicembre 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.4.0-alpha03
. La versione 1.4.0-alpha03 contiene questi commit.
Modifiche alle API
- aggiungi un nuovo metodo pubblico alla classe
ComposableMethod
analogo ajava.lang.reflect.Method#getParameterTypes()
(Iab0c3)
Correzioni di bug
- Ora le notifiche di applicazione degli snapshot vengono inviate al termine dell'applicazione delle modifiche in
Recomposer
. (Iad6c0, b/222093277)
Versione 1.4.0-alpha02
9 novembre 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.4.0-alpha02
. La versione 1.4.0-alpha02 contiene questi commit.
Versione 1.4.0-alpha01
24 ottobre 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.4.0-alpha01
. La versione 1.4.0-alpha01 contiene questi commit.
Modifiche alle API
SnapshotStateList
eSnapshotStateMap
ora hanno implementazioni esplicite ditoList()
etoMap()
, nel rispetto. Questi metodi restituiscono i contenuti attuali senza creare una copia, in quanto restituiscono i dati immutabili interni utilizzati per archiviare i contenuti. Questo valore può essere utilizzato, ad esempio, per produrre un flusso di valori utilizzandosnapshotFlow
senza richiedere la copia dei dati. (Ica2bd)
Versione 1.3
Versione 1.3.3
11 gennaio 2023
Viene rilasciato androidx.compose.runtime:runtime-*:1.3.3
. La versione 1.3.3 contiene questi commit.
- Nessuna modifica dalla versione 1.3.2
Versione 1.3.2
7 dicembre 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.3.2
. La versione 1.3.2 contiene questi commit.
Correzioni di bug
- Aggiornato per supportare androidx.compose.ui 1.3.2
Versione 1.3.1
9 novembre 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.3.1
. La versione 1.3.1 contiene questi commit.
Versione 1.3.0
24 ottobre 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.3.0
. La versione 1.3.0 contiene questi commit.
Modifiche importanti dalla versione 1.2.0
Gestione delle eccezioni / assistenza per la modifica in tempo reale
- Per un supporto migliore dell'editing in tempo reale, sono state aggiunte delle API per consentire la gestione delle eccezioni durante la composizione.
- Gestione degli errori di composizione per il ricaricamento a caldo
- Gestire gli errori di modifica in tempo reale durante il salvataggio/ripristino
Tracciamento della composizione
- Sono state aggiunte API di tracciamento del runtime per supportare nuovi strumenti di tracciamento della composizione
- Generare chiamate di inizio/fine dell'evento di traccia componibile
- Riaggiunta ComposerKt.traceEventStart(Int, String)
API Composable Reflection
- È stata aggiunta una nuova API
ComposableMethod
per consentire chiamate di API componibili più affidabili basate sulla riflessione. - Sposta richiamareComposable per il runtime di composizione
- Rielabora l'API per richiamare il metodo componibile
Correzioni di runtime
- Correzione del problema del test dell'intervallo per il controllo degli indicatori nella tabella di slot
- Consenti ai contenuti spostabili di spostarsi all'interno e all'esterno di SubcomposeLayout
- Correzione dello spostamento di contenuti in nuovi contenuti di una sottocomposizione
Sistema snapshot
- Il sistema di snapshot ha ottenuto vari miglioramenti in termini di gestione della memoria, prestazioni e correttezza.
- Ottimizzazione della rimozione dell'ambito in SnapshotStateObserver
- Eliminare gli snapshot nidificati creati da snapshot trasparenti
- Corretta la condizione di gara durante la lettura dello stato dall'istantanea globale
- Supporto DerivedState in SnapshotStateObserver
- Impedisci la rimozione dello stato derivato dalla composizione quando viene letto in altri ambiti
- Utilizza IdentityArrayMap anziché HashMap all'interno di DerivedState
- Aggiorna gli osservatori di stato derivati per utilizzare il vettore modificabile
- Aggiorna la pulizia dello stato di SnapshotStateObserver
- Sostituisci SnapshotStateObserver.invalidated con ArraySet
- Corretta la condizione di gara durante la lettura dello stato dall'istantanea globale
- Correggere l'utilizzo di un record inattivo nel calcolo dell'hash DerivedState
- Correggi la condizione di gara durante l'avanzamento dell'istantanea globale
- Velocizza la pulizia delle osservazioni degli ambiti in SnapshotStateObserver
Versione 1.3.0-rc01
5 ottobre 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.3.0-rc01
. La versione 1.3.0-rc01 contiene questi commit.
Correzioni di bug
- Risolto il problema di
ArrayIndexOutOfBoundsException
proveniente dalla tabella slot (b/249076084)
Versione 1.3.0-beta03
21 settembre 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.3.0-beta03
. La versione 1.3.0-beta03 contiene questi commit.
Cambiamento che interrompe il comportamento
- Il parametro in
remember
erememberCoroutineScope
è stato modificato incrossinline
. Verrà segnalato un errore per i resi anticipati invece di consentire un reso anticipato, che causerà la segnalazione di un errore interno successivo. - Questa modifica può potenzialmente portare alla segnalazione di nuovi errori del compilatore che richiedono la rimozione di ritorni non locali dalle funzioni lambda passate a queste funzioni. (Ibea62)
Versione 1.3.0-beta02
7 settembre 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.3.0-beta02
. La versione 1.3.0-beta02 contiene questi commit.
Correzioni di bug
- API aggiornata (I64ca0)
Versione 1.3.0-beta01
24 agosto 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.3.0-beta01
. La versione 1.3.0-beta01 contiene questi commit.
Modifiche alle API
- Un metodo
find
è stato aggiunto aCompositionData
per consentire agli strumenti per sviluppatori che utilizzano questa API di trovare rapidamente un sottogruppo di composizione utilizzando la propria identità. (I5794f)
Versione 1.3.0-alpha03
10 agosto 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.3.0-alpha03
. La versione 1.3.0-alpha03 contiene questi commit.
Versione 1.3.0-alpha02
27 luglio 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.3.0-alpha02
. La versione 1.3.0-alpha02 contiene questi commit.
Modifiche alle API
ComposerKt.traceEventStart(Int, String)
riaggiunto per compatibilità con le versioni precedenti (I6e6de)
Versione 1.3.0-alpha01
29 giugno 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.3.0-alpha01
. La versione 1.3.0-alpha01 contiene questi commit.
Modifiche alle API
- Spostamento della funzionalità dell'utilità in runtime (I4f729)
Versione 1.2
Versione 1.2.1
10 agosto 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.2.1
. La versione 1.2.1 contiene questi commit.
Correzioni di bug
- Correzione della perdita di memoria: elimina gli snapshot nidificati creati da snapshot trasparenti b/239603305
Versione 1.2.0
27 luglio 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.2.0
. La versione 1.2.0 contiene questi commit.
Modifiche importanti da 1.1.0
Compose Runtime ha introdotto una manciata di funzionalità nella versione 1.2.0, oltre a molte correzioni di bug stabilizzanti. La nuova funzionalità più significativa è stata l'introduzione dell'
movableContentOf
API, che può essere utilizzata per abilitare un'esperienza utente complessa, come le transizioni agli elementi condivisi. L'APImovableContentOf
converte una funzione lambda componibile in una funzione lambda che sposta lo stato e i nodi corrispondenti in qualsiasi nuova posizione chiamata. Quando la chiamata precedente abbandona la composizione, lo stato viene temporaneamente conservato e se una nuova chiamata al lambda entra nella composizione, lo stato e i nodi associati vengono spostati nella posizione della nuova chiamata. Se non vengono aggiunte nuove chiamate, lo stato viene rimosso definitivamente e ricorda che gli osservatori ricevono una notifica.Se una lambda
movableContentOf
viene chiamata più volte nella stessa composizione, per ogni chiamata vengono creati un nuovo stato e nodi e, man mano che le chiamate escono dalla composizione e ne entrano in gioco nuove, lo stato viene spostato dalla prima chiamata in uscita alle chiamate in entrata nell'ordine in cui vengono chiamate. Tutti gli stati non rivendicati dalle nuove chiamate vengono rimossi definitivamente.Oltre a questa e ad alcune altre nuove funzionalità, è stato dedicato molto tempo alla stabilizzazione del sistema di runtime e stato degli snapshot. Sono state rimosse varie perdite di memoria e sono stati ottimizzati i percorsi del codice.
Di seguito è riportato un elenco riassunto delle modifiche:
Nuove funzionalità in 1.2
- Aggiungi snapshot sperimentale non sicuroInvio/Esci
- Aggiungi l'API sperimentale Snapshot.asContextElement
- Presenta Snapshot.withoutReadObservation
- Consentire lo stato dello stato all'interno di una composizione
- Tracciamento delle ricomposizioni in Compose
Rendimento in 1.2
- Migliorare il rendimento locale della composizione
- I profili di riferimento per la scrittura devono essere ricavati utilizzando i benchmark
Correzioni di bug in 1.2
- Rimuovere le informazioni di monitoraggio dagli ambiti di ricomposizione delle release
- Impedisci la rimozione dello stato derivato dalla composizione quando viene letto in altri ambiti
- Usa removeScope() più efficiente in SnapshotStateObserver
- Pulisci le dipendenze dello stato derivate nella composizione
- È stato corretto il problema di modifica del campo currentCompositeKeyHash dopo la ricomposizione interna all'interno di contenuti spostabili
- Pulisci le composizioni invalidate durante lo smaltimento
- Correggere la lettura dello stato derivato durante la ricomposizione
- Risolvi i problemi di perdita di memoria durante l'osservazione di oggetti di stato derivati
- Correzione della chiave hash composita movableContent per coerenza
- Correzione di una richiesta in cui si verificava un arresto anomalo del compositore
- Assicurarsi che l'annullamento della convalida forzato di un gruppo forza la ricomposizione
- Correggi il bug quando il comando passwordsSaveable con input viene ripristinato nell'ordine sbagliato
Versione 1.2.0-rc03
29 giugno 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.2.0-rc03
. La versione 1.2.0-rc03 contiene questi commit.
Correzioni di bug
- Le osservazioni di stato derivate erano precedentemente rimosse incondizionatamente dall'ambito di ricomposizione e dalla composizione, il che violava altri ambiti che potrebbero ancora osservare lo stato derivato. Questa modifica rimuove le istanze di stato derivate solo se non sono più osservate da altri ambiti. (b/236618362)
Versione 1.2.0-rc02
22 giugno 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.2.0-rc02
. La versione 1.2.0-rc02 contiene questi commit.
Versione 1.2.0-rc01
15 giugno 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.2.0-rc01
. La versione 1.2.0-rc01 contiene questi commit.
Modifiche alle API
- Le interfacce nelle librerie di scrittura vengono ora create utilizzando i metodi predefiniti dell'interfaccia jdk8 (I5bcf1)
Versione 1.2.0-beta03
1 giugno 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.2.0-beta03
. La versione 1.2.0-beta03 contiene questi commit.
Versione 1.2.0-beta02
18 maggio 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.2.0-beta02
. La versione 1.2.0-beta02 contiene questi commit.
Versione 1.2.0-beta01
11 maggio 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.2.0-beta01
. La versione 1.2.0-beta01 contiene questi commit.
Nuove funzionalità
- Questa è la prima versione beta della 1.2.
Modifiche alle API
Snapshot.unsafeEnter/unsafeLeave
sperimentale aggiunto (I108f3)- È stata aggiunta l'API
Snapshot.asContextElement()
sperimentale (Iff072) - Ora l'annotazione
@ComposableTarget
e le annotazioni contrassegnate da@ComposableTargetMarker
possono essere utilizzate nell'ambito dei file con il prefisso@file
. L'utilizzo di un'annotazione di destinazione nell'ambito del file farà in modo che il compilatore presuma che tutte le funzioni componibili nel file siano destinate all'applicatore associato. Ad esempio, l'utilizzo di@file:UiComposable
dichiara che tutte le funzioni@Composable
hanno come target l'applicatore dell'interfaccia utente di Compose. Una funzione che deve scegliere come target un altro applicatore deve fornire esplicitamente l'annotazione dell'indicatore target per l'applicatore desiderato. (I40804)
Versione 1.2.0-alpha08
20 aprile 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.2.0-alpha08
. La versione 1.2.0-alpha08 contiene questi commit.
Modifiche alle API
TracingInProgress
aggiunto all'interfacciaCompositionTracer
. (Ic6f12).- Aggiungere
recomposeScopeIdentity
a Composer (I0c873) - API di tracciamento limitate (Composer.setTracer) per
OptIn(InternalComposeTracingApi)
. (I9187f) - È stato aggiunto il valore
ResuableContentHost
, che consente di controllare meglio la durata dello stato creato per i contenuti riutilizzabili. Ad esempio, se una sottocomposizione temporaneamente non è in uso, i contenuti possono essere disattivati e lo stato memorizzato nella composizione può essere dimenticato, ad esempio attivando tutti gli effetti usa e getta. (I2c0f2, b/220322704)
Versione 1.2.0-alpha07
6 aprile 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.2.0-alpha07
. La versione 1.2.0-alpha07 contiene questi commit.
Modifiche alle API
- È stata aggiunta la nuova funzione
Snapshot.withoutReadObservation { ... }
. Consente agli utenti di eseguire la funzione lambda passata senza iscriversi alle modifiche dei valori di stato letti durante questo blocco. Potresti trovarlo utile nei casi d'uso quando vuoi trarre vantaggio dalla scrittura/lettura sicura in thread basata su snapshot, ma vuoi poter leggere il valore senza causare ricomposizioni o rimisurazioni non necessarie. (I9f365, b/214054486)
Versione 1.2.0-alpha06
23 marzo 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.2.0-alpha06
. La versione 1.2.0-alpha06 contiene questi commit.
Versione 1.2.0-alpha05
9 marzo 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.2.0-alpha05
. La versione 1.2.0-alpha05 contiene questi commit.
Contributo esterno
- Aggiornamento per l'utilizzo di Kotlinx coroutines 1.6.0 (I3366d)
Versione 1.2.0-alpha04
23 febbraio 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.2.0-alpha04
. La versione 1.2.0-alpha04 contiene questi commit.
Modifiche alle API
Aggiunti
ComposableTarget
,ComposableTargetMarker
eComposableOpenTarget
che consente di generare report sul tempo di compilazione del momento una funzione componibile è chiamata targeting di un'applicazione progettato per l'uso.Nella maggior parte dei casi le annotazioni possono essere dedotte del compilatore, quindi l'uso diretto di queste annotazioni dovrebbe essere . I casi che non possono essere dedotti includono la creazione e utilizzando un applicatore personalizzato, funzioni componibili astratte (come dell'interfaccia utente), campi o variabili globali lambda componibili (vengono dedotti parametri e variabili locali), o quando utilizzi
ComposeNode
o una funzione componibile correlata.Per applicazioni personalizzate, le funzioni componibili che richiamano
ComposeNode
oReusableComposeNode
devono aggiungere unCompoableTarget
per la funzione e qualsiasi tipi di parametri lambda componibili. Tuttavia, è consigliabile per creare un'annotazione annotata conComposableTargetMarker
e poi l'annotazione contrassegnata anzichéComposableTarget
direttamente. Un'annotazione componibile contrassegnato conComposableTargetMarker
equivale aComposbleTarget
con il nome completo dell'attributo come parametro dell'applicatore. Per un esempio dell'utilizzoComposableTargetMarker
vedianroidx.compose.ui.UiComposable
. (I38f11)
Versione 1.2.0-alpha03
9 febbraio 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.2.0-alpha03
. La versione 1.2.0-alpha03 contiene questi commit.
Modifiche alle API
Aggiunta di
movableContentOf
che converte un componibile in un lambda che sposta lo stato e i nodi corrispondenti, in qualsiasi nuova posizione. Quando abbandona la chiamata precedente la composizione, lo stato viene temporaneamente conservato e, se viene richiesta una nuova alla lambda entra nella composizione, poi lo stato e nodi vengono spostati nella posizione della nuova chiamata. Se non sono presenti nuove chiamate aggiunto, lo stato viene rimosso definitivamente e ricorda che gli osservatori notificato.Se un lambda
movableContentOf
viene chiamato più volte nella stessa composizione, vengono creati un nuovo stato e nodi per ogni chiamata e, le chiamate escono dalla composizione e vengono attivate le nuove chiamate, lo stato viene spostato dalle prime chiamate in uscita a quelle in entrata nell'ordine in cui . Tutti gli stati non rivendicati dalle nuove chiamate vengono rimossi definitivamente. (Ib4850)È stata aggiunta un'API di tracciamento alla composizione per abilitare strumenti a forniscono un tracciamento più dettagliato delle funzioni componibili. Il compilatore ora genera chiamate all'API di tracciamento che includono informazioni. (Ib0eb5)
Per rimuovere queste chiamate e la sorgente associata informazioni da una build di release, aggiungi la seguente regola ProGuard:
-assumenosideeffects public class androidx.compose.runtime.ComposerKt { boolean isTraceInProgress(); void traceEventStart(int,java.lang.String); void traceEventEnd(); }
Aggiungi
InternalComposeScope
per consentire agli strumenti di per identificare un componibile durante le ricomposizioni. (I07a3f)
Versione 1.2.0-alpha02
26 gennaio 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.2.0-alpha02
. La versione 1.2.0-alpha02 contiene questi commit.
Versione 1.2.0-alpha01
12 gennaio 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.2.0-alpha01
. La versione 1.2.0-alpha01 contiene questi commit.
Modifiche alle API
- Campo
identity
aggiunto aCompositionData
per la generazione ID invarianti in Layout Inspector. (Ic116e)
Aggiornamenti delle dipendenze
- Ora dipende da Kotlin
1.6.10
.
Versione 1.1
Versione 1.1.1
23 febbraio 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.1.1
. La versione 1.1.1 contiene questi commit.
Correzioni di bug
- Correggi
NullPointerException
inandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462) - È stato corretto l'arresto anomalo causato dai contenuti degli appunti durante la lettura da appunti su Android. (I06020, b/197769306)
- RTL fisso in
LazyVerticalGrid
(aosp/1931080, b/207510535)
Versione 1.1.0
9 febbraio 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.1.0
. La versione 1.1.0 contiene questi commit.
Modifiche importanti dalla versione 1.0.0
- Supporto stabile dell'effetto Overscroll per Android 12
- Miglioramenti alle dimensioni del touch target
- Tieni presente che, rispetto a Compose 1.0, i componenti Material amplieranno lo spazio di layout per rispettare le linee guida per l'accessibilità di Material relative alle dimensioni del touch target. Ad esempio, il touch target del pulsante si espanderà fino a una dimensione minima di
48x48dp
, anche se imposti le dimensioni del pulsante su un valore inferiore. In questo modo, Compose Material si allinea allo stesso comportamento dei componenti di Material Design e si ottiene un comportamento coerente se si combinano Visualizzazioni e Compose. Questa modifica garantisce inoltre che, quando crei la UI utilizzando i componenti Compose Material, vengano soddisfatti i requisiti minimi per l'accessibilità dei touch target. - Supporto stabile per barra di navigazione
- Consente di passare alcune API precedentemente sperimentali allo stato stabile
- Supporto per versioni più recenti di Kotlin
Versione 1.1.0-rc03
26 gennaio 2022
Viene rilasciato androidx.compose.runtime:runtime-*:1.1.0-rc03
. La versione 1.1.0-rc03 contiene questi commit.
Correzioni di bug
- Aggiornamento per supportare il materiale Compose
1.1.0-rc03
Versione 1.1.0-rc01
15 dicembre 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.1.0-rc01
. La versione 1.1.0-rc01 contiene questi commit.
Versione 1.1.0-beta04
1 dicembre 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.1.0-beta04
. La versione 1.1.0-beta04 contiene questi commit.
Nuove funzionalità
- Aggiornamento per essere compatibile con Kotlin
1.6.0
Versione 1.1.0-beta03
17 novembre 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.1.0-beta03
. La versione 1.1.0-beta03 contiene questi commit.
Versione 1.1.0-beta02
3 novembre 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.1.0-beta02
. La versione 1.1.0-beta02 contiene questi commit.
Modifiche alle API
- Il codice dello snapshot era suddiviso in più file, ma tutti nella stessa classe JVM. (Ic6c98)
Versione 1.1.0-beta01
27 ottobre 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.1.0-beta01
. La versione 1.1.0-beta01 contiene questi commit.
Versione 1.1.0-alpha06
13 ottobre 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.1.0-alpha06
. La versione 1.1.0-alpha06 contiene questi commit.
Modifiche alle API
InternalCompilerApi
rimosso dai metodi Composer che sono deve essere denominato cross-module (I1aa0b)Recomposer.state
è stato deprecato e sostituito daRecomposer.currentState
per cambiare il proprio tipo in StateFlow (Ic2ab3, b/197773820)
Versione 1.1.0-alpha05
29 settembre 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.1.0-alpha05
. La versione 1.1.0-alpha05 contiene questi commit.
Versione 1.1.0-alpha04
15 settembre 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.1.0-alpha04
. La versione 1.1.0-alpha04 contiene questi commit.
Versione 1.1.0-alpha03
1° settembre 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.1.0-alpha03
. La versione 1.1.0-alpha03 contiene questi commit.
Nuove funzionalità
- Il compilatore Compose ora supporta le versioni precedenti di Compose Runtime (1.0). Prima di questa modifica, Compose Compiler era compatibile solo con il runtime di Compose della stessa versione o versioni successive. Dopo questa modifica, Compose Compiler è compatibile con una versione precedente di Compose Runtime (1.0). (aosp/1796968)
- Compose
1.1.0-alpha03
è stata aggiornata per dipendere da Kotlin1.5.30
. (I74545)
Versione 1.1.0-alpha02
18 agosto 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.1.0-alpha02
. La versione 1.1.0-alpha02 contiene questi commit.
Versione 1.1.0-alpha01
4 agosto 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.1.0-alpha01
. La versione 1.1.0-alpha01 contiene questi commit.
Versione 1.0
Versione 1.0.5
3 novembre 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.5
. La versione 1.0.5 contiene questi commit.
Correzioni di bug
- È stato corretto un arresto anomalo del monitoraggio delle istanze derivateStateOf. (aosp/1792247)
Versione 1.0.4
13 ottobre 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.4
. La versione 1.0.4 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornamento in base a Kotlin
1.5.31
eseguito
Versione 1.0.3
29 settembre 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.3
. La versione 1.0.3 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornamento in base a Kotlin
1.5.30
eseguito
Versione 1.0.2
1° settembre 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.2
. La versione 1.0.2 contiene questi commit.
Aggiornamento eseguito per supportare la release Compose 1.0.2
. Compose 1.0.2
è ancora compatibile con Kotlin 1.5.21
.
Versione 1.0.1
4 agosto 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.1
. La versione 1.0.1 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornamento eseguito in modo da dipendere da Kotlin
1.5.21
.
Versione 1.0.0
28 luglio 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0
. La versione 1.0.0 contiene questi commit.
Funzionalità principali di 1.0.0
Questa è la prima release stabile di Compose. Per ulteriori dettagli, consulta il blog ufficiale di Compose Release.
Problemi noti
Se utilizzi Android Studio Bumblebee Canary 4 o AGP
7.1.0-alpha04
/7.1.0-alpha05
, potresti riscontrare il seguente arresto anomalo:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Per risolvere il problema, aumenta temporaneamente il valore minSdkVersion nel file
build.gradle
, impostandolo su 24 o più. Questo problema verrà risolto nella prossima versione di Android Studio Bumblebee e AGP7.1
. (b/194289155)
Versione 1.0.0-rc02
14 luglio 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-rc02
. La versione 1.0.0-rc02 contiene questi commit.
- Corrette condizioni di gara in SnapshotStateObserver che causano spurratica NullPointerExceptions. (aosp/1763445, aosp/1758105, b/192677711)
- Sono stati risolti i problemi relativi agli snapshot di runtime che causano
java.lang.IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied
arresti anomali. (b/193006595, b/192570897)
Versione 1.0.0-rc01
1 luglio 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-rc01
. La versione 1.0.0-rc01 contiene questi commit.
Versione 1.0.0-beta09
16 giugno 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-beta09
. La versione 1.0.0-beta09 contiene questi commit.
Regole del profilo aggiunte
In questa release vengono aggiunte regole di profilo ai seguenti moduli di scrittura (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.layout-base
- androidx.compose.material
- androidx.compose.materiale-eco
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- testo androidx.compose.ui.
- testo androidx.compose.ui.
- androidx.compose.ui.unit
- androidx.compose.ui.util,
Che cosa sono le regole del profilo?
Le regole del profilo per una libreria vengono specificate in un file di testo
baseline-prof.txt
situato insrc/main
o nella directory equivalente. Il file specifica una regola per riga, dove una regola in questo caso è un pattern per la corrispondenza con metodi o classi nella libreria. La sintassi per queste regole è un soprainsieme del formato del profilo ART leggibile che viene utilizzato quando si utilizzaadb shell profman --dump-classes-and-methods ...
. Queste regole possono avere come target metodi o classi.Una regola del metodo avrà il seguente pattern:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Una regola della classe avrà il seguente pattern:
<CLASS_DESCRIPTOR>
Qui
<FLAGS>
rappresenta uno o più caratteriH
,S
eP
per indicare se questo metodo deve essere contrassegnato o meno come "A caldo", "Avvio" o "Post avvio".<CLASS_DESCRIPTOR>
è il descrittore della classe a cui appartiene il metodo scelto come target. Ad esempio, la classeandroidx.compose.runtime.SlotTable
avrà un descrittoreLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
è la firma del metodo e include il nome, i tipi di parametri e i tipi restituiti del metodo. Ad esempio, il metodofun isPlaced(): Boolean
suLayoutNode
ha la firmaisPlaced()Z
.Questi pattern possono avere caratteri jolly (
**
,*
e?
) in modo da avere una singola regola che comprende più metodi o classi.
A cosa servono le regole?
Un metodo con il flag
H
indica che si tratta di un metodo "hot" e devono essere compilati in anticipo.Un metodo con il flag
S
indica che si tratta di un metodo chiamato all'avvio e che deve essere compilato in anticipo per evitare i costi della compilazione e dell'interpretazione del metodo al momento dell'avvio.Un metodo con il flag
P
indica che si tratta di un metodo che viene richiamato dopo l'avvio.Una classe presente in questo file indica che viene utilizzata durante l'avvio e deve essere preallocata nell'heap per evitare il costo del caricamento della classe.
Come funziona?
- Le librerie possono definire queste regole che verranno pacchettizzate in artefatti AAR. Quando viene creata un'app che include questi elementi, queste regole vengono unite e le regole unite vengono utilizzate per creare un profilo ART binario compatto specifico per l'app. ART può quindi sfruttare questo profilo quando l'app viene installata sui dispositivi per compilare in anticipo un sottoinsieme specifico dell'applicazione al fine di migliorare le prestazioni dell'applicazione, in particolare la prima esecuzione. Tieni presente che ciò non avrà alcun effetto sulle applicazioni di cui è possibile eseguire il debug.
Versione 1.0.0-beta08
2 giugno 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-beta08
. La versione 1.0.0-beta08 contiene questi commit.
Modifiche alle API
State<T>
ora èState<out T>
(I69049)ControlledComposition
modifica all'API per abilitare la ricomposizione le modifiche in una singola ricomposizione. (Iaafd1, b/184173932)
Versione 1.0.0-beta07
18 maggio 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-beta07
. La versione 1.0.0-beta07 contiene questi commit.
Modifiche alle API
- Sono state aggiunte nuove API per il compilatore di composizione che consentono le informazioni di origine generate dal compilatore rimosso durante la minimizzazione della sorgente. (Ia34e6)
Introduce
ReusableContent
che tenterà di riutilizzare il nodi nei suoi contenuti, invece di sostituirli quando la chiave viene modificato. Quando la chiave viene modificata, i valori precedenti in la tabella slot per i contenuti viene ignorata, ad eccezione nodi che sono stati generati e i valori utilizzati per aggiornare nodi.Introduce
ReusableComposeNode
che riutilizzerà il nodo emessa invece di sostituirla, come avviene perComposeNode
. (I1dd86)@ComposeCompilerApi
non più@RequiresOptIn
(Iab690)
Correzioni di bug
- LazyColumn/Row ora manterrà attivi (non eliminati) fino a un massimo di 2 elementi visibili in precedenza (non eliminati) anche quando l'utente scorre già la pagina verso l'esterno. In questo modo il componente può riutilizzare le sottocomposizioni attive quando dovremo comporre un nuovo elemento che migliora le prestazioni di scorrimento. (Ie5555).
Versione 1.0.0-beta06
5 maggio 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-beta06
. La versione 1.0.0-beta06 contiene questi commit.
Modifiche alle API
@ComposeCompilerApi
non più@RequiresOptIn
(Iab690)
Versione 1.0.0-beta05
21 aprile 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-beta05
. La versione 1.0.0-beta05 contiene questi commit.
Modifiche alle API
- Rimossa
@InternalComposeApi
per la registrazione di letture e scritture di snapshot (Id134d)
Correzioni di bug
- I file AndroidManifest di ui-test-manifest e ui-tooling-data sono ora compatibili con Android 12 (I6f9de, b/184718994)
Versione 1.0.0-beta04
7 aprile 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-beta04
. La versione 1.0.0-beta04 contiene questi commit.
Correzioni di bug
Prima di questa modifica, le funzioni componibili locali erano ignorabili in base ai loro parametri. Dopo questa modifica, le funzioni componibili locali non verranno ignorate. Questa modifica viene apportata perché è comune e previsto che le funzioni locali acquisiscano i parametri dall'elemento padre, una causa comune di bug.
Riassumendo, consideriamo l'esempio seguente:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }
Prima di questa modifica, la funzione componibile
ShowCount
veniva sempre ignorata, anche dopo l'aggiornamento del parametrocount
. Abbiamo deciso, tuttavia, di non dare seguito a questa misura. (I5648a)È stato risolto il problema durante il quale
rememberSaveable()
ripristinava il valore precedente quando utilizzato con i parametri di input (I1b110, b/182403380)
Versione 1.0.0-beta03
24 marzo 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-beta03
. La versione 1.0.0-beta03 contiene questi commit.
Modifiche alle API
- L'API
DefaultMonotonicFrameClock
è deprecata. Chiamata in corsowithFrameNanos
oRecomposer.runRecomposeAndApplyChanges
senzaMonotonicFrameClock
ora genereràIllegalStateException
. (I4eb0d)
Versione 1.0.0-beta02
10 marzo 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-beta02
. La versione 1.0.0-beta02 contiene questi commit.
Correzioni di bug
- Applicare restrizioni sull'uso pubblico delle API sperimentali (I6aa29, b/174531520)
- Correzione del problema di
rememberSaveable { mutableStateOf(0) }
non funzionante quando veniva utilizzato all'interno di una destinazione di scrittura durante la navigazione. (I1312b, b/180042685, b/180701630)
Versione 1.0.0-beta01
24 febbraio 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-beta01
. La versione 1.0.0-beta01 contiene questi commit.
Questa è la prima versione di Compose 1.0.0 Beta.
Modifiche alle API
- Aggiungi
Recomposer.runRecomposeConcurrentlyAndApplyChanges
API sperimentale per ricomporre le composizioni non più valide a partire dalla piattaforma principale il loop del frame. (I342d0) - Tutti gli elementi componibili contrassegnati con @ReadOnlyComposable sono ora convalidati in fase di compilazione per garantire che effettuino solo chiamate ad altri elementi @ReadOnlyComposables (I58961)
defaultFactory
percompositionLocalOf
e Ora è obbligatoriostaticCompositionLocalOf
anziché facoltativo.Questa modifica rimuove un potenziale errore di tipo per i valori non nulli per i quali non è stato fornito un valore di fabbrica predefinito. In precedenza fornisce un riferimento nullo per un tipo non null.
Per i tipi con valori null, valuta la possibilità di specificare
{ null }
come valore predefinito fabbrica.Sconsigliamo di utilizzare locali con tipi non nulli a meno che è possibile fornire un valore predefinito ragionevole. Se non esiste un valore predefinito ragionevole, il lambda
defaultFactory
dovrebbe generare un'eccezione. Tuttavia, un'eccezione indica che i consumatori della zona avranno una dipendenza implicita fornita, che non viene applicata in base al sistema dei tipi. (Ifbd2a).I simboli deprecati sono stati rimossi dal runtime di composizione (I3252c)
L'elemento
emptyContent()
deprecato è stato rimosso. Usa invece il criterio{}
. (Idb33f, b/179432510)I provider sono stati rinominati in ComposizioneLocalProvider
- Il costruttore della composizione non accetta più un parametro chiave ed è stato ritirato.
- CurrentCompositeKeyHash è stato trasformato in una proprietà componibile di primo livello anziché in una funzione componibile di primo livello.
- ComposizioneData e ComposizioneGroup sono stati spostati nello spazio dei nomi androidx.compose.runtime.tooling
- ComposableLambda è stata creata come un'interfaccia invece di una classe concreta e non ha più parametri di tipo.
- ComposableLambdaN è stata creata come un'interfaccia invece di una classe concreta e non ha più parametri di tipo.
- La funzione snapshotFlow è stata spostata nello spazio dei nomi androidx.compose.runtime
- il metodo di unione di SnapshotMutationPolicy non è più sperimentale
- La funzione clearRoots di primo livello @TestOnly è stata rimossa. Non è più necessario.
- Le funzioni keySourceInfoOf e resetSourceInfo sono state rimosse. Non sono più necessari.
- Composer.collectKeySourceInformation è stato rimosso. Non è più necessario.
- I metodi isJoinedKey, joinKeyLeft e joinKeyRight sono stati rimossi. Non sono più necessari.
- Varie API di primo livello sono state spostate e riorganizzate in file diversi. A causa della semantica delle classi di file Kotlin, ciò comprometterà la compatibilità binaria, ma non la compatibilità del codice sorgente, quindi non dovrebbe rappresentare un problema per la maggior parte degli utenti.
- (I99b7d, b/177245490)
SnapshotStateObserver non è più sperimentale (Id2e6a)
Sono state eliminate alcune API deprecate in precedenza (Ice5da, b/178633932)
Sono state apportate le seguenti modifiche all'API Material:
- È stato aggiunto il parametro contentPadding a Top/BottomAppBar per consentire la personalizzazione della spaziatura interna predefinita.
- I parametri sono stati riordinati in BackdropScaffold in modo da rispettare le linee guida dell'API perché i parametri obbligatori sono prima di quelli facoltativi.
- Parametro
icon
spostato in BottomTrafficItem in modo che sia doposelected
eonClick
. - Parametro
alwaysShowLabels
rinominato in BottomTrafficItem inalwaysShowLabel
. - I parametri
bodyContent
in alcuni componenti sono stati rinominati solocontent
. - Parametri riordinati in
ButtonDefaults.buttonColors()
. Tieni presente che, poiché il tipo di parametri non è cambiato, ciò non causerà un errore nel tuo codice. Assicurati di utilizzare parametri denominati o di aggiornare l'ordine manualmente, altrimenti il tuo codice non funzionerà come in precedenza. - Parametro
secondaryVariant
aggiunto adarkColors()
. Questo colore è in genere uguale asecondary
nel tema scuro, ma aggiunge coerenza e ulteriore personalizzazione. - Sono stati rimossi ElevationDefaults e animaElevation() dalla piattaforma API pubblica perché non erano comunemente utilizzati / utili.
onValueChangeEnd
inSlider
è stato rinominato inonValueChangeFinished
e lo è stato reso null.- Parametro
text
rinominato inSnackbar
incontent
per coerenza. - È stato aggiunto il parametro
contentPadding
aDropdownMenuItem
per consentire la personalizzazione della spaziatura interna predefinita e ha resocontent
un'estensione suRowScope
. ModalDrawerLayout
rinominato inModalDrawer
.BottomDrawerLayout
rinominato inBottomDrawer
.- (I1cc66)
Versione 1.0.0-alpha12
10 febbraio 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-alpha12
. La versione 1.0.0-alpha12 contiene questi commit.
Modifiche alle API
- Il supporto per ViewGroups è stato rimosso da UiApplier. Gli elementi componibili emitView deprecati sono stati rimossi. (Ifb214).
- ComposeReference rinominato in ComposeContext (I53fcb)
- Il valore ComponentActivity.setContent è stato spostato in androidx.activity.compose.setContent nel modulo androidx.activity:activity-compose. (Icf416)
- L'API Snapshot è stata aggiornata per garantire una maggiore coerenza con Linee guida per le API e nascondere le classi di implementazione interne dall'API pubblica. (Id9e32)
- Ambienti rinominati per corrispondere alla versione Ambient -> Rinominazione di ComposeLocal. Un tempo gli ambienti Ambient si chiamavano AmbientFoo, ora i ComposeLocals si chiamano LocalFoo. (I2d55d).
- Ambient rinominati rispettivamente in ComposizioneLocal e ambientOf / staticAmbientOf in composizioneLocalOf / staticComposeLocalOf. Questa modifica rende più chiaro lo scopo di ComposizioneLocal: un meccanismo per fornire / recuperare valori locali per una composizione. Le istanze ComposeLocal devono avere il prefisso
Local
, ad esempio val LocalFoo = composizioneLocalOf { Foo() }. (Ia55b6). - I valori di takeMutableSnapshot e takeSnapshot hanno spostati come metodi companion di Snapshot. (I91f19)
@ComposableContract
è stato ritirato e sostituito con tre annotazioni più specifiche.@ComposableContract(restartable = false)
è diventato@NonRestartableComposable
@ComposableContract(readonly = true)
è diventato@ReadOnlyComposable
@ComposableContract(preventCapture = true)
è diventato@DisallowComposableCalls
L'account@ComposableContract(tracked = true)
è stato rimosso. (I60a9d)Le utilità emptyContent() e (@Composable () -> Unit).orEmpty() sono state ritirate in quanto non hanno più alcun impatto o valore positivo sulle prestazioni (I0484d)
snapshotFlow
ewithMutableSnapshot
non sono più sperimentale (I6a45f)Ora è possibile chiudere i ricompositori. I ricompositori chiusi continuerà la ricomposizione fino al completamento delle coroutine infantili della composizione. Recomposer.shutdown rinominato per annullare in contrasto con la chiusura. (Ib6d76).
L'artefatto
compose:runtime-dispatch
è ora deprecato. MonotonicFrameClock è ora disponibile in: AndroidUiDispatcher è disponibile in write:ui. (Ib5c36).L'API target del plug-in del compilatore Compose è stato sottoposto a refactoring in modo da utilizzare un'interfaccia al posto concreta. Inoltre, l'interfaccia non utilizza più un parametro di tipo.
Si tratta di una modifica interna che non dovrebbe influire sulla fonte ma è una modifica binaria che provoca un errore. (I3b922, b/169406779)
È stato introdotto lo snapshotMutableState (Icfd03)
DisposableEffectDisposable è stato rinominato DisposaleEffectResult (Ica7c6)
Recomposer.current() rimosso. [Abstract]ComposeView ora per impostazione predefinita vengono utilizzati ricompositori con ambito a livello di finestra e creati in modo lento e gestiti dal ViewTreeLifecycleOwner per la finestra. Ricomposizione e I segni di graduazione con animazione basata su FrameNanos vengono messi in pausa mentre il ciclo di vita dell'host viene interrotto. (I38e11)
Recomposer.runningRecomposers ora offre un'istanza StateFlow globale di RecomposerInfo di sola lettura per osservare lo stato della composizione in corso durante il processo. Preferisci questa API a Recomposer.current(), che ora è ritirato. (If8ebe)
DisposableEffectDisposable è stato rinominato in DisposaleEffectResult (I3ea68)
Versione 1.0.0-alpha11
28 gennaio 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-alpha11
. La versione 1.0.0-alpha11 contiene questi commit.
Modifiche alle API
- onCommit, onDispose e onActive sono stati deprecati in favore delle API SideEffect e DisposableEffect (If760e)
- L'API emit() e tutti gli sovraccarichi sono stati deprecati e rinominati ComposeNode. Le API sono identiche, solo un nome diverso per seguire le convenzioni di denominazione di Compose (I4137b)
- invalidate e composizioneReference() sono ora deprecate in favore rispettivamente di currentRecomposeScope e ricomponinciavoce. (I583a8)
ricordi-osservatore sostituisce ComposizioneLifecycleObserver e IntroductionLifecycleObserver è deprecato.
RememberObserver
sostituisceCompositionLifecycleObserver
con semantica modificata e rinominati. Il passaggio alla nuova API può essere eseguito meccanicamente per gli oggetti che vengono memorizzati solo una volta, che è e continua la pratica consigliata. Tuttavia, se un riferimento è stato ricordato più di una volta in una composizioneonRemembered
è chiamato per ogni riferimento doveonEnter
viene chiamato una sola volta.onEnter
è stato chiamato più volte se l'oggetto è stato utilizzato in sottocomposizioni, comeWithConstraints
eScaffold
, mentre il singoloonEnter
garanzia di chiamata inaffidabile ed è stata rimossa perRememberObserver
.RememberObserver
aggiungeonAbandoned
che viene chiamato seRememberObserver
istanza restituita dal callback passato aremember
ma non è stato ricordato nello stato della composizione e, di conseguenza, non verranno mai richiamationRemembered
. Questo può si verificano se un'eccezione termina la composizione prima del completamento la composizione viene eliminata perché lo stato stava producendo una composizione non è più attuale o non è più necessaria. Se l'istanza diRememberObserver
che segue il singolo il suggerimento di riferimento riportato sopra è il monitoraggio di una risorsa esternaonForgotten
eonAbandoned
indicano ciascuno che non è più necessaria. Se l'oggetto sta monitorando il lavoro avviato o risorse allocate inonRemembered
,onAbandoned
può essere ignorato perché non verrà chiamato seonRemembered
è chiamato. (I02c36)Non contrassegnare le funzioni
collectAsState()
come in linea (Ia73e4)
Correzioni di bug
- WithConstraints è stato rielaborato come BoxWithConstraints e spostato in ground.layout. (I9420b, b/173387208)
- Utilizzare TestCoroutineDispatcher per i test (I532b6)
Versione 1.0.0-alpha10
13 gennaio 2021
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-alpha10
. La versione 1.0.0-alpha10 contiene questi commit.
Cambiamento radicale
Ristrutturazione del compilatore interno L'API consente di raggruppare le modifiche ai nodi generati come risultato della composizione nella sezione fase di composizione, dopo tutte le funzioni
@Composable
sono state completate.Questa è una violazione comportamentale modifica che potrebbe influire sul codice dell'applicazione non sono più disponibili dai nodi API sperimentali fino al completamento delle modifiche applicati. In genere, questo può essere risolto il codice circostante con queste dipendenze,
SideEffect
componibile per rimandare l'esecuzione dell'evento fino al termine della creazione dei nodi inizializzato. (I018da)
Modifiche alle API
- È stato aggiunto un modo per monitorare se il ricompositore ha applicato delle modifiche. (I1b3e2).
Espandi [Abstract]API ComposeView per consentire il riciclo Viste basate sulla composizione, con la conseguente disposizione della composizione per ricrearla in un secondo momento. Aggiungi API per l'installazione e il rilevamento di ricompositori con ambito finestra e ComposeReferences per creare composizioni secondarie.
Aggiungi ViewComposeStrategy per configurare lo smaltimento della composizione strategia di [Abstract]ComposeViews; il comportamento predefinito è la finestra di collegamento. (I860ab)
Correzioni di bug
- Il ricompositore ora espone un Flow del suo stato attuale, consentendo monitorando la sua attività e l'attività degli effetti associati. (Ifb2b9).
- Ora è possibile accedere all'evento chiave nativo tramite keyEvent.nativeKeyEvent (I87c57, b/173086397).
Versione 1.0.0-alpha09
16 dicembre 2020
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-alpha09
. La versione 1.0.0-alpha09 contiene questi commit.
Modifiche alle API
Rimozione di SlotTable, SlotReader e SlotWriter dall'API pubblica. Questi elementi sono stati contrassegnati come InternalComposeAPI in precedenza. Ora sono interne al modulo di scrittura.
ComposizioneData e ComposeGroup sono stati aggiunti come sostituzione dell'API ui-tooling da usare per estrarre informazioni sulla composizione. Sono pubbliche ma non sono destinati all'uso al di fuori dell'API ui-tooling, poiché forniscono le informazioni non elaborate interpretate dall'API ui-tooling (I31a9c)
La classe Applier non è più considerata un (Id85b0)
L'interfaccia di
Applier
è stata modificata per semplificare creare alberi dal basso verso l'alto anziché dall'alto verso il basso.Il metodo
insert()
è stato rinominato ininsertTopDown()
.È stato aggiunto un nuovo metodo,
insertBottomUp()
.L'applicatore inserisce nodi nell'albero che sta modificando utilizzando
insertTopDown()
oinsertBottomUp()
, a seconda che offre prestazioni migliori.Alcuni alberi, come
LayoutNode
eView
, sono molto più più efficiente nel creare dal basso verso l'alto che dall'alto verso il basso. Prima di questa modifica, era necessario uno stack di inserimenti per implementare il dovevano essere copiati in tutti gli applicatori che dovevano essere generati dal basso verso l'alto. per migliorare le prestazioni. Con questa modificaApplier
esegue l'override diinsertBottomUp()
per creare un albero dal basso verso l'altoinsertTopDown()
per costruire l'albero dall'alto verso il basso. (Icbdc2)Compose supporta i getter di proprietà che possono effettuare chiamate componibili. Il supporto di questa funzionalità non verrà eliminato, ma la sintassi per dichiarare una proprietà getter come @Composable cambierà.
La sintassi ormai deprecata per farlo era l'annotazione della proprietà stessa:
@Composable val someProperty: Int get() = ...
La sintassi ora corretta per eseguire questa operazione è annotare il getter della proprietà:
val someProperty: Int @Composable get() = ...
Entrambe le sintassi funzioneranno per un certo periodo di tempo, ma la sintassi precedentemente ritirata diventerà un errore di compilazione. (ID9197)
Correzioni di bug
- AndroidProprietario reso interno (Ibcad0, b/170296980)
- subcomposeInto(LayoutNode) è stato impostato come interno (Id724a)
Versione 1.0.0-alpha08
2 dicembre 2020
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-alpha08
. La versione 1.0.0-alpha08 contiene questi commit.
Modifiche alle API
- È stato aggiunto il controllo del lint per la denominazione e la posizione dei parametri lambda componibili al fine di verificare la coerenza con le linee guida di Compose.
Inoltre, è stata eseguita la migrazione di alcune API utilizzando
children
come nome per il lambda finale incontent
, in base al controllo del lint e alle indicazioni. (Iec48e) - Il ricompositore non accetta più EmbeddingContext, obbligatorio le dipendenze di pianificazione sono ottenute dall'effettoCoroutineContext. FrameManager è deprecato; le integrazioni di piattaforma devono inizializzare per la gestione degli snapshot globali. (I02369)
- La funzione RestorableStateHolder.withRestorableState è stata rinominata in RestorableStateProvider (I66640)
Correzioni di bug
- Ambienti deprecati denominati con
Ambient
come suffisso e sostituiti con nuove proprietà con prefisso Ambient, conformi alle altre linee guida dell'API Ambient e Compose. (I33440) - Rimuovi il vecchio modulo di test dell'ui e i relativi stub (I3a7cb)
Versione 1.0.0-alpha07
11 novembre 2020
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-alpha07
. La versione 1.0.0-alpha07 contiene questi commit.
Nuove funzionalità
Modifiche alle API
- L'annotazione
@UnionType
è stata deprecata (I57cde) - Il valore di ambiente è stato aggiunto come alternativa per fornire i valori Ambient e può essere utilizzato per specificare i valori Ambient che verranno impostati solo se non è già stato fornito un valore Ambient. (Id6635, b/171024925)
- LaunchedTask è stato rinominato in LaunchedEffect per coerenza con le API SideEffect e DisposableEffect. Lanciatoeffetto senza non sono consentiti per incoraggiare le best practice. (Ifd3d4).
- L'applicatore ora dispone di callback onIniziaChanges/onEndChanges che sono richiamato quando un Composer inizia o termina l'applicazione di modifiche all'albero. Se necessario, possono essere utilizzati per la gestione in batch delle risorse. (Icf476)
- Il ricompositore ora richiede un CoroutineContext in fase di costruzione (Ic4610)
- Modifiche all'implementazione interna di SlotTable che non devono influire sull'API pubblica. (If9828)
- Gli adattatori rxjava2 deprecati che non utilizzano il valore iniziale sono stati rimossi (Idb72f)
Correzioni di bug
- Foundation.Text è stato deprecato e sostituito con material.Text. Per un'API di testo di base non definita che non utilizza valori di un tema, vedi androidx.compose.foundation.BasicText. (If64cb)
- Il campo BaseTextField è stato deprecato. Utilizza invece BasicTextField. (I896eb)
- Diversi simboli relativi al layout sono stati spostati da androidx.compose.ui ad androidx.compose.layout.ui. (I0fa98, b/170475424)
Contributo esterno
- Aggiunto modulo
runtime-rxjava3
per la scrittura. Simile aruntime-rxjava2
(I02cbf)
Versione 1.0.0-alpha06
28 ottobre 2020
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-alpha06
. La versione 1.0.0-alpha06 contiene questi commit.
Modifiche alle API
- Il ricompositore è ora un valore ComposeReference, nonché un principale della composizione. Il ricompositore esplicito ora è obbligatorio in meno posizioni. (I4036f)
- È stata aggiunta l'API della controparte DisposableEffect a SideEffect, riempiendo
il ruolo onCommit-with-params, ma con un valore onDispose obbligatorio.
- È stata aggiunta l'API refreshUpdatedState per pubblicare i dati dalla ricomposizione in processi in corso o di lunga durata come DisposableEffects o Lanciate Tasks.
- (ID50b9)
- MutableVector ora implementa RandomAccess (I85d73, b/170461551)
- Aggiunto Effetto collaterale componibile per l'applicazione di effetti collaterali di composizione agli oggetti gestiti dalla composizione stessa. L'effetto collaterale è destinato a sostituire il componibile onCommit. (Ia77c2).
- Nuova API sperimentale RestorableStateHolder. Consente di salvare lo stato definito con [savedInstanceState] e [rememberSavedInstanceState] per il sottoalbero prima di eliminarlo in modo da poterlo comporre la prossima volta con lo stato ripristinato. (I66884, b/166586419)
Correzioni di bug
- Abilita le transizioni in ComposeTestRule; rimuovi l'opzione per attivare il cursore lampeggiante da ComposeTestRule. (If0de3).
Versione 1.0.0-alpha05
14 ottobre 2020
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-alpha05
. La versione 1.0.0-alpha05 contiene questi commit.
Modifiche alle API
- Modificatore di input in sospensione sperimentale Modifier.pointerInput (Ia77d2)
- Le prestazioni di scorrimento di LazyColumn/Row sono migliorate riducendo il lavoro di sottocomposizione a ogni scorrimento. Il nuovo metodo hasinvalidations() è stato aggiunto per la classe Composizione. il metodo hasPendingChanges() di Recomposer è stato rinominato hasinvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
- Aggiungi l'API produceState per lanciare coroutine dalla composizione
che aggiornano un singolo valore
State<T>
nel tempo (Id4a57) - lancioInComposizione rinominata in LaunchedTask per corrispondere a Compose Linee guida per le API (I99a8e)
- L'ordine delle chiamate place() nei layout personalizzati ora definisce l'ordine di disegno degli elementi secondari (Ibc9f6)
Versione 1.0.0-alpha04
1° ottobre 2020
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-alpha04
. La versione 1.0.0-alpha04 contiene questi commit.
Modifiche alle API
- È stato aggiunto OwnerScope per consentire la raccolta di gli ambiti di osservazione del layout e del disegno, una volta non è più valido. (Ic4cf8)
- È stata aggiunta l'API derivateStateOf per creare oggetti State sulla base di un calcolo che può leggere (e derivare da) altri oggetti State (If758b)
- È stata aggiunta l'API TestOnly per SnapshotStateObserver (I6e2a9)
Correzioni di bug
- Foundation.Box è stato deprecato. Usa il metodo ground.layout.Box. (Ie5950, b/167680279)
Versione 1.0.0-alpha03
16 settembre 2020
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-alpha03
. La versione 1.0.0-alpha03 contiene questi commit.
Modifiche alle API
CompositionCoroutineScope
non implementa piùMonotonicFrameClock
. I chiamanti diwithFrameNanos
devono importare il primo livello in modo esplicito. (Icb642, b/166778123)
Correzioni di bug
- Le funzioni di test globali, ad esempio
onNode
owaitForIdle
, sono ora deprecate, esegui la migrazione alle nuove controparti definite ComposeTestRule (I7f45a) launchInComposition
non lancia più le coroutine non inviate (Ief6af, b/166486000)
Versione 1.0.0-alpha02
2 settembre 2020
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-alpha02
. La versione 1.0.0-alpha02 contiene questi commit.
Modifiche alle API
- Aggiungi le API
snapshotFlow
ewithMutableSnapshot
per il consumo e produrre modifiche ai dati degli snapshot. (I3e722). La convenzione di chiamata per le funzioni componibili ha è cambiato. Questa è una modifica che provoca un errore binario. Tutte le librerie devono essere ricompilato per funzionare con questa versione del plug-in del compilatore per la scrittura.
Questa modifica non crea una modifica che provoca un errore a livello di origine, poiché solo le API che sono cambiate sono API di compilazione con un'esplicita attivare questa funzionalità. (I7afd2, b/158123185)
Metodi di pianificazione rimossi da EmbeddingContext (I7b9be)
onPreCommit è deprecato; Il comando onCommit ora include il comando onPreCommit comportamento degli utenti.
onCommit e onActive vengono ora eseguiti nello stesso frame del coreografo che le modifiche alla composizione vengono applicate invece che all'inizio del prossimo fotogramma del coreografo. (I70403)
Versione 1.0.0-alpha01
26 agosto 2020
Viene rilasciato androidx.compose.runtime:runtime-*:1.0.0-alpha01
. La versione 1.0.0-alpha01 contiene questi commit.
Versione 0.1.0-dev
Versione 0.1.0-dev17
19 agosto 2020
Viene rilasciato androidx.compose.runtime:runtime-*:0.1.0-dev17
. La versione 0.1.0-dev17 contiene questi commit.
Modifiche alle API
- Le emissioni personalizzate ora possono dichiarare che uno o più dei setter può essere saltato e ricomposto indipendentemente dall'emissione. (Ibbd13)
Rimosse le chiamate FrameManager deprecate.
Le API di scrittura interne sono state modificate per ridurre la quantità overhead per monitorare oggetti di stato come
mutableStateof()
(I80ba6)Il componibile
state { ... }
è ora deprecato e sostituito con inviti espliciti aremember { mutableStateOf(...) }
per maggiore chiarezza. Ciò riduce la superficie complessiva dell'API e il numero di concetti per lo stato gestione e corrisponde al patternby mutableStateOf()
per la classe delega delle proprietà. (Ia5727)Flow.collectAsState ora determina il supervisore predefinito da la composizione stessa invece di diventare un Dispatchers.Main. (I9c1d9)
Si verifica un arresto anomalo quando un elemento che salva lo stato utilizzato all'interno del loop for viene corretto. Ora che è consentita la stessa chiave in savedInstanceState(), l'API di UiSavedStateRegistry viene regolata in base a questo nuovo requisito (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
Correzioni di bug
emitView
è stato deprecato. Se possibile, utilizzaAndroidView
per inviare visualizzazioni all'interno di Compose. Tieni presente che la composizione diretta di Visualizzazioni e ViewGroups non sarà supportata in futuro, a meno che non vengano lasciate nella struttura di composizione, nei casi in cui sia possibile farlo utilizzando AndroidView. (I29b1e, b/163871221)
Versione 0.1.0-dev16
5 agosto 2020
Viene rilasciato androidx.compose.runtime:runtime-*:0.1.0-dev16
. La versione 0.1.0-dev16 contiene questi commit.
Modifiche alle API
Il criterio di mutazione predefinito di
mutableStateOf()
,ambientOf()
esavedInstanceStateOf()
sono statistructuralEqualityPolicy()
anzichéreferentialEqualityPolicy()
.L'impostazione predefinita per decidere se un nuovo valore assegnato a un L'istanza
mutableStateOf()
è considerata una modifica e ora il valore predefinito sarà utilizzando==
anziché===
.Consulta https://kotlinlang.org/docs/reference/equality.html
ambientOf()
esavedInstanceStateOf()
utilizzanomutableStateOf()
nelle loro implementazioni, perciò sono state modificate permutableStateOf()
.L'utilizzo dell'uguaglianza strutturale corrisponde maggiormente allo sviluppo le aspettative.
Ad esempio,
val state = mutableStateOf(1f)
seguito da
state.value = 1f
non prenderà più in considerazione una modifica a
state
e gli utilizzi deistate
durante la composizione non dovrà più essere ricomposto.Si tratta di una modifica che provoca un errore, ma nella maggior parte dei casi (ad esempio quando si utilizza che non eseguono l'override di
equals()
), non avrà un un effetto evidente su un'applicazione.Classi che eseguono l'override di
equals()
, come le classidata
, potrebbero notare un peggioramento delle prestazioni quando i loro metodiequals()
per impostazione predefinita vengono ora chiamati quando assegnati a unmutableStateOf()
.Il comportamento precedente può essere ripristinato aggiungendo il criterio parametro
policy = referentialEqualityPolicy()
alle chiamate amutableStateOf()
,ambientOf()
esavedInstanceStateOf()
. (Ic21a7).Row
eColumn
ora sono funzioni in linea significativamente per ridurre i costi di utilizzo. (I75c10)
Correzioni di bug
- L'impostazione setViewContent è stata ritirata. al suo posto occorre usare setContent. (I7e497, b/160335130)
È stato aggiunto il MonotonicFrameAnimationClock che consente di utilizzare un oggetto MonotonicFrameClock come AnimationClockObservable per colmare il divario tra i nuovi orologi basati su coroutine e le API che utilizzano ancora il vecchio orologi basati su callback.
L'equivalente MonotonicFrameClock di ManualAnimationClock è ora ManualFrameClock. (I111c7, b/161247083)
Modifier.stateTrascinabile è stato completamente rielaborato e rinominato in Modifier.svisible. È stata introdotta una nuova classe swipeableState È stato eseguito il refactoring di DrawerState e BottomDrawerState in modo da ereditarlo. [Modal/Bottom]DrawerLayout non assume più un parametro onStateChange. (I72332, b/148023068)
Modifier.plus è stato ritirato. Usa Modifier.then al suo posto. 'Allora' ha un segnale di ordinamento più forte, ma vieta anche di digitare
Modifier.padding().background() + anotherModifier
, il che spezza la catena e rende più difficile da leggere (Iedd58, b/161529964)SubcomposeLayout viene aggiunto. Si tratta di una primitiva di basso livello che consente di comporre i bambini durante la misurazione se vogliamo utilizzare alcuni valori disponibili solo in seguito durante la misurazione per la composizione del sottoalbero. Ad esempio, WithConstraints non è implementato utilizzando SubcomposeLayout. (I25cc8)
Material FilledTextField è stato rinominato TextField e TextField di base è stato rinominato BaseTextField per semplificare l'individuazione e l'utilizzo dell'API desiderata più semplice (Ia6242, b/155482676)
Modifier.drawBackground è stato rinominato in Modifier.background (I13677)
Versione 0.1.0-dev15
22 luglio 2020
Viene rilasciato androidx.compose.runtime:runtime-*:0.1.0-dev15
. La versione 0.1.0-dev15 contiene questi commit.
Aggiornamento delle dipendenze
- Per utilizzare la versione
0.1.0-dev15
di Compose, dovrai aggiornare le dipendenze in base ai nuovi snippet di codice mostrati sopra nella sezione Dichiarazione delle dipendenze.
Modifiche alle API
L'annotazione
@Model
è ora deprecata. Usa state e mutableStateOf come alternative. Questa decisione relativa al ritiro è stata presa dopo un'attenta discussione.Giustificazione
La motivazione include, a titolo esemplificativo:
- Riduce l'area e i concetti di base delle API da insegnare
- È più in linea con altri toolkit comparabili (Swift UI, React, Flutter)
- Decisione reversibile. Possiamo sempre ripristinare
@Model
in un secondo momento. - Elimina l'uso dei casi limite e le domande difficili da rispondere sulla configurazione di
@Model
come aspetti da gestire @Model
classi di dati, uguale, hashcode ecc.- Come posso "osservare" alcune proprietà e altre no?
- Come posso specificare l'uguaglianza strutturale e referenziale da utilizzare nell'osservazione?
- Riduce la "magia" nel sistema. ridurrebbe la probabilità che qualcuno supponga che il sistema sia più intelligente di quanto lo sia (ovvero che sa come confrontare un elenco)
- Rende la granularità dell'osservazione più intuitiva.
- Migliora la capacità di refactoring della variabile -> proprietà sulla classe
- Apre potenzialmente la possibilità di fare ottimizzazioni manuali specifiche per lo stato
- Si allinea più da vicino al resto dell'ecosistema e riduce l'ambiguità verso l'immutabile o il fatto di "accettare uno stato mutabile"
Note sulla migrazione
Quasi tutti gli utilizzi esistenti di
@Model
vengono trasformati in modo banale in uno di questi due modi. L'esempio seguente ha una classe@Model
con due proprietà a solo scopo di esempio e viene utilizzata in un componibile.@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 } ) }
Alternativa 1: usa
State<OriginalClass>
e crea delle copie.Questo approccio è semplificato dalle classi di dati di Kotlin. In sostanza, converti tutte le proprietà
var
precedenti in proprietàval
di una classe di dati, quindi utilizzastate
anzichéremember
e assegna il valore dello stato alle copie clonate dell'originale utilizzando il metodo di convenienzacopy(...)
della classe di dati.È importante notare che questo approccio funziona solo quando le uniche mutazioni in quella classe sono state eseguite nello stesso ambito in cui viene creata l'istanza
State
. Se la classe si sta mutando internamente al di fuori dell'ambito di utilizzo e ci si affida all'osservazione di ciò, l'approccio successivo è quello che vorrà usare.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) } ) }
Alternativa 2: usa mutableStateOf e delegati della proprietà
Questo approccio è semplificato grazie ai delegati delle proprietà di Kotlin e all'API
mutableStateOf
, che consente di creare istanze MutableState al di fuori della composizione. In sostanza, sostituisci tutte le proprietàvar
della classe originale con le proprietàvar
conmutableStateOf
come delegato della proprietà. Ciò presenta il vantaggio che l'utilizzo della classe non cambierà affatto, ma solo la sua implementazione interna. Tuttavia, il comportamento non è completamente identico all'esempio originale, poiché ora ogni proprietà viene osservata/sottoscritta individualmente, quindi le ricomposizioni che vedi dopo questo refactoring potrebbero essere più limitate (una buona cosa).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/14316}315)
Modifica la strategia di generazione del codice del compilatore di Compose. Prima della modifica, il compilatore di composizione trasformava le chiamate in funzioni componibili. Con questa modifica, trasformiamo il corpo di una funzione componibile e lasciamo il sito di chiamata inalterato (soprattutto).
Ciò significa che la maggior parte della logica che comunica con il runtime di composizione avviene all'inizio del corpo della funzione, anziché sul sito della chiamata.
Questa modifica dovrebbe essere compatibile con l'origine per tutti gli utilizzi di Compose. La maggior parte degli utenti di Compose non dovrebbe dover aggiornare alcun codice a seguito di questa modifica.
Per supportare questo lavoro, la firma JVM di tutte le funzioni componibili è stata modificata. Una funzione componibile che accetta un singolo parametro viene trasformata in una funzione che accetta tre parametri. I parametri aggiuntivi sono Composer, un numero intero "chiave". un numero intero con maschera di bit utilizzato per propagare i metadati attraverso le chiamate.
Ora Compose trasforma anche gli argomenti predefiniti in una funzione componibile. Lo fa senza introdurre un ulteriore sovraccarico sintetico predefinito della funzione stessa, pertanto questa modifica comporterà la definizione di un minor numero di funzioni.
Cambiamenti comportamentali intenzionali noti derivanti da quanto segue:
- Alcune chiamate saltano quelle che non avrebbero avuto in precedenza
- Le espressioni componibili nelle espressioni di argomento predefinite sono ora sottoscritte e gestite correttamente
Questo lavoro ha incluso alcune ottimizzazioni: 1. Il risultato del confronto di parametri viene propagato attraverso il grafico delle chiamate ad altre funzioni componibili. Questo comporterà un minor numero di confronti in fase di runtime, la riduzione delle dimensioni della tabella di slot e la possibilità di saltare le funzioni componibili che in precedenza non erano ignorate 2. I parametri che vengono considerati "statici" al momento della compilazione non vengono più confrontati né archiviati nel runtime. Questo riduce il numero di confronti e le dimensioni della tabella slot. 3. La struttura del flusso di controllo del corpo delle funzioni viene utilizzata per ridurre al minimo il numero di gruppi generati. Questo riduce le dimensioni della tabella degli slot e si traduce in un minore lavoro per il runtime 4, I parametri inutilizzati di invio e ricezione alle funzioni non sono inclusi nel determinare la possibilità di ignorare la funzione se non vengono utilizzati all'interno del corpo della funzione.
La maggior parte delle modifiche che provocano un errore riguarda le API scelte direttamente come target dal compilatore e l'utilizzo tipico della scrittura non sarà interessato: 1. Composer::startExpr è stato rimosso 2. Composer::endExpr rimosso 3. Composer::call è stato deprecato 4, Gli sovraccarichi non varargs di
key
sono stati rimossi. Da questo momento in poi utilizza la versione divararg
. 5. L'annotazione Pivotal è stata deprecata. Usakey
come sostituto. 6. ScopeUpdateScope::updateScope è stato modificato in modo che sia prevista una Function3 anziché Function1 7. rebootableFunction e rebootableFunctionN sono stati aggiornati per includere parametri aggiuntivi per il tempo di compilazione (I60756, b/143464846)Sono stati aggiunti sortWith e removeRange a MutableVector (Icccf7)
Aggiunte implementazioni di metodi predefiniti per ComposizioneLifecycleObserver (I24289)
L'applicatore ora richiede un metodo clear() per l'eliminazione composizioni (Ibe697)
È stato aggiunto asMutableList() a MutableVector per consentire l'accesso all'API pubblica senza dover copiare l'intero dall'elenco di lettura. (I298df)
È stato aggiunto allowCoroutineScope() per ottenere un modello CoroutineScope in composizione per il lancio di job in risposta agli eventi. (I0e264).
MutableVector è una nuova raccolta che non implementare una qualsiasi dell'interfaccia standard di raccolta. Questo raccolta supera gli altri requisiti ed è da usare esclusivamente in implementazioni interne. (I8ebd6)
Rimozione temporanea di
StableMutableList
eStableMutableMap
per evitare problemi nella versione di Kotlin Composer. Questi verranno reintrodotte dopo l'aggiornamento della scrittura a una versione di Kotlin che non presenta questo problema.SnapshotStateList
eSnapshotStateMap
ora sono pubblici, ma lo saranno ritirato dopo il ripristino diStableMutableList
eStableMutableMap
. (Ia7769)aggiungi la funzione FrameNanos di primo livello per la sincronizzazione dell'animazione (Ie34c5)
L'annotazione @Untracked è stata deprecata. Sostituisci con @ComposableContract(tracked=false) (Id211e)
RiavviabileFunction e API associate sono state rinominate ComposableLambda e così via. Queste API sono state scelte come target solo dal compilatore, quindi questo non dovrebbe influire normalmente sulla compatibilità a livello di origine. La ridenominazione è stata eseguita principalmente per comunicare l'aspetto migliore di questa classe quando viene visualizzata nelle analisi dello stack (I7eb25)
L'annotazione @Composable non è più valida per le classi (Ia5f02)
Ambient<T>
ora è @Stable anziché @Immutable (I0b4bb)Prima di questa modifica, il plug-in del compilatore Composer avrebbe intercettato in modo non banale le chiamate ai costruttori all'interno di una funzione @Composable se esisteva un (I5205a, b/158123804)
Ricomponi componibile non è più un'astrazione utile. La maggior parte delle ricomposizioni dovrebbe avvenire in base alle assegnazioni MutableState. Per qualsiasi altro problema, ti consigliamo di utilizzare la funzione
invalidate
per attivare una ricomposizione dell'ambito attuale. (Ifc992).L'osservazione non è più un'astrazione utile. Se hai bisogno di replicarla, la sua implementazione può essere replicata semplicemente creando una funzione componibile che esegue un parametro lambda componibile. Ad esempio,
@Composable fun Observe(body: @Composable () -> Unit) = body()
(I40d37)@Direct è stato deprecato a favore di @ComposableContract(restartable=false) (If4708)
È stato aggiunto un adattatore per lo StateFlow introdotto di recente che consente di precompilare il valore iniziale in modo che lo stato restituito non sia null (I61dd8, b/156233789).
È stato aggiunto un adattatore per Flow. Esempio di utilizzo: val value di flow.collectAsState() (If2198, b/153375923)
[Mutable]Operatori dei delegati delle proprietà statali spostati nelle estensioni per supportare le ottimizzazioni dei delegati per le proprietà Kotlin 1.4. I chiamanti devono aggiungere importazioni per continuare a utilizzare
by state { ... }
oby mutableStateOf(...)
. (I5312c)L'elemento androidx.compose.ViewComposer è stato spostato in androidx.ui.node.UiComposer Il file androidx.compose.Emittable è stato rimosso. Era ridondante con ComponentNode. Il comando androidx.compose.ViewAdapters è stato rimosso. Non sono più un caso d'uso supportato. L'API Compose.composeInto è stata ritirata. Usa invece
setContent
osetViewContent
. L'API Compose.disposeCompose è stata deprecata. Utilizza invece il metododispose
nella colonnaComposition
restituita dasetContent
. Il file androidx.compose.Compose.subcomposeInto è stato spostato in androidx.ui.core.subcomposeInto ComponentNode#emitInsertAt è stato rinominato in ComponentNode#insertAt ComponentNode#emitRemoveAt è stato rinominato in ComponentNode#removeAt ComponentNode#emitMode è stato rinominato in ComponentNode#move (Idef00)Il flag
ComposeFlags.COMPOSER_PARAM
è stato aggiornato intrue
e cambierà la strategia di generazione del codice per il plug-in di scrittura. A livello generale, questo fa sì che le funzioni @Composable vengano generate con un parametro sintetico aggiuntivo, che viene passato alle chiamate @Composable successive per consentire al runtime di gestire correttamente l'esecuzione. Si tratta di una modifica significativa che provoca un'interruzione del programma binario, tuttavia, dovrebbe preservare la compatibilità a livello di origine in tutti gli utilizzi autorizzati della scrittura. (I7971c)Interruzione delle modifiche all'API Ambient. Per informazioni dettagliate, consulta la documentazione relativa al log e a
Ambient<T>
(I4c7ee, b/143769776)È stato aggiunto ui-livedata, un nuovo artefatto con un adattatore per LiveData. Esempio di utilizzo: val value di liveData.observeAsState() (Ie9e8c, b/150465596)
Gli adattatori Rx senza valore iniziale esplicito sono deprecati. L'uso di null non è sempre l'impostazione predefinita migliore, ad esempio quando si ha una lista, è meglio iniziare con emptyList() o qualsiasi altro valore predefinito ragionevole (I00025, b/161348384)
Aggiunto ui-rxjava2 - nuovo artefatto con adattatori per RxJava2. Esempio di utilizzo: val value di observable.subscribeAsState() (Ifab4b, b/153369097)
Ora è possibile utilizzare
savedInstanceState()
con tipi di valori null (I6847f, b/153532190)Nuove funzioni listSaver() e mapSaver() per semplificare la scrittura di oggetti Risparmiatori personalizzati (I8cf68, b/152331508)
Nuove funzioni: savedInstanceState() e saveSavedInstanceState(). Sono simili a state() e ricorderai(), ma hanno un supporto dello stato di istanza salvato (If1987, b/152025209)
Correzioni di bug
runOnIdleCompose
rinominato inrunOnIdle
(I83607)- Aggiunta dell'API sperimentale LayoutNode (I4f2e9)
- androidx.ui.foundation.TextFieldValue e L'API androidx.ui.input.EditorValue è deprecata. Campo di testo, Gli elementi componibili FilledTextField e CoreTextField che utilizzano anche questo tipo è deprecato. Utilizza androidx.ui.input.TextFieldValue (I4066d, b/155211005)
- DrawBackground deprecato rimosso API a favore dell'estensione drawBackground API su Modificatore. Refactoring disegno di colore, pennello e vernice per ridurre anche i percorsi del codice come requisito di rimozione per la creazione del modificatore come parte della composizione. (I0343a)
- Aggiornato a un livello superiore che espongono un elemento Canvas esponi CanvasScope. Questa operazione rimuove la necessità da parte dei consumatori di mantenere oggetti Paint. Per i consumatori che richiedono comunque l'accesso a Canvas è possibile usare l'estensione drawCanvas che fornisce un callback al problema di tracciare i comandi con Tela. (I80afd)
- L'API lambda finale WithConstraints è stata modificata. Ora, invece di due parametri, ha un ambito ricevitore che, oltre ai vincoli e layoutDirection fornisce le proprietà minLarghezza, maxwidth, minHeight e maxHeight in Dp (I91b9a, b/149979702)
- Aggiunto modificatore di spaziatura interna simmetrica. (I39840)
- I valori wrapContentwidth e wrapContentHeight sono stati aggiornati per prevedere un allineamento verticale o orizzontale anziché un allineamento. Il modificatore di gravità è stato aggiornato per accettare l'allineamento verticale o orizzontale. Riga, colonna e pila sono state aggiornate per supportare gli allineamenti continui personalizzati. (Ib0728)
- Il modulo ui-text è stato rinominato ui-text-core (I57dec)
- Migliora l'API DrawModifier:
- Ambito del ricevitore per draw() ContentDrawScope
- Sono stati rimossi tutti i parametri in draw()
- DrawScope ha la stessa interfaccia del precedente CanvasScope
- ContentDrawScope ha il metodo drawContent() (Ibaced, b/152919067)
- ColoredRect è stato ritirato. Usa invece il criterio
Box(Modifier.preferredSize(width, height).drawBackground(color))
. (I499fa, b/152753731) - Sostituito Modificatore più operatore con funzioni di estensione di fabbrica (I225e4)
- I membri RowScope e ColumnScope ora sono accessibili al di fuori di Row e Column. (I3a641)
- Il nome LayoutFlessibile è stato rinominato in LayoutWeight. Parametro stretto rinominato da riempire. (If4738)
- WithConstraints ha ottenuto il parametro LayoutDirection (I6d6f7)
- Lo sfondo è stato rinominato in DrawBackground e viene memorizzato per impostazione predefinita (Ia0bd3)
- Sostituito ButtonStyle con funzioni distinte e rimosso l'overload di testo (stringa). Visualizza esempi aggiornati per le informazioni sull'utilizzo. (If63ab, b/146478620, b/146482131)
runOnIdleCompose
erunOnUiThread
sono ora funzioni globali invece dei metodi su ComposeTestRule. (Icbe8f)
Contributo esterno
- Rimuovi l'API non necessaria, come Looper e Gestori, dal livello di portabilità del runtime di Compose (I6847d)
- Ritira
Flow<T>.collectAsState()
senza valore iniziale. UsaStateFlow<T>
o trasmetti un valore iniziale esplicito. (I63f98, b/157674865)