Compose 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 dell'API per tutti i pacchetti Compose)
Ultimo aggiornamento | Release stabile | Candidato per la release | Versione beta | Alpha Release |
---|---|---|---|---|
2 luglio 2025 | 1.8.3 | - | 1.9.0-beta02 | - |
Struttura
Compose è una combinazione di 7 ID gruppo Maven all'interno di androidx
. Ogni gruppo
contiene un sottoinsieme mirato di funzionalità, ognuna con il proprio insieme di note di rilascio.
Questa tabella spiega i gruppi e fornisce i link a ogni insieme di note di rilascio.
Gruppo | Descrizione |
---|---|
compose.animation | Creare animazioni nelle applicazioni Jetpack Compose per arricchire l'esperienza utente. |
compose.compiler | Trasforma le funzioni @Composable e attiva le ottimizzazioni con un plug-in del compilatore Kotlin. |
compose.foundation | Scrivi applicazioni Jetpack Compose con componenti di base pronti all'uso ed estendi le fondamenta per creare i tuoi elementi del sistema di progettazione. |
compose.material | Crea interfacce utente Jetpack Compose con componenti Material Design pronti all'uso. Si tratta del punto di ingresso di livello superiore di Compose, progettato per fornire componenti che corrispondono a quelli descritti all'indirizzo www.material.io. |
compose.material3 | Crea UI Jetpack Compose con i componenti Material Design 3, la prossima evoluzione di Material Design. Material 3 include componenti e temi aggiornati e funzionalità di personalizzazione Material You come il colore dinamico. È progettato per essere coerente con il nuovo stile visivo e l'interfaccia utente di sistema di Android 12. |
compose.runtime | Elementi costitutivi fondamentali del modello di programmazione e della gestione dello stato di Compose e runtime di base per il plug-in del compilatore Compose da utilizzare come target. |
compose.ui | Componenti fondamentali dell'interfaccia utente di Compose necessari per interagire con il dispositivo, inclusi layout, disegno e input. |
Dichiarazione di dipendenze
Per aggiungere una dipendenza da Compose, devi aggiungere il repository Maven di Google al tuo progetto. Per saperne di più, consulta il repository Maven di Google.
Aggiungi le dipendenze per gli artefatti che ti servono nel file build.gradle
per
la tua app o il tuo modulo:
Alla moda
dependencies { implementation "androidx.compose.runtime:runtime:1.8.3" implementation "androidx.compose.runtime:runtime-livedata:1.8.3" implementation "androidx.compose.runtime:runtime-rxjava2:1.8.3" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.runtime:runtime:1.8.3") implementation("androidx.compose.runtime:runtime-livedata:1.8.3") implementation("androidx.compose.runtime:runtime-rxjava2:1.8.3") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Per saperne di più sulle dipendenze, consulta Aggiungere dipendenze di build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa libreria. Prima di crearne uno nuovo, dai un'occhiata ai problemi esistenti in questa libreria. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per ulteriori informazioni, consulta la documentazione di Issue Tracker.
Tracciamento runtime versione 1.7
Versione 1.7.0-rc01
18 settembre 2024
androidx.compose.runtime:runtime-tracing:1.7.0-rc01
viene ritirata. La versione 1.7.0-rc01 contiene questi commit.
Runtime Tracing versione 1.0
Versione 1.0.0-beta01
29 novembre 2023
androidx.compose.runtime:runtime-tracing:1.0.0-beta01
viene ritirata. La versione 1.0.0-beta01 contiene questi commit.
Versione 1.0.0-alpha05
15 novembre 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha05
viene ritirata. La versione 1.0.0-alpha05 contiene questi commit.
Correzioni di bug
- Sono state bloccate le dipendenze alle versioni stabili supportate più basse (ad es. compose-runtime e tracing-perfetto), risolvendo un problema a causa del quale compose-runtime-tracing inseriva una versione più recente di compose-runtime nell'app.
Versione 1.0.0-alpha04
23 agosto 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha04
viene ritirata. La versione 1.0.0-alpha04 contiene questi commit.
Nuove funzionalità
- Compatibile con le ultime versioni di Benchmark e Tracing Perfetto, che consente il supporto del 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)- Rendere le API Perfetto Tracing SDK coerenti con
android.os.Trace
. (I73ba0, b/282199917) - Prerequisiti per la tracciabilità all'avvio dell'app. (Iad890)
- File API sperimentali e pubbliche uniti (I0f2e1, b/278769092)
Versione 1.0.0-alpha02
8 febbraio 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha02
viene ritirata. La versione 1.0.0-alpha02 contiene questi commit.
Nuove funzionalità
- Nessuna modifica funzionale. Ottimizzazioni multiple del rendimento nelle dipendenze downstream
androidx.tracing:tracing-perfetto*
.
Versione 1.0.0-alpha01
7 settembre 2022
androidx.compose.runtime:runtime-tracing:1.0.0-alpha01
viene ritirata. La versione 1.0.0-alpha01 contiene questi commit.
Nuove funzionalità
androidx.compose.runtime:runtime-tracing
è una libreria che, in presenza di strumenti che la supportano (disponibili a breve), consente di estendere la tracciabilità in un'app Compose. Questa release iniziale è la 1.0.0-alpha01.
Versione 1.9
Versione 1.9.0-beta02
2 luglio 2025
androidx.compose.runtime:runtime-*:1.9.0-beta02
viene ritirata. La versione 1.9.0-beta02 contiene questi commit.
Correzioni di bug
- È stata ridotta la durata di riferimento dei valori nella tabella degli slot tra le composizioni. Esistono casi in cui un riferimento in una tabella degli slot potrebbe durare un frame in più del necessario. (I49e74, b/418516940)
- Rimuovi la codifica Kotlin per i metodi di ricarica rapida. (Ic56a3, b/426871325)
Versione 1.9.0-beta01
18 giugno 2025
androidx.compose.runtime:runtime-*:1.9.0-beta01
viene ritirata. La versione 1.9.0-beta01 contiene questi commit.
Modifiche alle API
- È stata aggiunta un'API di strumentazione per l'analisi delle informazioni sull'origine aggiunte dal compilatore Compose. (Iceaf9, b/408492167)
SnapshotStateSet
ora implementaParcelable
su Android, pertanto è supportato l'utilizzo come parte dirememberSaveable { ... }
. (I755dd, b/378623803)SnapshotStateList
ora implementaParcelable
su Android, pertanto è supportato l'utilizzo come parte dirememberSaveable { ... }
. (Id18be, b/378623803)movableContentOf()
ora è contrassegnato con l'annotazione@RememberInComposition
, che consente a lint di rilevare utilizzi errati (I2738d)- È stata aggiornata l'API sperimentale per gli osservatori di composizione per consentire un'osservazione più completa delle cause di ricomposizione (I32b6a)
- Modifica
setDiagnosticStackTraceEnabled
in sperimentale per tenere conto del futuro sviluppo di questa funzionalità. (I11db3) currentCompositeKeyHash
è stato ritirato. Utilizza invececurrentCompositeKeyHashCode
. L'API di sostituzione codifica lo stesso hash con più bit, il che riduce in modo esponenziale la possibilità che due gruppi casuali non correlati nella gerarchia di composizione abbiano la stessa chiave hash. (I4cb6a, b/177562901)- I progetti rilasciati con Kotlin 2.0 richiedono l'utilizzo di KGP 2.0.0 o versioni successive (Idb6b5)
@Stable
,@Immutable
e@StableMarker
sono stati spostati nell'annotazione in fase di runtime (in modo compatibile). Ora puoi fare affidamento sull'annotazione in fase di runtime se vuoi utilizzare queste annotazioni da librerie che non dipendono da Compose. (I23a16)- È stato rinominato l'overload
rememberSaveable
che accetta unKSerializer
inrememberSerializable
. Questa modifica chiarisce l'utilizzo previsto conkotlinx.serialization
. Il supporto delle classikotlinx.Serializable
generiche direttamente inrememberSaveable
richiederebbe un parametro di tiporeified
, che interromperebbe la compatibilità dell'origine richiedendo a tutti i siti di chiamata di fornire informazioni sul tipo reificato in fase di compilazione. (Idb875, I38627, b/376028110)
Correzioni di bug
- Le composizioni impostate con contenuti in pausa che sono stati annullati devono essere eliminate. Ora viene controllato dalla composizione e verrà generato un errore se viene riutilizzato. (I2daa5, b/406792785)
- È stata corretta la composizione sospendibile in modo che non invii più un
onForgotten
spurio per ricordare agli osservatori quando la composizione sospendibile viene eliminata.RememberObservers
in una composizione sospendibile annullata deve ricevere solo un onAbandoned. (I26f54) - È stato risolto un problema relativo ai contenuti mobili per cui le invalidazioni che arrivano nelle fasi avanzate dell'elaborazione dei contenuti mobili vengono aggiunte al compositore, ma non vengono aggiornate quando i contenuti vengono spostati, causando la ricomposizione dei contenuti nella posizione errata. (Icd2fa, b/409439507)
- È stato risolto un problema che si verificava quando i contenuti mobili venivano invalidati dopo la composizione, ma prima dello spostamento. (I99eac, b/229001114)
- La chiamata a
remove()
di un iteratore di elenco prodotto daSnapshotStateList
dopo la chiamata aprevious()
potrebbe rimuovere l'elemento errato dall'elenco e non corrisponde a ciò che faArrayList
per la stessa sequenza di chiamate. (I05ab7, b/417493222) - È stato risolto un problema di ordinamento con l'invio di
onForgotton
che potrebbe, ad esempio, causare l'esecuzione dionDispose
di effetti usa e getta nell'ordine errato. (Ic1c91, b/417450712) - Correzione per il riutilizzo della gestione dello stato nella composizione sospendibile (Ife96e, b/404058957)
- È stato corretto lo stato di riutilizzo quando una composizione è stata messa in pausa e riavviata, ma alcuni stati precedentemente in pausa dovevano essere ricomposti perché alcuni stati letti sono cambiati mentre la composizione era in pausa. (I441d1, b/416209738)
- È stata completata la correzione del problema di composizione sospendibile per il problema b/404058957, la correzione precedente era incompleta. (I1afd4, b/404058957)
OffsetApplier
ora esegue correttamente l'override diapply()
, introdotto con la composizione sospendibile. La sua assenza potrebbe causare un'eccezione nella composizione sospendibile durante l'aggiornamento dei nodi virtuali. (Idbf31, b/409291131)- È stato risolto un deadlock che potrebbe interessare gli utenti di Molecule quando una chiamata sospesa a
FrameClock.withFrameNanos
viene annullata durante l'invio di un frame. (I89cab, b/407027032) - Il ricompositore potrebbe rimanere inattivo con contenuti mobili (Ie5416, b/409267170)
- L'ordine in cui compaiono
onReuse
eonDeactivate
potrebbe essere invertito durante la composizione in pausa. Ora è garantito che si verifichino nell'ordine dionDeactivate
/onReuse
. (I996e4, b/404058957) - Correzione dell'invio degli osservatori memorizzati nella composizione sospendibile per evitare l'invio di osservatori memorizzati/dimenticati nella stessa applicazione (I570b2, b/404645679, b/407931790)
- È stato attivato
LifecycleRegistry
in modalità non sicura in Compose Multiplatform per disattivare i controlliMainThread
e risolvere i problemi di threading. Per ulteriori dettagli, consulta CMP-8227. (Icee87)
Contributo esterno
- È stato corretto un bug che interessava gli utenti di Molecule per cui l'utilizzo di
RecompositionMode.Immediate
poteva causare ricomposizioni mancanti. (I9f3a9, b/419527812) - Sono stati esposti i metodi getter
PausableComposition
isApplied
eisCancelled
che consentono di controllare lo stato diPausableComposition
. (I994aa) - Aggiunta di
AnnotationTarget.FUNCTION
all'annotazioneFunctionKeyMeta
. (I08021)
Versione 1.9.0-alpha04
4 giugno 2025
androidx.compose.runtime:runtime-*:1.9.0-alpha04
viene ritirata. La versione 1.9.0-alpha04 contiene questi commit.
Modifiche alle API
SnapshotStateSet
ora implementa Parcelable su Android, quindi è supportato per l'utilizzo come parte dirememberSaveable { ... }
. (I755dd, b/378623803)SnapshotStateList
ora implementa Parcelable su Android, quindi è supportato per l'utilizzo come parte dirememberSaveable { ... }
. (Id18be, b/378623803)movableContentOf()
ora è contrassegnato con l'annotazione@RememberInComposition
, che consente a lint di rilevare utilizzi errati (I2738d)- È stata aggiornata l'API sperimentale per gli osservatori di composizione per consentire un'osservazione più completa delle cause di ricomposizione (I32b6a)
Correzioni di bug
- È stato risolto un problema di ordinamento con l'invio di
onForgotton
che potrebbe, ad esempio, causare l'esecuzione dionDispose
di effetti usa e getta nell'ordine errato. (Ic1c91, b/417450712) - Correzione per il riutilizzo della gestione dello stato nella composizione sospendibile (Ife96e, b/404058957)
- Correzione di bug minori per rendere compatibile il rilevamento delle raccolte modificabili sia per K1 che per K2 (Ie4878)
- Correzione di bug minori per rendere la ricerca delle annotazioni sugli accessor di proprietà sottoposti a override compatibile sia con K1 che con K2 (I9900d)
Contributo esterno
- È stato corretto un bug che interessava gli utenti di Molecule per cui l'utilizzo di
RecompositionMode.Immediate
poteva causare ricomposizioni mancanti. (I9f3a9, b/419527812) - Sono stati esposti i metodi getter
PausableComposition
isApplied eisCancelled
, che consentono di controllare lo stato diPausableComposition
. (I994aa)
Versione 1.9.0-alpha03
20 maggio 2025
androidx.compose.runtime:runtime-*:1.9.0-alpha03
viene ritirata. La versione 1.9.0-alpha03 contiene questi commit.
Modifiche alle API
- Modifica
setDiagnosticStackTraceEnabled
in sperimentale per tenere conto del futuro sviluppo di questa funzionalità. (I11db3)
Correzioni di bug
- È stato corretto lo stato di riutilizzo quando una composizione è stata messa in pausa e riavviata, ma alcuni stati precedentemente in pausa dovevano essere ricomposti perché alcuni stati letti sono cambiati mentre la composizione era in pausa. (I441d1, b/416209738)
- È stata completata la correzione del problema relativo al ricordo dell'invio della composizione sospendibile per il problema b/404058957, la correzione precedente era incompleta. (I1afd4, b/404058957)
SaveableStateHolder.SaveableStateProvider
ora fornisce unLocalSavedStateRegistryOwner
ai suoi contenuti tramite la composizione. (Ia2761, b/413108878)androidx.compose.runtime.saveable
ora dipende daandroidx.lifecycle.runtime.compose
. (I53228, b/413108878)
Versione 1.9.0-alpha02
7 maggio 2025
androidx.compose.runtime:runtime-*:1.9.0-alpha02
viene ritirata. La versione 1.9.0-alpha02 contiene questi commit.
Modifiche alle API
rememberSaveable
deprecato con una "chiave" personalizzata. Ignora l'ambito posizionale, causando bug di stato e comportamenti incoerenti (ad es. condivisione o perdita di stato involontaria, problemi inLazyLayouts
nidificati). Rimuovi il parametro "key" per utilizzare l'ambito posizionale per uno stato coerente e con ambito locale. Per ulteriori dettagli, consulta il messaggio di commit completo. (I5e6ff, b/357685851)
Correzioni di bug
OffsetApplier
ora esegue correttamente l'override diapply()
, introdotto con la composizione sospendibile. La mancata presenza di questo valore potrebbe causare la generazione di un'eccezione durante l'aggiornamento dei nodi virtuali. (Idbf31, b/409291131)- È stato risolto un deadlock che potrebbe interessare gli utenti di Molecule quando una chiamata sospesa a
FrameClock.withFrameNanos
viene annullata durante l'invio di un frame. (I89cab, b/407027032) - Il ricompositore potrebbe rimanere inattivo con lo stato dei contenuti mobili ancora in attesa di essere eliminati. Normalmente ciò non si verifica perché lo stato dei contenuti mobili viene eliminato nel ciclo principale di Recomposer. Tuttavia, ciò può verificarsi nella composizione in pausa quando i contenuti mobili vengono eliminati durante
resume()
(Ie5416, b/409267170) - L'ordine in cui compaiono
onReuse
eonDeactivate
potrebbe essere invertito durante la composizione in pausa. Ora è garantito che si verifichino nell'ordine dionDeactivate/onReuse
. (I996e4, b/404058957)
Versione 1.9.0-alpha01
23 aprile 2025
androidx.compose.runtime:runtime-*:1.9.0-alpha01
viene ritirata. La versione 1.9.0-alpha01 contiene questi commit.
Modifiche al comportamento
- I controlli Lint forniti con Compose ora richiedono una versione minima di AGP 8.8.2. Se non riesci a eseguire l'upgrade di AGP, puoi eseguire l'upgrade di Lint separatamente utilizzando
android.experimental.lint.version=8.8.2
(o una versione più recente) ingradle.properties
. Per eseguire i controlli lint di Compose all'interno dell'IDE, è necessario Android Studio Ladybug o versioni successive.
Modifiche alle API
currentCompositeKeyHash
è stato ritirato. Utilizza invececurrentCompositeKeyHashCode
. L'API di sostituzione codifica lo stesso hash con più bit, il che riduce in modo esponenziale la possibilità che due gruppi casuali non correlati nella gerarchia di composizione abbiano la stessa chiave hash. (I4cb6a, b/177562901)- I progetti rilasciati con Kotlin 2.0 richiedono l'utilizzo di KGP 2.0.0 o versioni successive (Idb6b5)
@Stable
,@Immutable
e@StableMarker
sono stati spostati nell'annotazione in fase di runtime (in modo compatibile). Ora puoi fare affidamento sull'annotazione in fase di runtime se vuoi utilizzare queste annotazioni da librerie che non dipendono da Compose. (I23a16)- Rimuove
onCreating
eonDisposing
perché sono stati ritirati e rinominati inonPreCreate
eonPreDispose
. Questa modifica completa la ridenominazione. (I97461) - Espone una variabile locale di composizione che consente di allegare una traccia dello stack di Compose in base alla posizione di un nodo di Compose nella composizione. (Ie0bda, b/354163858)
- Introduci le analisi dello stack di Compose diagnostiche basate sulle informazioni sull'origine archiviate nella composizione. (I3db9f, b/354163858)
- Ritira
runWithTimingDisabled
a favore dirunWithMeasurementDisabled
, che descrive più chiaramente il comportamento: tutte le metriche vengono messe in pausa. Inoltre, espone la superclasseMicrobenchmarkScope
poiché non è possibile dichiarare nuovamente la funzionerunWithMeasurementDisabled
per aprire l'accesso, in quanto è inline. (I9e23b, b/389149423, b/149979716) - Aggiunge
@FrequentlyChangingValue
: un'annotazione che può contrassegnare funzioni e getter di proprietà per indicare che non devono essere chiamati direttamente all'interno della composizione, in quanto ciò potrebbe causare ricomposizioni frequenti. Ad esempio, per contrassegnare i valori della posizione di scorrimento e i valori di animazione. Gli avvisi vengono forniti da un controllo lint corrispondente. (I83630, b/234042500) - Aggiunge
@RememberInComposition
: un'annotazione che può contrassegnare costruttori, funzioni e getter di proprietà per indicare che non devono essere chiamati direttamente all'interno della composizione, senza essere memorizzati. Gli errori verranno generati da un controllo lint corrispondente. Questa annotazione può essere utilizzata per contrassegnare le dichiarazioni che restituiscono oggetti con stato / mutabili, oggetti la cui identità è importante mantenere nelle varie composizioni o oggetti la cui istanziazione è costosa e che devono essere memorizzati nella cache nelle varie composizioni. (Ie7db0) - È stato aggiunto un nuovo overload
rememberSaveable
che supportaKSerializer
per la persistenza dello stato con controllo del tipo utilizzando KotlinX Serialization. L'API esistente basata suSaver
rimane supportata. (Iea4ab, b/376028110)
Correzioni di bug
- Correzione dell'invio degli osservatori memorizzati nella composizione sospendibile per evitare l'invio di osservatori memorizzati/dimenticati nella stessa applicazione (I570b2, b/404645679, b/407931790)
- I metodi
SnapshotObserver
onCreating sono stati rinominati inonPreCreate
eonDisposing
inonPreDispose
in modo che corrispondano alle linee guida per le API. I metodi precedenti sono deprecati e i nuovi metodi chiamano per impostazione predefinita quelli precedenti, quindi le implementazioni esistenti di questa interfaccia continueranno a funzionare finché i metodi non verranno rimossi. Questi metodi verranno rimossi nella versione 1.9.0 alpha in una CL successiva che seguirà a breve. Verranno rimossi dalla versione beta 1.8 prima della versione stabile 1.8. (I6d753) - È stato risolto un problema per cui i valori memorizzati potevano essere dimenticati e ricalcolati in modo errato durante la ricomposizione di un gruppo troncato che appare dopo un gruppo mobile (I62cab, b/383769314)
- Aggiunto il supporto per la composizione delle analisi dello stack in
LaunchedEffect
erememberCoroutineScope
(I705c0, b/354163858) - I controlli lint di Compose ora richiedono una versione minima di AGP 8.8.2 dalla riga di comando e almeno Android Studio Ladybug per il supporto IDE. Se utilizzi una versione precedente di AGP, puoi impostare
android.experimental.lint.version=8.8.2
in gradle.properties per eseguire l'upgrade della versione di Lint senza influire su AGP. (I6f2a8)
Contributo esterno
- Aggiunta di
AnnotationTarget.FUNCTION
all'annotazioneFunctionKeyMeta
. (I08021)
Versione 1.8
Versione 1.8.3
18 giugno 2025
androidx.compose.runtime:runtime-*:1.8.3
viene ritirata. La versione 1.8.3 contiene questi commit.
Versione 1.8.2
20 maggio 2025
androidx.compose.runtime:runtime-*:1.8.2
viene ritirata. La versione 1.8.2 contiene questi commit.
Versione 1.8.1
7 maggio 2025
androidx.compose.runtime:runtime-*:1.8.1
viene ritirata. La versione 1.8.1 contiene questi commit.
Versione 1.8.0
23 aprile 2025
androidx.compose.runtime:runtime-*:1.8.0
viene ritirata. La versione 1.8.0 contiene questi commit.
Versione 1.8.0-rc03
9 aprile 2025
androidx.compose.runtime:runtime-*:1.8.0-rc03
viene ritirata. La versione 1.8.0-rc03 contiene questi commit.
Versione 1.8.0-rc02
26 marzo 2025
androidx.compose.runtime:runtime-*:1.8.0-rc02
viene ritirata. La versione 1.8.0-rc02 contiene questi commit.
Versione 1.8.0-rc01
12 marzo 2025
androidx.compose.runtime:runtime-*:1.8.0-rc01
viene ritirata. La versione 1.8.0-rc01 contiene questi commit.
Modifiche alle API
- I metodi
SnapshotObserver
onCreating sono stati rinominati inonPreCreate
eonDisposing
inonPreDispose
in modo che corrispondano alle linee guida per le API. I metodi precedenti sono deprecati e i nuovi metodi chiamano per impostazione predefinita quelli precedenti, quindi le implementazioni esistenti di questa interfaccia continueranno a funzionare finché i metodi non verranno rimossi. Questi metodi verranno rimossi nella versione 1.9.0 alpha in una CL successiva che seguirà a breve. Verranno rimossi dalla versione beta 1.8 prima della versione stabile 1.8. (I6d753)
Versione 1.8.0-beta03
26 febbraio 2025
androidx.compose.runtime:runtime-*:1.8.0-beta03
viene ritirata. La versione 1.8.0-beta03 contiene questi commit.
Versione 1.8.0-beta02
12 febbraio 2025
androidx.compose.runtime:runtime-*:1.8.0-beta02
viene ritirata. La versione 1.8.0-beta02 contiene questi commit.
Correzioni di bug
- Rilancia l'eccezione rilevata nella composizione sospendibile .(384486d)
Versione 1.8.0-beta01
29 gennaio 2025
androidx.compose.runtime:runtime-*:1.8.0-beta01
viene ritirata. La versione 1.8.0-beta01 contiene questi commit.
Modifiche alle API
- Risolve un problema per cui la generazione di un errore durante la composizione che non deriva da Exception può causare l'errore "La composizione in attesa non è stata applicata". (I356be, b/382094412)
Versione 1.8.0-alpha08
15 gennaio 2025
androidx.compose.runtime:runtime-*:1.8.0-alpha08
viene ritirata. La versione 1.8.0-alpha08 contiene questi commit.
Versione 1.8.0-alpha07
11 dicembre 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha07
viene ritirata. La versione 1.8.0-alpha07 contiene questi commit.
Modifiche alle API
- È stata aggiunta un'API di strumentazione che aiuta lo strumento di controllo del layout a correlare le composizioni secondarie alla composizione principale nei casi in cui un nodo non viene utilizzato per collegare le composizioni. (I4ce3d)
- Sono state rese interne anziché pubbliche le costanti aritmetiche e speciali per
SnapshotId
. Se necessario, è possibile eseguire operazioni aritmetiche su unSnasphotId
convertendolo in unInt
oLong
utilizzando rispettivamentetoInt()
otoLong()
. (Ic3a57)
Contributo esterno
- Ottimizza l'archiviazione per i parametri
movableContentOf
. (ed87177)
Versione 1.8.0-alpha06
13 novembre 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha06
viene ritirata. La versione 1.8.0-alpha06 contiene questi commit.
Modifiche alle API
- Modifiche all'API
PausableComposition
. Queste modifiche sostanziali rispetto alle versioni precedenti di 1.8.0-alpha (a partire da 1.8.0-alpha02) ma, poiché si tratta di nuove API in 1.8.0, la compatibilità retroattiva non viene mantenuta in quanto le API sono ancora in versione alpha. (I39819) - Aggiunge API di strumentazione per osservare la creazione di nuove composizioni all'interno di un ricompositore (Iaeb7e)
- Aggiunta di
snapshotId
, di tipoLong
, aSnapshot
e ritiro diid
. L'ID di uno snapshot è stato modificato daInt
aLong
per evitare l'overflow dell'ID snapshot sui sistemi con frame rate molto elevati e animazioni a lunga esecuzione. Il tipo è stato creato in modo che il valore previsto/effettivo consenta a questo tipo di essereInt
o di altro tipo su piattaforme che non hanno un tipoLong
nativo. Le piattaforme che non dispongono di unLong
nativo, come JavaScript, devono evitare frame rate elevati (oltre 1000 FPS), che causerebbero un overflow perInt
circa ogni 24 giorni. (I38ac3, b/374821679)
Correzioni di bug
providesDefault
fisso per un singoloprovides
. (aosp/3318540 b/374263387)- Ottimizza
ChangeList
. (3318538)
Versione 1.8.0-alpha05
30 ottobre 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha05
viene ritirata. La versione 1.8.0-alpha05 contiene questi commit.
Correzioni di bug
- Correzione dell'overflow dello stack durante l'aggiunta di
Int.MAX_VALUE
aSnapshotIdSet
. (b/370536104, Ic4179f6) - Micro-ottimizzazioni di runtime (I50c60)
- Consenti a R8 di rimuovere le chiamate runtimeCheck di debug (I8c44)
- Rendi
compoundKeyOf
iterativo anziché ricorsivo (I5817f)
Contributo esterno
- Implementa gli stack con gli elenchi di raccolte (I7d47c)
Versione 1.8.0-alpha04
16 ottobre 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha04
viene ritirata. La versione 1.8.0-alpha04 contiene questi commit.
Miglioramenti delle prestazioni
- Fornisci l'ID snapshot per i record di stato nel costruttore (85c00f)
- Refactoring di
SnapshotState***
per evitare errori di verifica della classe (6ee4a6) - Correzione delle regole R8 per impedire l'incorporamento di throw (5beb92)
- Micro-ottimizzazione delle operazioni (d73c5c)
- Ottimizzare le allocazioni
SynchronizedObject
sulla JVM (2b043f)
Versione 1.8.0-alpha03
2 ottobre 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha03
viene ritirata. La versione 1.8.0-alpha03 contiene questi commit.
Miglioramenti delle prestazioni
- Crea in modo differito il contesto secondario per
rememberCoroutineScope
(f61464)rememberCoroutineScope
viene in genere utilizzato per avviare le coroutine in risposta agli eventi che si verificano dopo la composizione. In alcuni scenari questi eventi potrebbero non verificarsi mai, con conseguenti costi aggiuntivi per la creazione e l'annullamento dei job senza alcun vantaggio.- Fai in modo che l'ambito restituito da
rememberCoroutineScope
crei il relativocoroutineContext
in modo differito quando viene eseguito l'accesso, evitando la creazione e l'annullamento del job se l'ambito non viene mai utilizzato.
Versione 1.8.0-alpha02
18 settembre 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha02
viene ritirata. La versione 1.8.0-alpha02 contiene questi commit.
Nuove funzionalità
- È stato aggiunto
PausableComposition
, che consente di creare una composizione secondaria che può essere messa in pausa durante la composizione e applicata in modo asincrono alla composizione. Per la sospensione è necessario il supporto del compilatore, attualmente in fase di sviluppo. (I3394b)
Versione 1.8.0-alpha01
4 settembre 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha01
viene ritirata. La versione 1.8.0-alpha01 contiene questi commit.
Versione 1.7
Versione 1.7.8
12 febbraio 2025
androidx.compose.runtime:runtime-*:1.7.8
viene ritirata. La versione 1.7.8 contiene questi commit.
Versione 1.7.7
29 gennaio 2025
androidx.compose.runtime:runtime-*:1.7.7
viene ritirata. Nessuna modifica rispetto alla versione 1.7.6.
androidx.compose.runtime:runtime-*:1.7.6
viene ritirata. La versione 1.7.6 contiene questi commit.
Versione 1.7.5
30 ottobre 2024
androidx.compose.runtime:runtime-*:1.7.5
viene ritirata. La versione 1.7.5 contiene questi commit.
Versione 1.7.4
16 ottobre 2024
androidx.compose.runtime:runtime-*:1.7.4
viene ritirata. La versione 1.7.4 contiene questi commit.
Versione 1.7.3
2 ottobre 2024
androidx.compose.runtime:runtime-*:1.7.3
viene ritirata. La versione 1.7.3 contiene questi commit.
Versione 1.7.2
18 settembre 2024
androidx.compose.runtime:runtime-*:1.7.2
viene ritirata. La versione 1.7.2 contiene questi commit.
Versione 1.7.1
10 settembre 2024
- Nessuna modifica agli artefatti Android. Sono stati rimossi
-desktop
artefatti e sono stati aggiunti-jvmStubs
e-linuxx64Stubs
artefatti. Nessuno di questi target è destinato all'uso, sono segnaposto per supportare gli sforzi di Jetbrains Compose.
Versione 1.7.0
4 settembre 2024
androidx.compose.runtime:runtime-*:1.7.0
viene ritirata. La versione 1.7.0 contiene questi commit.
Modifiche importanti dalla versione 1.6.0
- È stata aggiunta la possibilità di fornire una composizione locale calcolata in base ai valori di altre composizioni locali per impostazione predefinita, utilizzando
compositionLocalWithComputedDefault()
o fornendo una funzione 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 dall'interno della funzione lambda che calcola il valore. Questo valore viene utilizzato al posto dicurrent
, accessibile solo nelle funzioni@Composable
. (Iadbc0) - I nuovi oggetti di stato creati sono immediatamente accessibili da altri snapshot, incluso lo snapshot globale, con il loro stato iniziale. Le modifiche successive non sono visibili finché non viene applicato lo snapshot in cui è stato creato l'oggetto.
- Lo stato iniziale di
mutableStateOf()
, nonché delle relative versioni primitive, è il valore passato come parametro amutableStateOf()
. Lo stato iniziale dimutableStateListOf()
emutableStateMapOf()
è vuoto. - Sono stati aggiunti
Snapshot.isInSnapshot
eSnapshot.PreexistingSnapshotId
, che vengono utilizzati per consentire a un oggetto di stato di essere immediatamente accessibile dallo snapshot globale al momento della creazione. - Gli oggetti di stato personalizzati possono supportare l'accessibilità immediata seguendo il pattern delle modifiche apportate agli oggetti snapshot integrati. (I84a17)
- Attiva
nonSkippingGroupOptimization
per le librerie di composizione. In questo modo, il codice generato per tutte le funzioni componibili non riavviabili in androidx è più efficiente. In futuro prevediamo di attivare questa opzione per impostazione predefinita. I(acbc08) - Invalida le espressioni lambda componibili nelle sottocomposizioni sullo stesso frame. (98301c)
- Chiama
onRelease
callback nello stesso ordine dionForgotten
. (2cd790) - Attiva la modalità di salto avanzato (ed1766)
- Rendi
currentCompoundHashKey
unico in più casi (d4a872)
Versione 1.7.0-rc01
21 agosto 2024
androidx.compose.runtime:runtime-*:1.7.0-rc01
viene ritirata. La versione 1.7.0-rc01 contiene questi commit.
Versione 1.7.0-beta07
7 agosto 2024
androidx.compose.runtime:runtime-*:1.7.0-beta07
viene ritirata. La versione 1.7.0-beta07 contiene questi commit.
Versione 1.7.0-beta06
24 luglio 2024
androidx.compose.runtime:runtime-*:1.7.0-beta06
viene ritirata. La versione 1.7.0-beta06 contiene questi commit.
Versione 1.7.0-beta05
10 luglio 2024
androidx.compose.runtime:runtime-*:1.7.0-beta05
viene ritirata. La versione 1.7.0-beta05 contiene questi commit.
Versione 1.7.0-beta04
26 giugno 2024
androidx.compose.runtime:runtime-*:1.7.0-beta04
viene ritirata. La versione 1.7.0-beta04 contiene questi commit.
Versione 1.7.0-beta03
12 giugno 2024
androidx.compose.runtime:runtime-*:1.7.0-beta03
viene ritirata. La versione 1.7.0-beta03 contiene questi commit.
Versione 1.7.0-beta02
29 maggio 2024
androidx.compose.runtime:runtime-*:1.7.0-beta02
viene ritirata. La versione 1.7.0-beta02 contiene questi commit.
Versione 1.7.0-beta01
14 maggio 2024
androidx.compose.runtime:runtime-*:1.7.0-beta01
viene ritirata. La versione 1.7.0-beta01 contiene questi commit.
Versione 1.7.0-alpha08
1° maggio 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha08
viene ritirata. La versione 1.7.0-alpha08 contiene questi commit.
Versione 1.7.0-alpha07
17 aprile 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha07
viene ritirata. La versione 1.7.0-alpha07 contiene questi commit.
Nuove funzionalità
- È stata aggiunta la possibilità di fornire una composizione locale calcolata in base ai valori di altre composizioni locali per impostazione predefinita, utilizzando
compositionLocalWithComputedDefault()
o fornendo una funzione 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 dall'interno della funzione lambda che calcola il valore. Questo valore viene utilizzato al posto dicurrent
, accessibile solo nelle funzioni@Composable
. (Iadbc0)
Modifiche alle API
- I nuovi oggetti di stato creati sono immediatamente accessibili da altri snapshot, incluso lo snapshot globale, con il loro stato iniziale. Le modifiche successive non sono visibili finché non viene applicato lo snapshot in cui è stato creato l'oggetto.
- Lo stato iniziale di
mutableStateOf()
, nonché delle relative versioni primitive, è il valore passato come parametro amutableStateOf()
. Lo stato iniziale dimutableStateListOf()
emutableStateMapOf()
è vuoto. - Sono stati aggiunti
Snapshot.isInSnapshot
eSnapshot.PreexistingSnapshotId
, che vengono utilizzati per consentire a un oggetto di stato di essere immediatamente accessibile dallo snapshot globale al momento della creazione. - Gli oggetti di stato personalizzati possono supportare l'accessibilità immediata seguendo il pattern delle modifiche apportate agli oggetti snapshot integrati. (I84a17)
Correzioni di bug
- È stato corretto l'unione di
readObserver
negli snapshot nidificati. Ciò ha causato una mancata invalidazione degli stati derivati nidificati quando vengono utilizzati all'interno di unsnapshotFlow
. (Idf138)
Versione 1.7.0-alpha06
3 aprile 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha06
viene ritirata. La versione 1.7.0-alpha06 contiene questi commit.
Correzioni di bug
- Correzione della gestione dei valori singoli
providesDefault
(538f45) - Evita un deadlock in Recomposer che accede al frame clock (07e5c6)
Versione 1.7.0-alpha05
20 marzo 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha05
viene ritirata. La versione 1.7.0-alpha05 contiene questi commit.
Correzioni di bug
- Annulla le modifiche tardive alla composizione disattivata (5950bc)
Versione 1.7.0-alpha04
6 marzo 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha04
viene ritirata. La versione 1.7.0-alpha04 contiene questi commit.
Miglioramenti delle prestazioni
- Chiama
Snapshot.current
una volta per ogni valutazione dello stato derivato (ee7daf) - Leggi
currentRecord
una volta per osservazione nella composizione (b882b2) - Rimuovi l'allocazione accidentale dell'iteratore in
snapshotFlow
(231e56) - Attiva
nonSkippingGroupOptimization
per le librerie di composizione. In questo modo, il codice generato per tutte le funzioni componibili non riavviabili in androidx è più efficiente. In futuro prevediamo di attivare questa opzione per impostazione predefinita. I(acbc08)
Versione 1.7.0-alpha03
21 febbraio 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha03
viene ritirata. La versione 1.7.0-alpha03 contiene questi commit.
Modifiche alle API
- Introduzione di un'opzione per sostituire i gruppi per migliorare il rilevamento delle modifiche (0941b5)
Miglioramenti delle prestazioni
- Migliora l'allocazione della memoria durante il rilevamento delle modifiche (53e7fd)
- Correzione di una perdita di memoria nel compositore (0e097d)
- Utilizza
ScopeMap
per trasmettere le invalidazioni durante la ricomposizione (e19a7e) - Ottimizza la mappa delle invalidazioni in modo da conservare solo gli stati derivati (f11c44)
- Sostituisci gli utilizzi di
IdentityArraySet
conScatterSet
(db572e) - Ottimizza
removeScope
inScopeMap
(bb0530)
Versione 1.7.0-alpha02
7 febbraio 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha02
viene ritirata. La versione 1.7.0-alpha02 contiene questi commit.
Correzioni di bug
- Invalida le espressioni lambda componibili nelle sottocomposizioni sullo stesso frame. (98301c)
- Chiama
onRelease
callback nello stesso ordine dionForgotten
. (2cd790) - Filtro modificato indica stati non osservati in
snapshotFlow
. (796b80)
Miglioramenti delle prestazioni
- Modifica l'osservatore dello snapshot sul posto quando è già trasparente. (f60f30)
- Ottimizza
SnapshotIdSet.lowest()
. (7ae149) - Utilizza un
fold()
senza allocazione inSnapshotIdSet
. (532b7d) - Rimuovi l'allocazione dell'iteratore (83f96b)
Versione 1.7.0-alpha01
24 gennaio 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha01
viene ritirata. La versione 1.7.0-alpha01 contiene questi commit.
Ottimizzazioni del rendimento
- Aggiunta della possibilità di creare slot dopo l'aggiunta di un gruppo secondario (b5960c)
- Ottimizza la registrazione delle modifiche degli stati degli snapshot (28c3fe)
- Attiva la modalità di salto avanzato (ed1766)
Correzioni di bug
- Account per i metadati dei parametri predefiniti in Ricorda intrinseco (096665)
- Rendi
currentCompoundHashKey
unico in più casi (d4a872) - Realizza gruppi quando esci dalla chiamata di funzione in linea (2a90fc)
Versione 1.6
Versione 1.6.8
12 giugno 2024
androidx.compose.runtime:runtime-*:1.6.8
viene ritirata. La versione 1.6.8 contiene questi commit.
Versione 1.6.7
1° maggio 2024
androidx.compose.runtime:runtime-*:1.6.7
viene ritirata. La versione 1.6.7 contiene questi commit.
Versione 1.6.6
17 aprile 2024
androidx.compose.runtime:runtime-*:1.6.6
viene ritirata. Nessuna modifica dall'ultima release.
Versione 1.6.5
3 aprile 2024
androidx.compose.runtime:runtime-*:1.6.5
viene ritirata. La versione 1.6.5 contiene questi commit.
Versione 1.6.4
20 marzo 2024
androidx.compose.runtime:runtime-*:1.6.4
viene ritirata. La versione 1.6.4 contiene questi commit.
Versione 1.6.3
6 marzo 2024
androidx.compose.runtime:runtime-*:1.6.3
viene ritirata. La versione 1.6.3 contiene questi commit.
Versione 1.6.2
21 febbraio 2024
androidx.compose.runtime:runtime-*:1.6.2
viene ritirata. La versione 1.6.2 contiene questi commit.
Versione 1.6.1
7 febbraio 2024
androidx.compose.runtime:runtime-*:1.6.1
viene ritirata. La versione 1.6.1 contiene questi commit.
Correzioni di bug
- Chiama
onRelease
callback nello stesso ordine dionForgotten
. (2cd790) - Filtro modificato indica stati non osservati in
snapshotFlow
. (796b80)
Versione 1.6.0
24 gennaio 2024
androidx.compose.runtime:runtime-*:1.6.0
viene ritirata. La versione 1.6.0 contiene questi commit.
Modifiche importanti dalla versione 1.5.0
Nuove funzionalità
- Rilancia le eccezioni che vengono eliminate durante il ciclo di ricomposizione (4dff9a)
Ottimizzazioni del rendimento
- Ottimizza la registrazione delle modifiche degli stati degli snapshot (28c3fe)
- Ottimizza
rememberSaveable
(f01d79) - Posticipa la rilettura degli stati derivati fino alla registrazione delle modifiche (f38099)
- Migliora la fornitura di valori locali di composizione (a337ea)
Correzioni di bug
- Correzione della perdita di memoria della tabella degli slot (73fcfe)
- Salta la ricomposizione delle composizioni secondarie che verranno rimosse. (Ieeb99, b/254645321)
- Attiva solo i cicli di vita
RememberObserver
quando vengono memorizzati nel calcolo del ricordo. (f6b4dc) - Limita l'acquisizione di
$dirty
alle espressioni lambda inline. (acfca0) - Correzione di un problema per cui a volte i contenuti mobili ricevono le impostazioni locali di composizione errate. (035cd6)
Versione 1.6.0-rc01
10 gennaio 2024
androidx.compose.runtime:runtime-*:1.6.0-rc01
viene ritirata. La versione 1.6.0-rc01 contiene questi commit.
Versione 1.6.0-beta03
13 dicembre 2023
androidx.compose.runtime:runtime-*:1.6.0-beta03
viene ritirata. La versione 1.6.0-beta03 contiene questi commit.
Versione 1.6.0-beta02
29 novembre 2023
androidx.compose.runtime:runtime-*:1.6.0-beta02
viene ritirata. La versione 1.6.0-beta02 contiene questi commit.
Versione 1.6.0-beta01
15 novembre 2023
androidx.compose.runtime:runtime-*:1.6.0-beta01
viene ritirata. La versione 1.6.0-beta01 contiene questi commit.
Modifiche alle API
- Propaga determinati valori di stabilità nell'annotazione. (274a4c)
Correzioni di bug
- Utilizza i criteri referenziali per lo stato dell'ambito locale di composizione nel contesto. (83361c)
- Limita l'acquisizione di $dirty alle espressioni lambda inline. (acfca0)
- Correzione di un problema per cui a volte i contenuti mobili ricevono le impostazioni locali di composizione errate. (035cd6)
- Utilizza hashmaps non allocati più veloci in
RecomposeScopeImpl
. (d79494) - Usa
ObjectIntMap
inDerivedState
. (21862e) - Usa
IntRef
per intSnapshotThreadLocal
inDerivedState
. (04eaf4)
Versione 1.6.0-alpha08
18 ottobre 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha08
viene ritirata. La versione 1.6.0-alpha08 contiene questi commit.
Correzioni di bug
- Attiva solo i cicli di vita
RememberObserver
quando vengono memorizzati nel calcolo del ricordo. (f6b4dc) - Migliorare l'ordinamento delle assegnazioni nell'elenco delle invalidazioni. (954d63)
- Utilizza le nuove mappe non allocative in
SnapshotStateObserver
. (4303ce) - Cancella le invalidazioni quando la composizione viene disattivata. (e001be)
Versione 1.6.0-alpha07
4 ottobre 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha07
viene ritirata. La versione 1.6.0-alpha07 contiene questi commit.
Modifiche alle API
SnapshotStateList
ora è contrassegnato comeRandomAccess
per consentire l'utilizzo della versione a indicizzazione diretta degli helper per gli elenchi. (I5210c, b/219554654)
Versione 1.6.0-alpha06
20 settembre 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha06
viene ritirata. La versione 1.6.0-alpha06 contiene questi commit.
Versione 1.6.0-alpha05
6 settembre 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha05
viene ritirata. La versione 1.6.0-alpha05 contiene questi commit.
Versione 1.6.0-alpha04
23 agosto 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha04
viene ritirata. La versione 1.6.0-alpha04 contiene questi commit.
Nuove funzionalità
- Rilancia le eccezioni che vengono eliminate durante il ciclo di ricomposizione (4dff9a)
Modifiche alle API
- È stato aggiunto un metodo per disattivare
ReusableComposition
, rimuovendo le osservazioni ma mantenendo i nodi. La composizione disattivata può essere riattivata chiamando il numerosetContent
. (Ib7f31) - Aggiungi l'interfaccia
ReusableComposition
per gestire il ciclo di vita e il riutilizzo delle sottocomposizioni. (I812d1, b/252846775)
Versione 1.6.0-alpha03
9 agosto 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha03
viene ritirata. La versione 1.6.0-alpha03 contiene questi commit.
Correzioni di bug
- Correzione della nuova ottimizzazione
CompositionLocalProvider
(3118e88) - Corregge la modalità di smontaggio dei nodi di contenuti mobili. (5e3d59b)
Versione 1.6.0-alpha02
26 luglio 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha02
viene ritirata. La versione 1.6.0-alpha02 contiene questi commit.
Nuove funzionalità e miglioramenti del rendimento
- Ottimizza
rememberSaveable
(f01d79) - Posticipa la rilettura degli stati derivati fino alla registrazione delle modifiche (f38099)
- Migliora la fornitura di valori locali di composizione (a337ea)
SideEffect
è contrassegnato come@ExplicitGroupsComposable
per evitare di generare un gruppo. (I74815)- Evita di confrontare le mappe locali di composizione sul riutilizzo (782071)
Modifiche alle API
- È stato aggiunto un overload di casi speciali per
CompositionLocalProviders
che evita l'overhead utilizzato per velocizzare la fornitura di più valori, ma che è overhead quando viene fornito un singolo valore. (I6d640, b/288169379)
Correzioni di bug
- Correzione della 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
androidx.compose.runtime:runtime-*:1.6.0-alpha01
viene ritirata. La versione 1.6.0-alpha01 contiene questi commit.
Correzioni di bug
- Salta la ricomposizione delle composizioni secondarie che verranno rimosse. (Ieeb99, b/254645321)
- Allocazioni ridotte quando vengono applicati gli snapshot. (I65c09)
- Evita di calcolare
readableHash
inDerivedState
se lo snapshot non è stato modificato (68c565)
Versione 1.5
Versione 1.5.4
18 ottobre 2023
androidx.compose.runtime:runtime-*:1.5.4
viene ritirata. La versione 1.5.4 contiene questi commit.
Versione 1.5.3
4 ottobre 2023
androidx.compose.runtime:runtime-*:1.5.3
viene ritirata. La versione 1.5.3 contiene questi commit.
Versione 1.5.2
27 settembre 2023
androidx.compose.runtime:runtime-*:1.5.2
viene ritirata. La versione 1.5.2 contiene questi commit.
Versione 1.5.1
6 settembre 2023
androidx.compose.runtime:runtime-*:1.5.1
viene ritirata. La versione 1.5.1 contiene questi commit.
Versione 1.5.0
9 agosto 2023
androidx.compose.runtime:runtime-*:1.5.0
viene ritirata. La versione 1.5.0 contiene questi commit.
Modifiche alle API
- Rimossi allocazioni in ricomposizione, animazioni a colori e
AndroidComposeView
. (Ib2bfa) - È stata aggiunta un'annotazione
@StateFactoryMarker
per contrassegnare le funzioni che creano stati e devono essere racchiuse in una chiamataremember
. (I64550) - Aggiungi versioni primitive di State e
MutableState
(fb3d89) - Aggiunta di
Snapshot.isApplyObserverNotificationPending
(I672a5) - Sono state aggiunte versioni primitive dell'API
State
, che consentono di monitorare i valori Int, Long, Float e Double negli oggettiState
senza incorrere in penalità per l'autoboxing. Utilizza i nuovi metodi di fabbricamutableIntState(Int)
,mutableFloatStateOf(Float)
e così via per utilizzarli. (I48e43)
Correzioni di bug
- Salta la ricomposizione delle composizioni secondarie che verranno rimosse. (Ieeb99, b/254645321)
- Non conservare il riferimento allo snapshot in
ComposerImpl
(0206f7) - Non applicare la composizione due volte (f5791b)
- Garantire l'invalidazione per i valori di stato derivati non inizializzati (aa2a92)
- Chiama
onEndChanges
durante l'eliminazione della composizione. (62cc8c) - Correzione dello spostamento dei contenuti in una composizione secondaria (4beb41)
- Correzione di potenziali deadlock (c1a425 e 8edce0)
- Il ricompositore creato per una finestra Android ora bloccherà solo le chiamate a
withFrameNanos
anziché tutta la composizione quando riceve una notifica ON_STOP. Ciò significa che le finestre associate alle attività interrotte continueranno a ricomporsi per le modifiche ai dati, ma le animazioni o qualsiasi altro chiamante diwithFrameNanos
verranno bloccate. (Id9e7f, b/240975572) - Esegui i callback di disattivazione per
LayoutNode
prima di eliminare gli effetti 3784073 - Correzione dei flag modificati per le lambda riavviate ea81df9
- Correzione della regressione della modifica dal vivo per Composable con nodi 73fd4d8
- ON_STOP deve mettere in pausa le trasmissioni dell'orologio dei frame anziché la composizione ae276f1
- Invalidate
SnapshotStateObserver
scopes for unchanged derived states 84d9b1c - Correzione del potenziale deadlock durante l'eliminazione delle composizioni 28761fc
- Correzione dello spostamento dei contenuti in una composizione secondaria 92d4156
- Correzione dei flag modificati per le lambda riavviate (8a03e9)
- Esegui i callback di disattivazione per
LayoutNode
prima di eliminare gli effetti (8b0fa4) - Correzione di
endToMarker()
al termine dei gruppi di nodi. (d71d980) - Utilizza il gruppo
SlotWriter
attuale per il controllo della disattivazione (a0b518b) - Rimuovi il
fill
inSlotTable.moveSlotGapTo()
e spostalo in chiusura (81f9935) - Correzione delle invalidazioni mancanti durante lo spostamento dei contenuti mobili (1d7c024)
- Correzione delle invalidazioni immediate per i contenuti mobili spostati (8676618)
Miglioramenti delle prestazioni
- Evita di calcolare
readableHash
inDerivedState
se lo snapshot non è stato modificato. (307102) - Allocazioni ridotte (I65c09, d7ea77, 727974 e 445808)
- Annullamento rapido della composizione
CoroutineScopes
(a55362 e bd382f) - Sovrascrivi i record degli oggetti di stato con record di stato inaccessibili (c986960)
- Utilizza il compositore dell'ambito corretto quando realizzi i gruppi (9a5e5b6)
- Utilizza
IdentityArraySet
per archiviare gli invalidamenti degli snapshot (7f60cca) - Riduzione delle allocazioni per le osservazioni degli snapshot (5bc535f)
Versione 1.5.0-rc01
26 luglio 2023
androidx.compose.runtime:runtime-*:1.5.0-rc01
viene ritirata. La versione 1.5.0-rc01 contiene questi commit.
Correzioni di bug
Posticipa 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. Il suo ID lint èAutoboxingStateCreation
. In precedenza, questo controllo era abilitato per impostazione predefinita per tutti i progetti. Per visualizzare questo avviso nell'editor di Android Studio e negli output di lint del progetto, modifica la gravità da informativa 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
androidx.compose.runtime:runtime-*:1.5.0-beta03
viene ritirata. La versione 1.5.0-beta03 contiene questi commit.
Correzioni di bug
- Salta la ricomposizione delle composizioni secondarie che verranno rimosse. (Ieeb99, b/254645321)
Versione 1.5.0-beta02
7 giugno 2023
androidx.compose.runtime:runtime-*:1.5.0-beta02
viene ritirata. La versione 1.5.0-beta02 contiene questi commit.
Miglioramenti delle prestazioni
- Evita di calcolare
readableHash
inDerivedState
se lo snapshot non è stato modificato. (307102)
Versione 1.5.0-beta01
24 maggio 2023
androidx.compose.runtime:runtime-*:1.5.0-beta01
viene ritirata. La versione 1.5.0-beta01 contiene questi commit.
Modifiche alle API
- Allocazioni rimosse in ricomposizione, animazioni a colori e
AndroidComposeView
(Ib2bfa) - È stata aggiunta un'annotazione
@StateFactoryMarker
per contrassegnare le funzioni che creano stati e devono essere racchiuse in una chiamataremember
. (I64550) - Aggiungi versioni primitive di State e
MutableState
(fb3d89) - Aggiunta di
Snapshot.isApplyObserverNotificationPending
(I672a5)
Correzioni di bug
- Allocazioni ridotte (I65c09, d7ea77, 727974 e 445808)
- Non conservare il riferimento allo snapshot in
ComposerImpl
(0206f7) - Annullamento rapido della composizione
CoroutineScopes
(a55362 e bd382f) - Non applicare la composizione due volte (f5791b)
- Garantire l'invalidazione per i valori di stato derivati non inizializzati (aa2a92)
- Chiama
onEndChanges
durante l'eliminazione della composizione. (62cc8c) - Correzione dello spostamento dei contenuti in una composizione secondaria (4beb41)
- Correzione di potenziali deadlock (c1a425
- ON_STOP deve mettere in pausa le trasmissioni dell'orologio dei frame anziché la composizione (f4a2d1)
- Correzione dei flag modificati per le lambda riavviate (8a03e9)
- Esegui i callback di disattivazione per
LayoutNode
prima di eliminare gli effetti (8b0fa4)
Contributo esterno
- Aggiunta di
Snapshot.isApplyObserverNotificationPending
(I672a5)
Versione 1.5.0-alpha04
10 maggio 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha04
viene ritirata. La versione 1.5.0-alpha04 contiene questi commit.
Modifiche alle API
- Sono state aggiunte versioni primitive dell'API
State
, che consentono di monitorare i valori Int, Long, Float e Double negli oggettiState
senza incorrere in penalità per l'autoboxing. Utilizza i nuovi metodi di fabbricamutableIntState(Int)
,mutableFloatStateOf(Float)
e così via per utilizzarli. (I48e43)
Correzioni di bug
Chiama
onEndChanges
durante l'eliminazione della composizione. I nodi di messa a fuoco rimossi duranteComposition.dispose
si iscrivono aonEndChanges
per reimpostare la messa a fuoco.(03d4a47)Garantisci l'invalidazione per i valori di stato derivati non inizializzati. Ogni stato derivato è associato a un elenco delle relative dipendenze in
SnapshotStateObserver
, utilizzato per invalidare gli ambiti associati allo stato derivato ogni volta che una dipendenza cambia. La modifica della dipendenza viene registrata durante l'avanzamento dello snapshot, che può avvenire dopo la lettura dello stato derivato (a causa della chiamata aSnapshot.notifyObjectsInitialized()
).La logica di osservazione dello stato derivato precedente in
SnapshotStateObserver
puliva le vecchie dipendenze, quindi leggeva il nuovo valore. Ciò ha comportato una race condition con l'invalidazione che si verifica in uno stato pulito, in cui l'invalidazione delle dipendenze non è stata registrata.Questa modifica riordina la lettura dello stato derivato e la pulizia delle dipendenze, garantendo che l'invalidazione avvenga sempre in uno stato valido. (c472be6)
Versione 1.5.0-alpha03
19 aprile 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha03
viene ritirata. 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é tutta la composizione quando riceve una notifica ON_STOP. Ciò significa che le finestre associate alle attività interrotte continueranno a ricomporsi per le modifiche ai dati, ma le animazioni o qualsiasi altro chiamante diwithFrameNanos
verranno bloccate. (Id9e7f, b/240975572)
Correzioni di bug
- Correzione del potenziale deadlock nell'elenco degli snapshot e nella mappa 5c1a425
- Esegui i callback di disattivazione per
LayoutNode
prima di eliminare gli effetti 3784073 - Correzione dei flag modificati per le lambda riavviate ea81df9
- Correzione della regressione della modifica dal vivo per Composable con nodi 73fd4d8
- ON_STOP deve mettere in pausa le trasmissioni dell'orologio dei frame anziché la composizione ae276f1
- Invalidate
SnapshotStateObserver
scopes for unchanged derived states 84d9b1c - Correzione del potenziale deadlock durante l'eliminazione delle composizioni 28761fc
- Correzione dello spostamento dei contenuti in una composizione secondaria 92d4156
Versione 1.5.0-alpha02
5 aprile 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha02
viene ritirata. 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 il compositore dell'ambito corretto quando realizzi i gruppi (9a5e5b6)
- Correzione di
endToMarker()
al termine dei gruppi di nodi. (d71d980) - Utilizza il gruppo
SlotWriter
attuale per il controllo della disattivazione (a0b518b) - Utilizza
IdentityArraySet
per archiviare gli invalidamenti degli snapshot (7f60cca) - Rimuovi il
fill
inSlotTable.moveSlotGapTo()
e spostalo in chiusura (81f9935) - Correzione delle invalidazioni mancanti durante lo spostamento dei contenuti mobili (1d7c024)
- Correzione delle invalidazioni immediate per i contenuti mobili spostati (8676618)
- Riduzione delle allocazioni per le osservazioni degli snapshot (5bc535f)
Versione 1.5.0-alpha01
22 marzo 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha01
viene ritirata. 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
androidx.compose.runtime:runtime-*:1.4.2
viene ritirata. La versione 1.4.2 contiene questi commit.
Correzioni di bug
Correzione del potenziale deadlock nell'elenco degli snapshot e nella mappa 2eb6570
L'aggiunta di contenuti a un
SnapshotStateList
o a unSnapshotStateMap
può causare un deadlock se la modifica è simultanea a una scrittura diretta nel record di stato. Questo problema è diventato molto più probabile con le modifiche introdotte da 93fcae828b, che utilizza scritture dirette per rilasciare i record inutilizzati.I blocchi sono ora ordinati in modo che non venga mai tentato di acquisire un blocco snapshot quando è attivo un blocco mappa o elenco.
Versione 1.4.1
5 aprile 2023
androidx.compose.runtime:runtime-*:1.4.1
viene ritirata. La versione 1.4.1 contiene questi commit.
Correzioni di bug
- Correzione di
endToMarker()
durante la chiusura dei gruppi di nodi. d71d980
Versione 1.4.0
22 marzo 2023
androidx.compose.runtime:runtime-*:1.4.0
viene ritirata. 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 composizione. 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 espressioni lambda non ignorabili 7d06752
- Migliora le caratteristiche di riferimento della memoria dello stato dello snapshot 93fcae8
- Rimuovi il riquadro nelle ricerche locali della composizione 0875717
- Utilizza la chiave corretta per i gruppi di nodi non riutilizzabili 6388d8d
- Proteggi
SnapshotStateObserver
da applicazioni ricorsive e simultanee 98cb6ba - Aggiunta di un controllo dei limiti dell'indice nel metodo "get" di
IdentityArraySet
35a77d3 - Aggiorna il modulo di composizione per utilizzare le estensioni
ViewTreeLifecycleOwner
21c2122 - Invia notifiche di applicazione dopo che Recomposer ha terminato il frame. 98f2641
- Correzione dell'arresto anomalo dell'indice fuori dai limiti durante l'annullamento di Recomposer 8f8656f
- Forza sempre la ricomposizione se i provider principali della composizione sono cambiati 9526fcc
- Tolleranza di ricomposizione per i job annullati a55f7ed
- Migliora la gestione delle invalidazioni per un numero elevato di compositori 9b7ed67
- Correzione della generazione di gruppi di chiusura per i resi non locali b6f590c
Versione 1.4.0-rc01
8 marzo 2023
androidx.compose.runtime:runtime-*:1.4.0-rc01
viene ritirata. La versione 1.4.0-rc01 contiene questi commit.
Correzioni di bug
Versione 1.4.0-beta02
22 febbraio 2023
androidx.compose.runtime:runtime:1.4.0-beta02
e androidx.compose.runtime:runtime-saveable:1.4.0-beta02
sono stati rilasciati. La versione 1.4.0-beta02 contiene questi commit.
Versione 1.4.0-beta01
8 febbraio 2023
androidx.compose.runtime:runtime-*:1.4.0-beta01
viene ritirata. 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 di composizione (I3731b) - Aggiunta di
@TestOnly
aComposer.disableSourceInformation()
, in quanto questa funzione può essere chiamata in modo sicuro solo in un test. (I896c8)
Correzioni di bug
- Rimuovi il riquadro nelle ricerche locali della composizione (62f66a)
- Migliora le caratteristiche di riferimento della memoria dello stato dello snapshot (dfb451)
Versione 1.4.0-alpha05
25 gennaio 2023
androidx.compose.runtime:runtime:1.4.0-alpha05
e androidx.compose.runtime:runtime-saveable:1.4.0-alpha05
sono stati rilasciati. La versione 1.4.0-alpha05 contiene questi commit.
Modifiche alle API
- Più tipi/nullabilità di funzioni inline/deprecate-nascoste (I24f91)
Versione 1.4.0-alpha04
11 gennaio 2023
androidx.compose.runtime:runtime-*:1.4.0-alpha04
viene ritirata. 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 ricorsive e simultanee (d902fb)
Versione 1.4.0-alpha03
7 dicembre 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha03
viene ritirata. La versione 1.4.0-alpha03 contiene questi commit.
Modifiche alle API
- aggiunta di un nuovo metodo pubblico alla classe
ComposableMethod
analogo ajava.lang.reflect.Method#getParameterTypes()
(Iab0c3)
Correzioni di bug
- Le notifiche di applicazione dello snapshot vengono ora inviate dopo che
Recomposer
ha terminato l'applicazione delle modifiche. (Iad6c0, b/222093277)
Versione 1.4.0-alpha02
9 novembre 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha02
viene ritirata. La versione 1.4.0-alpha02 contiene questi commit.
Versione 1.4.0-alpha01
24 ottobre 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha01
viene ritirata. La versione 1.4.0-alpha01 contiene questi commit.
Modifiche alle API
SnapshotStateList
eSnapshotStateMap
ora hanno implementazioni esplicite ditoList()
etoMap()
, rispettivamente. Questi metodi restituiscono i contenuti correnti senza eseguire una copia, in quanto restituiscono i dati interni immutabili 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
androidx.compose.runtime:runtime-*:1.3.3
viene ritirata. La versione 1.3.3 contiene questi commit.
- Nessuna modifica dalla versione 1.3.2
Versione 1.3.2
7 dicembre 2022
androidx.compose.runtime:runtime-*:1.3.2
viene ritirata. La versione 1.3.2 contiene questi commit.
Correzioni di bug
- Aggiornamento per supportare androidx.compose.ui 1.3.2
Versione 1.3.1
9 novembre 2022
androidx.compose.runtime:runtime-*:1.3.1
viene ritirata. La versione 1.3.1 contiene questi commit.
Versione 1.3.0
24 ottobre 2022
androidx.compose.runtime:runtime-*:1.3.0
viene ritirata. La versione 1.3.0 contiene questi commit.
Modifiche importanti dalla versione 1.2.0
Gestione delle eccezioni / Supporto della modifica dal vivo
- Per supportare meglio la modifica dal vivo, sono state aggiunte API per consentire la gestione delle eccezioni durante la composizione
- Gestione degli errori di composizione per il ricaricamento rapido
- Gestire gli errori di modifica in tempo reale durante il salvataggio/ripristino
Tracciamento della composizione
- Sono state aggiunte API di tracciamento runtime per supportare nuovi strumenti di tracciamento della composizione
- Generare chiamate di inizio/fine evento di traccia componibili
- Re-added ComposerKt.traceEventStart(Int, String)
API Composable Reflection
- È stata aggiunta una nuova API
ComposableMethod
per consentire invocazioni più affidabili basate sulla reflection delle API componibili. - Spostare invokeComposable nel runtime di Compose
- Rielabora l'API per richiamare il metodo componibile
Correzioni di runtime
- Correzione del test dell'intervallo difettoso per il controllo della tabella degli slot per i marcatori
- Consenti lo spostamento dei contenuti mobili all'interno e all'esterno di SubcomposeLayout
- Correggi lo spostamento dei contenuti nei nuovi contenuti di una composizione secondaria
Snapshot System
- Il sistema di snapshot ha ricevuto vari miglioramenti in termini di gestione della memoria, prestazioni e correttezza.
- Rimozione dell'ambito di ottimizzazione in SnapshotStateObserver
- Elimina gli snapshot nidificati creati da snapshot trasparenti
- È stata corretta la condizione di competizione durante la lettura dello stato dallo snapshot globale
- Supporta DerivedState in SnapshotStateObserver
- Impedire la rimozione dello stato derivato dalla composizione quando viene letto in altri ambiti
- Utilizzare IdentityArrayMap anziché HashMap all'interno di DerivedState
- Aggiorna gli osservatori dello stato derivato in modo che utilizzino il vettore modificabile
- Aggiornamento della pulizia dello stato di SnapshotStateObserver
- Sostituisci SnapshotStateObserver.invalidated con ArraySet
- È stata corretta la condizione di competizione durante la lettura dello stato dallo snapshot globale
- Correggi l'utilizzo di un record obsoleto nel calcolo dell'hash DerivedState
- Correzione della condizione di competizione durante l'avanzamento dello snapshot globale
- Velocizzare la pulizia delle osservazioni dell'ambito in SnapshotStateObserver
Versione 1.3.0-rc01
5 ottobre 2022
androidx.compose.runtime:runtime-*:1.3.0-rc01
viene ritirata. La versione 1.3.0-rc01 contiene questi commit.
Correzioni di bug
- Correzione di
ArrayIndexOutOfBoundsException
proveniente dalla tabella degli slot (b/249076084)
Versione 1.3.0-beta03
21 settembre 2022
androidx.compose.runtime:runtime-*:1.3.0-beta03
viene ritirata. La versione 1.3.0-beta03 contiene questi commit.
Modifica che provoca un errore nel comportamento
- I parametri
remember
erememberCoroutineScope
sono stati modificati incrossinline
. In questo modo verrà segnalato un errore per i resi anticipati anziché consentire un reso anticipato, il 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 dei ritorni non locali dalle espressioni lambda passate a queste funzioni. (Ibea62)
Versione 1.3.0-beta02
7 settembre 2022
androidx.compose.runtime:runtime-*:1.3.0-beta02
viene ritirata. La versione 1.3.0-beta02 contiene questi commit.
Correzioni di bug
- API aggiornata (I64ca0)
Versione 1.3.0-beta01
24 agosto 2022
androidx.compose.runtime:runtime-*:1.3.0-beta01
viene ritirata. La versione 1.3.0-beta01 contiene questi commit.
Modifiche alle API
- È stato aggiunto un metodo
find
aCompositionData
per consentire agli strumenti per sviluppatori che utilizzano questa API di trovare rapidamente un sottogruppo di composizione utilizzando la sua identità. (I5794f)
Versione 1.3.0-alpha03
10 agosto 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha03
viene ritirata. La versione 1.3.0-alpha03 contiene questi commit.
Versione 1.3.0-alpha02
27 luglio 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha02
viene ritirata. La versione 1.3.0-alpha02 contiene questi commit.
Modifiche alle API
- È stato aggiunto di nuovo
ComposerKt.traceEventStart(Int, String)
per la compatibilità con le versioni precedenti (I6e6de)
Versione 1.3.0-alpha01
29 giugno 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha01
viene ritirata. La versione 1.3.0-alpha01 contiene questi commit.
Modifiche alle API
- Spostamento della funzionalità di utilità nel runtime (I4f729)
Versione 1.2
Versione 1.2.1
10 agosto 2022
androidx.compose.runtime:runtime-*:1.2.1
viene ritirata. 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
androidx.compose.runtime:runtime-*:1.2.0
viene ritirata. La versione 1.2.0 contiene questi commit.
Modifiche importanti dal giorno 1.1.0
Compose Runtime ha introdotto una serie di funzionalità nella versione 1.2.0, oltre a molte correzioni di bug di stabilizzazione. La nuova funzionalità più significativa è stata l'introduzione dell'
movableContentOf
API, che può essere utilizzata per abilitare UX complesse come le transizioni degli elementi condivisi. L'APImovableContentOf
converte una lambda componibile in una lambda che sposta il suo stato e i nodi corrispondenti in qualsiasi nuova posizione in cui viene chiamata. Quando la chiamata precedente esce dalla composizione, lo stato viene temporaneamente conservato e, se una nuova chiamata alla lambda entra nella composizione, lo stato e i nodi associati vengono spostati nella posizione della nuova chiamata. Se non viene aggiunta una nuova chiamata, lo stato viene rimosso definitivamente e gli osservatori ricevono una notifica.Se una lambda
movableContentOf
viene chiamata più volte nella stessa composizione, vengono creati nuovi stati e nodi per ogni chiamata e, man mano che le chiamate escono dalla composizione e ne entrano di nuove, lo stato viene spostato dalle prime chiamate in uscita a quelle 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 dello stato degli snapshot. Sono state rimosse varie perdite di memoria e sono stati ottimizzati i percorsi del codice.
Di seguito è riportato un elenco riepilogativo delle modifiche:
Nuove funzionalità in 1.2
- Aggiungi snapshot sperimentale unsafeEnter/Leave
- Aggiunta dell'API sperimentale Snapshot.asContextElement
- Introduce Snapshot.withoutReadObservation
- Consentire lo spostamento 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 base per la composizione devono essere derivati utilizzando i benchmark
Correzioni di bug in 1.2
- Rimuovere le informazioni di monitoraggio dagli ambiti di ricomposizione delle uscite
- Impedire la rimozione dello stato derivato dalla composizione quando viene letto in altri ambiti
- Utilizzare removeScope() più efficiente in SnapshotStateObserver
- Pulire le dipendenze dallo stato derivato nella composizione
- Correzione di currentCompositeKeyHash che cambia dopo la ricomposizione interna all'interno di contenuti mobili
- Pulizia delle composizioni non valide durante lo smaltimento
- Correzione della lettura dello stato derivato durante la ricomposizione
- Correzione della perdita di memoria durante l'osservazione degli oggetti di stato derivati
- Chiave hash composita movableContent fissa per garantire la coerenza
- Correzione di un caso limite in cui il compositore si arrestava in modo anomalo
- Garantire che l'invalidazione forzata di un gruppo comporti la ricomposizione
- Correzione del bug per cui rememberSaveable con input viene ripristinato nell'ordine errato
Versione 1.2.0-rc03
29 giugno 2022
androidx.compose.runtime:runtime-*:1.2.0-rc03
viene ritirata. La versione 1.2.0-rc03 contiene questi commit.
Correzioni di bug
- In precedenza, le osservazioni sullo stato derivato venivano rimosse in modo incondizionato dall'ambito di ricomposizione e dalla composizione, il che interrompeva altri ambiti che potrebbero ancora osservare lo stato derivato. Questa modifica rimuove le istanze di stato derivato solo se non vengono più osservate da altri ambiti. (b/236618362)
Versione 1.2.0-rc02
22 giugno 2022
androidx.compose.runtime:runtime-*:1.2.0-rc02
viene ritirata. La versione 1.2.0-rc02 contiene questi commit.
Versione 1.2.0-rc01
15 giugno 2022
androidx.compose.runtime:runtime-*:1.2.0-rc01
viene ritirata. La versione 1.2.0-rc01 contiene questi commit.
Modifiche alle API
- Le interfacce nelle librerie Compose ora sono create utilizzando i metodi di interfaccia predefiniti di jdk8 (I5bcf1)
Versione 1.2.0-beta03
1 giugno 2022
androidx.compose.runtime:runtime-*:1.2.0-beta03
viene ritirata. La versione 1.2.0-beta03 contiene questi commit.
Versione 1.2.0-beta02
18 maggio 2022
androidx.compose.runtime:runtime-*:1.2.0-beta02
viene ritirata. La versione 1.2.0-beta02 contiene questi commit.
Versione 1.2.0-beta01
11 maggio 2022
androidx.compose.runtime:runtime-*:1.2.0-beta01
viene ritirata. La versione 1.2.0-beta01 contiene questi commit.
Nuove funzionalità
- Questa è la prima release beta della versione 1.2.
Modifiche alle API
- Aggiunta funzionalità sperimentale
Snapshot.unsafeEnter/unsafeLeave
(I108f3) - Aggiunta dell'API
Snapshot.asContextElement()
sperimentale (Iff072) - L'annotazione
@ComposableTarget
e le annotazioni contrassegnate da@ComposableTargetMarker
ora possono essere utilizzate a livello di file utilizzando il prefisso@file
. L'utilizzo di un'annotazione di destinazione nell'ambito del file fa sì che il compilatore presupponga che tutte le funzioni componibili nel file siano destinate a essere destinate all'applier associato. Ad esempio, l'utilizzo di@file:UiComposable
dichiara che tutte le funzioni@Composable
hanno come target l'applicazione dell'interfaccia utente di Compose. Una funzione che deve avere come target un altro applicatore deve fornire esplicitamente l'annotazione del marcatore di destinazione per l'applicatore desiderato. (I40804)
Versione 1.2.0-alpha08
20 aprile 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha08
viene ritirata. La versione 1.2.0-alpha08 contiene questi commit.
Modifiche alle API
- Aggiunta di
TracingInProgress
all'interfacciaCompositionTracer
. (Ic6f12) - Aggiungi
recomposeScopeIdentity
a Composer (I0c873) - API di tracciamento limitate (Composer.setTracer) a
OptIn(InternalComposeTracingApi)
. (I9187f) - È stato aggiunto
ResuableContentHost
, che consente un maggiore controllo sulla durata dello stato creato per i contenuti riutilizzabili. Ad esempio, se una composizione secondaria non viene utilizzata temporaneamente, i contenuti possono essere disattivati, causando la perdita di tutto lo stato memorizzato nella composizione, ad esempio tutti gli effetti usa e getta. (I2c0f2, b/220322704)
Versione 1.2.0-alpha07
6 aprile 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha07
viene ritirata. 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 lambda passata senza iscriversi alle modifiche dei valori di stato letti durante questo blocco. Potrebbe essere utile nei casi d'uso in cui vuoi usufruire di letture/scritture thread-safe basate su snapshot, ma vuoi poter leggere il valore senza causare ricomposizioni o misurazioni non necessarie. (I9f365, b/214054486)
Versione 1.2.0-alpha06
23 marzo 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha06
viene ritirata. La versione 1.2.0-alpha06 contiene questi commit.
Versione 1.2.0-alpha05
9 marzo 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha05
viene ritirata. La versione 1.2.0-alpha05 contiene questi commit.
Contributo esterno
- Aggiornamento per l'utilizzo delle coroutine Kotlinx 1.6.0 (I3366d)
Versione 1.2.0-alpha04
23 febbraio 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha04
viene ritirata. La versione 1.2.0-alpha04 contiene questi commit.
Modifiche alle API
Sono stati aggiunti
ComposableTarget
,ComposableTargetMarker
eComposableOpenTarget
che consentono la generazione di report in fase di compilazione quando viene chiamata una funzione componibile che ha come target un applicatore per cui non è stata progettata.Nella maggior parte dei casi, le annotazioni possono essere dedotte dal plug-in del compilatore Compose, quindi l'utilizzo diretto di queste annotazioni dovrebbe essere raro . I casi che non possono essere dedotti includono la creazione e l'utilizzo di un'applicazione personalizzata, funzioni componibili astratte (come metodi di interfaccia), campi o variabili globali che sono espressioni lambda componibili (le variabili e i parametri locali vengono dedotti), o quando si utilizza
ComposeNode
o una funzione componibile correlata.Per gli applicatori personalizzati, le funzioni componibili che chiamano
ComposeNode
oReusableComposeNode
devono aggiungere un'annotazioneCompoableTarget
per la funzione e per tutti i tipi di parametri lambda componibili. Tuttavia, ti consigliamo di creare un'annotazione contrassegnata conComposableTargetMarker
e di utilizzare l'annotazione contrassegnata anzichéComposableTarget
direttamente. Un'annotazione componibile contrassegnata conComposableTargetMarker
equivale a unComposbleTarget
con il nome completo della classe dell'attributo come parametro di applicazione. Per un esempio di utilizzo diComposableTargetMarker
, vedianroidx.compose.ui.UiComposable
. (I38f11)
Versione 1.2.0-alpha03
9 febbraio 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha03
viene ritirata. La versione 1.2.0-alpha03 contiene questi commit.
Modifiche alle API
È stata aggiunta
movableContentOf
, che converte una funzione lambda componibile in una funzione lambda che sposta il suo stato e i nodi corrispondenti in qualsiasi nuova posizione in cui viene chiamata. Quando la chiamata precedente esce dalla composizione, lo stato viene temporaneamente conservato e se una nuova chiamata alla lambda entra nella composizione, lo stato e i nodi associati vengono spostati nella posizione della nuova chiamata. Se non viene aggiunta una nuova chiamata, lo stato viene rimosso definitivamente e gli osservatori vengono avvisati.Se una lambda
movableContentOf
viene chiamata più volte nella stessa composizione, vengono creati nuovi stati e nodi per ogni chiamata e, man mano che le chiamate escono dalla composizione e ne entrano di nuove, lo stato viene spostato dalle prime chiamate in uscita a quelle in entrata nell'ordine in cui vengono chiamate. Tutti gli stati non rivendicati dalle nuove chiamate vengono rimossi in modo permanente. (Ib4850)È stata aggiunta un'API di tracciamento alla composizione per consentire agli strumenti di fornire un tracciamento più dettagliato delle funzioni componibili. Il compilatore ora genera chiamate all'API di tracciamento che includono informazioni sull'origine. (Ib0eb5)
Per rimuovere queste chiamate e le informazioni sull'origine associate da una build di rilascio, aggiungi la seguente regola Proguard:
-assumenosideeffects public class androidx.compose.runtime.ComposerKt { boolean isTraceInProgress(); void traceEventStart(int,java.lang.String); void traceEventEnd(); }
Aggiungi
InternalComposeScope
, che consente agli strumenti di identificare un componente durante le ricomposizioni. (I07a3f)
Versione 1.2.0-alpha02
26 gennaio 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha02
viene ritirata. La versione 1.2.0-alpha02 contiene questi commit.
Versione 1.2.0-alpha01
12 gennaio 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha01
viene ritirata. La versione 1.2.0-alpha01 contiene questi commit.
Modifiche alle API
- È stato aggiunto il campo
identity
aCompositionData
per generare 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
androidx.compose.runtime:runtime-*:1.1.1
viene ritirata. La versione 1.1.1 contiene questi commit.
Correzioni di bug
- Correzione
NullPointerException
alle oreandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462) - Correzione dell'arresto anomalo causato dai contenuti degli appunti durante la lettura dagli appunti su Android. (I06020, b/197769306)
- RTL corretto in
LazyVerticalGrid
(aosp/1931080, b/207510535)
Versione 1.1.0
9 febbraio 2022
androidx.compose.runtime:runtime-*:1.1.0
viene ritirata. La versione 1.1.0 contiene questi commit.
Modifiche importanti dalla versione 1.0.0
- Supporto stabile per l'effetto di overscroll di Android 12
- Miglioramenti alle dimensioni del target tocco
- Tieni presente che, rispetto a Compose 1.0, i componenti Material espanderanno lo spazio del layout per soddisfare le linee guida sull'accessibilità di Material per le dimensioni del target di tocco. Ad esempio, il touch target del pulsante si espanderà fino a raggiungere una dimensione minima di
48x48dp
, anche se imposti una dimensione inferiore per il pulsante. In questo modo, Compose Material si allinea allo stesso comportamento dei componenti Material Design, fornendo un comportamento coerente se combini Views e Compose. Questa modifica garantisce inoltre che, quando crei la tua UI utilizzando i componenti di Compose Material, vengano soddisfatti i requisiti minimi per l'accessibilità dei touch target. - Supporto stabile per la modalità di navigazione laterale
- Viene eseguito l'upgrade di una serie di API sperimentali precedenti alla versione stabile
- Supporto per le versioni più recenti di Kotlin
Versione 1.1.0-rc03
26 gennaio 2022
androidx.compose.runtime:runtime-*:1.1.0-rc03
viene ritirata. La versione 1.1.0-rc03 contiene questi commit.
Correzioni di bug
- Aggiornamento per supportare Compose Material
1.1.0-rc03
Versione 1.1.0-rc01
15 dicembre 2021
androidx.compose.runtime:runtime-*:1.1.0-rc01
viene ritirata. La versione 1.1.0-rc01 contiene questi commit.
Versione 1.1.0-beta04
1° dicembre 2021
androidx.compose.runtime:runtime-*:1.1.0-beta04
viene ritirata. La versione 1.1.0-beta04 contiene questi commit.
Nuove funzionalità
- Aggiornato per essere compatibile con Kotlin
1.6.0
Versione 1.1.0-beta03
17 novembre 2021
androidx.compose.runtime:runtime-*:1.1.0-beta03
viene ritirata. La versione 1.1.0-beta03 contiene questi commit.
Versione 1.1.0-beta02
3 novembre 2021
androidx.compose.runtime:runtime-*:1.1.0-beta02
viene ritirata. La versione 1.1.0-beta02 contiene questi commit.
Modifiche alle API
- Il codice dello snapshot è stato suddiviso in più file, ma tutti si trovano ancora nella stessa classe JVM. (Ic6c98)
Versione 1.1.0-beta01
27 ottobre 2021
androidx.compose.runtime:runtime-*:1.1.0-beta01
viene ritirata. La versione 1.1.0-beta01 contiene questi commit.
Versione 1.1.0-alpha06
13 ottobre 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha06
viene ritirata. La versione 1.1.0-alpha06 contiene questi commit.
Modifiche alle API
- Rimozione di
InternalCompilerApi
dai metodi Composer che devono essere chiamati tra moduli diversi (I1aa0b) Recomposer.state
è stato ritirato e sostituito daRecomposer.currentState
per modificare il suo tipo in StateFlow (Ic2ab3, b/197773820)
Versione 1.1.0-alpha05
29 settembre 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha05
viene ritirata. La versione 1.1.0-alpha05 contiene questi commit.
Versione 1.1.0-alpha04
15 settembre 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha04
viene ritirata. La versione 1.1.0-alpha04 contiene questi commit.
Versione 1.1.0-alpha03
1° settembre 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha03
viene ritirata. 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 Compose Runtime della stessa versione o di una versione successiva. Dopo questa modifica, Compose Compiler è compatibile con una versione precedente di Compose Runtime (1.0). (aosp/1796968)
- Aggiornamento di Compose
1.1.0-alpha03
in modo che dipenda da Kotlin1.5.30
. (I74545)
Versione 1.1.0-alpha02
18 agosto 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha02
viene ritirata. La versione 1.1.0-alpha02 contiene questi commit.
Versione 1.1.0-alpha01
4 agosto 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha01
viene ritirata. La versione 1.1.0-alpha01 contiene questi commit.
Versione 1.0
Versione 1.0.5
3 novembre 2021
androidx.compose.runtime:runtime-*:1.0.5
viene ritirata. La versione 1.0.5 contiene questi commit.
Correzioni di bug
- È stato corretto un arresto anomalo durante il monitoraggio delle istanze derivedStateOf. (aosp/1792247)
Versione 1.0.4
13 ottobre 2021
androidx.compose.runtime:runtime-*:1.0.4
viene ritirata. La versione 1.0.4 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornato in modo che dipenda da Kotlin
1.5.31
Versione 1.0.3
29 settembre 2021
androidx.compose.runtime:runtime-*:1.0.3
viene ritirata. La versione 1.0.3 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornato in modo che dipenda da Kotlin
1.5.30
Versione 1.0.2
1° settembre 2021
androidx.compose.runtime:runtime-*:1.0.2
viene ritirata. La versione 1.0.2 contiene questi commit.
Aggiornato per supportare la release di Compose 1.0.2
. Compose 1.0.2
è ancora compatibile con Kotlin 1.5.21
.
Versione 1.0.1
4 agosto 2021
androidx.compose.runtime:runtime-*:1.0.1
viene ritirata. La versione 1.0.1 contiene questi commit.
Aggiornamenti delle dipendenze
- Aggiornato in modo da dipendere da Kotlin
1.5.21
.
Versione 1.0.0
28 luglio 2021
androidx.compose.runtime:runtime-*:1.0.0
viene ritirata. La versione 1.0.0 contiene questi commit.
Funzionalità principali della versione 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 a 24 o superiore nel file
build.gradle
. Questo problema verrà risolto nella prossima versione di Android Studio Bumblebee e AGP7.1
. (b/194289155)
Versione 1.0.0-rc02
14 luglio 2021
androidx.compose.runtime:runtime-*:1.0.0-rc02
viene ritirata. La versione 1.0.0-rc02 contiene questi commit.
- Sono state corrette le race condition in SnapshotStateObserver che causavano NullPointerException sporadiche. (aosp/1763445, aosp/1758105, b/192677711)
- Risolti problemi relativi agli snapshot di runtime che causavano arresti anomali di
java.lang.IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied
. (b/193006595, b/192570897)
Versione 1.0.0-rc01
1° luglio 2021
androidx.compose.runtime:runtime-*:1.0.0-rc01
viene ritirata. La versione 1.0.0-rc01 contiene questi commit.
Versione 1.0.0-beta09
16 giugno 2021
androidx.compose.runtime:runtime-*:1.0.0-beta09
viene ritirata. La versione 1.0.0-beta09 contiene questi commit.
Regole del profilo aggiunte
Questa release aggiunge regole del profilo ai seguenti moduli di composizione (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Che cosa sono le regole del profilo?
Le regole del profilo per una raccolta sono specificate in un file di testo
baseline-prof.txt
che si trova nella directorysrc/main
o in una 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 di queste regole è un superset del formato del profilo ART leggibile, utilizzato quando si utilizzaadb shell profman --dump-classes-and-methods ...
. Queste regole assumono una delle due forme per scegliere 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>
è uno o più dei caratteriH
,S
eP
per indicare se questo metodo deve essere contrassegnato come "Hot", "Startup" o "Post Startup".<CLASS_DESCRIPTOR>
è il descrittore della classe a cui appartiene il metodo di destinazione. Ad esempio, la classeandroidx.compose.runtime.SlotTable
avrebbe 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 contenere caratteri jolly (
**
,*
e?
) per consentire a una singola regola di includere più metodi o classi.
A cosa servono le regole?
Un metodo con il flag
H
indica che si tratta di un metodo "hot" e deve essere compilato in anticipo.Un metodo con il flag
S
indica che viene chiamato all'avvio e deve essere compilato in anticipo per evitare il costo della compilazione e dell'interpretazione del metodo all'avvio.Un metodo con il flag
P
indica che viene chiamato 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 incluse nei file AAR. Quando viene creata un'app che include questi artefatti, queste regole vengono unite e 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 per migliorarne le prestazioni, in particolare la prima esecuzione. Tieni presente che questa operazione non avrà alcun effetto sulle applicazioni sottoposte a debug.
Versione 1.0.0-beta08
2 giugno 2021
androidx.compose.runtime:runtime-*:1.0.0-beta08
viene ritirata. La versione 1.0.0-beta08 contiene questi commit.
Modifiche alle API
State<T>
è diventatoState<out T>
(I69049)ControlledComposition
Modifica dell'API per consentire la ricomposizione delle modifiche in un'unica passata. (Iaafd1, b/184173932)
Versione 1.0.0-beta07
18 maggio 2021
androidx.compose.runtime:runtime-*:1.0.0-beta07
viene ritirata. La versione 1.0.0-beta07 contiene questi commit.
Modifiche alle API
- Sono state aggiunte nuove API del compilatore Compose che consentono di rimuovere le informazioni sull'origine generate dal compilatore durante la minimizzazione dell'origine. (Ia34e6)
Introduce
ReusableContent
, che tenterà di riutilizzare i nodi nei suoi contenuti anziché sostituirli quando la chiave viene modificata. Quando la chiave viene modificata, i valori precedenti nella tabella degli slot per i contenuti vengono ignorati, ad eccezione dei nodi generati e dei valori utilizzati per aggiornare i nodi.Introduce
ReusableComposeNode
, che riutilizza il nodo emesso anziché sostituirlo come avviene perComposeNode
. (I1dd86)@ComposeCompilerApi
non più@RequiresOptIn
(Iab690)
Correzioni di bug
- LazyColumn/Row ora mantiene attivi (non eliminati) fino a due elementi precedentemente visibili anche quando sono già stati scorri. Ciò consente al componente di riutilizzare le composizioni secondarie attive quando sarà necessario comporre un nuovo elemento, migliorando le prestazioni di scorrimento. (Ie5555)
Versione 1.0.0-beta06
5 maggio 2021
androidx.compose.runtime:runtime-*:1.0.0-beta06
viene ritirata. 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
androidx.compose.runtime:runtime-*:1.0.0-beta05
viene ritirata. La versione 1.0.0-beta05 contiene questi commit.
Modifiche alle API
- Rimossa
@InternalComposeApi
per letture e scritture di snapshot di registrazione (Id134d)
Correzioni di bug
- I file AndroidManifest di ui-test-manifest e ui-tooling-data ora sono compatibili con Android 12 (I6f9de, b/184718994)
Versione 1.0.0-beta04
7 aprile 2021
androidx.compose.runtime:runtime-*:1.0.0-beta04
viene ritirata. La versione 1.0.0-beta04 contiene questi commit.
Correzioni di bug
Prima di questa modifica, le funzioni componibili locali potevano essere ignorate in base ai loro parametri. Dopo questa modifica, nessuna funzione componibile locale verrà ignorata. Questa modifica viene apportata perché è comune e previsto che le funzioni locali acquisiscano parametri dal genitore e il loro salto è una fonte comune di bug.
Per riassumere, considera l'esempio:
@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 per cui
rememberSaveable()
ripristinava il vecchio valore quando veniva utilizzato con i parametri di input (I1b110, b/182403380)
Versione 1.0.0-beta03
24 marzo 2021
androidx.compose.runtime:runtime-*:1.0.0-beta03
viene ritirata. La versione 1.0.0-beta03 contiene questi commit.
Modifiche alle API
DefaultMonotonicFrameClock
è deprecato. La chiamatawithFrameNanos
oRecomposer.runRecomposeAndApplyChanges
senzaMonotonicFrameClock
ora genereràIllegalStateException
. (I4eb0d)
Versione 1.0.0-beta02
10 marzo 2021
androidx.compose.runtime:runtime-*:1.0.0-beta02
viene ritirata. La versione 1.0.0-beta02 contiene questi commit.
Correzioni di bug
- Applica restrizioni all'utilizzo pubblico delle API sperimentali (I6aa29, b/174531520)
- Correzione di
rememberSaveable { mutableStateOf(0) }
danneggiato quando viene utilizzato all'interno di una destinazione di navigazione-composizione. (I1312b, b/180042685, b/180701630)
Versione 1.0.0-beta01
24 febbraio 2021
androidx.compose.runtime:runtime-*:1.0.0-beta01
viene ritirata. La versione 1.0.0-beta01 contiene questi commit.
Questa è la prima release di Compose 1.0.0 Beta.
Modifiche alle API
- Aggiungi l'
Recomposer.runRecomposeConcurrentlyAndApplyChanges
API sperimentale per ricomporre le composizioni invalidate al di fuori del ciclo del frame principale. (I342d0) - Tutti i composable contrassegnati con @ReadOnlyComposable vengono ora convalidati in fase di compilazione per garantire che chiamino solo altri @ReadOnlyComposable (I58961)
Il
defaultFactory
percompositionLocalOf
estaticCompositionLocalOf
ora è obbligatorio anziché facoltativo.Questa modifica rimuove un potenziale errore di tipo per i tipi non nullabili per i quali non è stata fornita alcuna fabbrica predefinita. In precedenza, questo forniva un riferimento null per un tipo non annullabile.
Per i tipi che accettano valori Null, valuta la possibilità di fornire
{ null }
come factory predefinita.Sconsigliamo di utilizzare le impostazioni internazionali con tipi non annullabili, a meno che non sia possibile fornire un valore predefinito ragionevole. Se non esiste un valore predefinito ragionevole, la lambda
defaultFactory
deve generare un'eccezione. Tuttavia, generare un'eccezione significa che i consumer del locale avranno una dipendenza implicita dalla sua fornitura che non viene applicata dal sistema di tipi. (Ifbd2a)I simboli ritirati sono stati rimossi dal runtime di composizione (I3252c)
L'API
emptyContent()
deprecata è stata rimossa. Utilizza invece{}
. (Idb33f, b/179432510)Providers è stato rinominato in CompositionLocalProvider
- Il costruttore Composition non accetta più un parametro chiave ed è stato ritirato.
- currentCompositeKeyHash è diventata una proprietà componibile di primo livello anziché una funzione componibile di primo livello.
- CompositionData e CompositionGroup sono stati spostati nello spazio dei nomi androidx.compose.runtime.tooling
- ComposableLambda è diventata un'interfaccia anziché una classe concreta e non ha più parametri di tipo.
- ComposableLambdaN è stata resa un'interfaccia anziché 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, joinedKeyLeft e joinedKeyRight sono stati rimossi. Non sono più necessari.
- Diverse API di primo livello sono state spostate e riorganizzate in file diversi. A causa della semantica della classe di file di Kotlin, la compatibilità binaria verrà interrotta, ma non quella del codice sorgente, quindi non dovrebbe essere un problema per la maggior parte degli utenti.
- (I99b7d, b/177245490)
SnapshotStateObserver non è più sperimentale (Id2e6a)
Sono state eliminate alcune API ritirate 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 del padding predefinito.
- Riorganizzazione dei parametri in BackdropScaffold in modo che seguano le linee guida dell'API per i parametri obbligatori prima di quelli facoltativi.
- Il parametro
icon
in BottomNavigationItem è stato spostato doposelected
eonClick
. - Il parametro
alwaysShowLabels
in BottomNavigationItem è stato rinominato inalwaysShowLabel
. - È stato rinominato il parametro
bodyContent
in alcuni componenti incontent
. - Parametri riordinati in
ButtonDefaults.buttonColors()
. Tieni presente che, poiché il tipo di parametri non è cambiato, non si verificherà un errore nel codice. Assicurati di utilizzare parametri denominati o di aggiornare l'ordinamento manualmente, altrimenti il codice non funzionerà come in precedenza. - Aggiunto il parametro
secondaryVariant
adarkColors()
. Questo colore è in genere lo stesso disecondary
nel tema scuro, ma viene aggiunto per coerenza e per una maggiore personalizzazione. - Rimossi ElevationDefaults e animateElevation() dalla superficie dell'API pubblica perché non erano di uso comune / utili.
- Rinominato
onValueChangeEnd
inSlider
inonValueChangeFinished
e reso nullabile. - Il parametro
text
inSnackbar
è stato rinominato incontent
per coerenza. - È stato aggiunto il parametro
contentPadding
aDropdownMenuItem
per consentire la personalizzazione del padding predefinito econtent
è diventata un'estensione diRowScope
. ModalDrawerLayout
rinominato inModalDrawer
.BottomDrawerLayout
rinominato inBottomDrawer
.- (I1cc66)
Versione 1.0.0-alpha12
10 febbraio 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha12
viene ritirata. La versione 1.0.0-alpha12 contiene questi commit.
Modifiche alle API
- Il supporto per ViewGroups è stato rimosso da UiApplier. I composable emitView ritirati sono stati rimossi. (Ifb214)
- CompositionReference rinominato in CompositionContext (I53fcb)
- ComponentActivity.setContent è stato spostato in androidx.activity.compose.setContent nel modulo androidx.activity:activity-compose. (Icf416)
- L'API Snapshot è stata aggiornata per essere più coerente con le linee guida per le API, nonché per nascondere le classi di implementazione interne dall'API pubblica. (Id9e32)
- Rinominate le impostazioni di Ambienti in modo che corrispondano al nuovo nome Ambient -> CompositionLocal. Gli ambienti venivano denominati AmbientFoo, ora le variabili locali di composizione vengono denominate LocalFoo. (I2d55d)
- Ambient è stato rinominato CompositionLocal e ambientOf / staticAmbientOf sono stati rinominati rispettivamente compositionLocalOf / staticCompositionLocalOf. Questa modifica contribuisce a rendere più chiaro lo scopo di CompositionLocal: un meccanismo per fornire / recuperare valori locali per una composizione. Le istanze CompositionLocal devono avere il prefisso
Local
, ad esempio val LocalFoo = compositionLocalOf { Foo() }. (Ia55b6) - takeMutableSnapshot e takeSnapshot sono diventati metodi complementari di Snapshot. (I91f19)
@ComposableContract
è stato ritirato a favore di tre annotazioni più specifiche.@ComposableContract(restartable = false)
è diventato@NonRestartableComposable
@ComposableContract(readonly = true)
è diventato@ReadOnlyComposable
@ComposableContract(preventCapture = true)
è diventato@DisallowComposableCalls
@ComposableContract(tracked = true)
è stato rimosso. (I60a9d)Le utilità emptyContent() e (@Composable () -> Unit).orEmpty() sono state ritirate perché non hanno più alcun impatto o valore positivo sulle prestazioni (I0484d)
snapshotFlow
ewithMutableSnapshot
non sono più sperimentali (I6a45f)Ora i ricompositori possono essere chiusi. I ricompositori chiusi continueranno la ricomposizione finché le coroutine secondarie di composizione non saranno completate. Recomposer.shutDown rinominato in cancel per contrastare close. (Ib6d76)
L'artefatto
compose:runtime-dispatch
è ora deprecato. MonotonicFrameClock ora si trova in compose:runtime e AndroidUiDispatcher si trova in compose:ui. (Ib5c36)L'API a cui fa riferimento il plug-in del compilatore Compose è stata sottoposta a refactoring per utilizzare un'interfaccia anziché una classe concreta. Inoltre, l'interfaccia non utilizza più un parametro di tipo.
Si tratta di una modifica interna che non dovrebbe influire sulla compatibilità del codice sorgente, ma è una modifica binaria che causa interruzioni. (I3b922, b/169406779)
È stato introdotto SnapshotMutableState (Icfd03)
DisposableEffectDisposable è stato rinominato in DisposaleEffectResult (Ica7c6)
È stato rimosso Recomposer.current(). [Abstract]ComposeView ora per impostazione predefinita crea Recomposer in modo differito e con ambito finestra, basati su ViewTreeLifecycleOwner per la finestra. La ricomposizione e i tick di animazione basati su withFrameNanos vengono messi in pausa mentre il ciclo di vita dell'host è interrotto. (I38e11)
Recomposer.runningRecomposers ora offre un StateFlow globale di RecomposerInfo di sola lettura per osservare lo stato di composizione in corso nel processo. Preferisci questa API a Recomposer.current(), che ora è ritirata. (If8ebe)
DisposableEffectDisposable è stato rinominato in DisposaleEffectResult (I3ea68)
Versione 1.0.0-alpha11
28 gennaio 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha11
viene ritirata. La versione 1.0.0-alpha11 contiene questi commit.
Modifiche alle API
- onCommit, onDispose e onActive sono stati ritirati a favore delle API SideEffect e DisposableEffect (If760e)
- L'API emit() e tutti gli overload sono stati ritirati e rinominati in ComposeNode. Le API sono identiche, ma hanno un nome diverso per rispettare le convenzioni di denominazione di Compose (I4137b).
- invalidate e compositionReference() sono ora ritirati a favore di currentRecomposeScope e rememberCompositionReference rispettivamente. (I583a8)
RememberObserver sostituisce CompositionLifecycleObserver e CompositionLifecycleObserver è ora ritirato.
RememberObserver
è un sostituto diCompositionLifecycleObserver
con semantica modificata e metodi rinominati. Il passaggio alla nuova API può essere eseguito meccanicamente per gli oggetti che vengono ricordati una sola volta, il che è e continua a essere la prassi consigliata. Tuttavia, se un riferimento è stato memorizzato più di una volta in una composizione,onRemembered
viene chiamato per ogni riferimento, mentreonEnter
viene chiamato una sola volta.onEnter
è stato chiamato più volte se l'oggetto è stato utilizzato in sottocomposizioni, comeWithConstraints
eScaffold
, rendendo inaffidabile la singola chiamataonEnter
, che è stata rimossa perRememberObserver
.RememberObserver
aggiungeonAbandoned
, che viene chiamato se l'istanzaRememberObserver
viene restituita dal callback passato aremember
, ma non è stata memorizzata nello stato di composizione e, pertanto, non verrà mai chiamatoonRemembered
. Ciò può verificarsi se un'eccezione termina la composizione prima del completamento o la composizione viene eliminata perché lo stato per cui stava producendo una composizione non è più attuale o non è più necessario. Se l'istanza diRememberObserver
che segue il singolo suggerimento di riferimento riportato sopra monitora una risorsa esterna, siaonForgotten
cheonAbandoned
indicano che la risorsa non è più necessaria. Se l'oggetto monitora il lavoro iniziato o le risorse allocate inonRemembered
,onAbandoned
può essere ignorato perché non verrà chiamato se viene chiamatoonRemembered
. (I02c36)Non contrassegnare le funzioni
collectAsState()
come in linea (Ia73e4)
Correzioni di bug
- WithConstraints è stato rielaborato come BoxWithConstraints e spostato in foundation.layout. (I9420b, b/173387208)
- Utilizza TestCoroutineDispatcher nei test (I532b6)
Versione 1.0.0-alpha10
13 gennaio 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha10
viene ritirata. La versione 1.0.0-alpha10 contiene questi commit.
Modifica che provoca un errore
La ristrutturazione dell'API del compilatore interno consente di raggruppare le modifiche ai nodi generati a seguito della composizione nella fase "Applica modifiche" della composizione, dopo il completamento di tutte le funzioni
@Composable
.Si tratta di una modifica comportamentale che potrebbe influire sul codice dell'applicazione, in quanto i nodi non sono più disponibili dalle API interne ed sperimentali finché le modifiche non sono state applicate. In genere, questo problema può essere risolto racchiudendo il codice con queste dipendenze in un
SideEffect
componibile per posticipare l'esecuzione del codice fino a quando i nodi non sono stati creati e inizializzati. (I018da)
Modifiche alle API
- È stato aggiunto un modo per monitorare se il ricompositore ha applicato le modifiche. (I1b3e2)
Espandi le API [Abstract]ComposeView per consentire il riciclo Visualizzazioni basate su Compose, eliminando la composizione per ricrearla di nuovo in un secondo momento. Aggiungi API per l'installazione e l'individuazione di Recomposer e CompositionReference con ambito finestra per la creazione di composizioni secondarie.
Aggiungi ViewCompositionStrategy per configurare la strategia di eliminazione della composizione di [Abstract]ComposeViews; il comportamento predefinito è l'eliminazione al distacco della finestra. (I860ab)
Correzioni di bug
- Recomposer ora espone un flusso del suo stato attuale, consentendo di monitorare la sua attività e quella degli effetti associati. (Ifb2b9)
- Ora è possibile accedere all'evento keyEvent nativo tramite keyEvent.nativeKeyEvent (I87c57, b/173086397)
Versione 1.0.0-alpha09
16 dicembre 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha09
viene ritirata. La versione 1.0.0-alpha09 contiene questi commit.
Modifiche alle API
Sono state rimosse SlotTable, SlotReader e SlotWriter dall'API pubblica. In precedenza, questi erano contrassegnati come InternalComposeAPI. Ora sono interni al modulo di composizione.
CompositionData e CompositionGroup sono stati aggiunti come sostituzione dell'API ui-tooling da utilizzare per estrarre le informazioni sulla composizione. Queste sono pubbliche, ma non sono destinate all'uso al di fuori dell'API ui-tooling, in quanto forniscono le informazioni non elaborate che l'API ui-tooling interpreta (I31a9c).
La classe Applier non è più considerata un (Id85b0)
L'interfaccia di
Applier
è stata modificata per semplificare la creazione di alberi dal basso verso l'alto anziché dall'alto verso il basso.Il metodo
insert()
è stato rinominato ininsertTopDown()
.È stato aggiunto un nuovo metodo,
insertBottomUp()
.Un'applicazione inserisce i nodi nell'albero che sta modificando utilizzando
insertTopDown()
oinsertBottomUp()
a seconda di quale ha un rendimento migliore.Alcuni alberi, come
LayoutNode
eView
, sono molto più efficienti da costruire dal basso verso l'alto che dall'alto verso il basso. Prima di questa modifica, era necessario uno stack di inserti per implementare la costruzione bottom-up, che doveva essere copiato in ogni applicatore che richiedeva la costruzione bottom-up per le prestazioni. Con questa modifica, unApplier
sostituisceinsertBottomUp()
per creare una struttura ad albero dal basso verso l'alto einsertTopDown()
per creare la struttura ad albero dall'alto verso il basso. (Icbdc2)Compose supporta i getter delle proprietà che possono effettuare chiamate componibili. Il supporto per questa funzionalità non verrà rimosso, ma la sintassi per dichiarare un getter di proprietà come @Composable sta cambiando.
La sintassi ora ritirata per eseguire questa operazione prevedeva l'annotazione della proprietà stessa:
@Composable val someProperty: Int get() = ...
La sintassi ora corretta per farlo è annotare il getter della proprietà:
val someProperty: Int @Composable get() = ...
Entrambe le sintassi funzioneranno per un po' di tempo, ma la sintassi precedente ritirata alla fine diventerà un errore di compilazione. (Id9197)
Correzioni di bug
- AndroidOwner made internal (Ibcad0, b/170296980)
- subcomposeInto(LayoutNode) è stato reso interno (Id724a)
Versione 1.0.0-alpha08
2 dicembre 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha08
viene ritirata. La versione 1.0.0-alpha08 contiene questi commit.
Modifiche alle API
- È stato aggiunto il controllo lint per la denominazione e la posizione dei parametri lambda componibili, per verificare la coerenza con le linee guida di Compose.
Inoltre, sono state migrate alcune API utilizzando
children
come nome per la lambda finale incontent
, in base al controllo lint e alle indicazioni. (Iec48e) - Recomposer non accetta più un EmbeddingContext; le dipendenze di pianificazione richieste vengono ottenute da effectCoroutineContext. FrameManager è deprecato; le integrazioni della piattaforma devono inizializzare la propria gestione degli snapshot globali. (I02369)
- La funzione RestorableStateHolder.withRestorableState è stata rinominata RestorableStateProvider (I66640)
Correzioni di bug
- Gli Ambients ritirati denominati con
Ambient
come suffisso sono stati sostituiti con nuove proprietà con il prefisso Ambient, seguendo le altre linee guida per Ambients e API Compose. (I33440) - Rimuovi il vecchio modulo ui-test e i relativi stub (I3a7cb)
Versione 1.0.0-alpha07
11 novembre 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha07
viene ritirata. La versione 1.0.0-alpha07 contiene questi commit.
Nuove funzionalità
Modifiche alle API
- L'annotazione
@UnionType
è stata ritirata (I57cde) - provideDefault è stato aggiunto come alternativa a provide per fornire gli 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 LaunchedEffect per coerenza con le API SideEffect e DisposableEffect. LaunchedEffect senza parametri del soggetto non è consentito per incoraggiare le best practice. (Ifd3d4)
- Ora Applier dispone di callback onBeginChanges/onEndChanges che vengono richiamati quando Composer inizia/termina l'applicazione delle modifiche all'albero. Questi possono essere utilizzati per il raggruppamento della gestione delle risorse, se necessario. (Icf476)
- Ora Recomposer richiede un CoroutineContext al momento della creazione (Ic4610)
- Modifiche all'implementazione interna di SlotTable che non dovrebbero influire sull'API pubblica. (If9828)
- Sono stati rimossi gli adattatori rxjava2 obsoleti che non accettano il valore iniziale (Idb72f)
Correzioni di bug
- foundation.Text è stato ritirato e sostituito con material.Text. Per un'API di testo di base e non soggettiva che non utilizza valori di un tema, vedi androidx.compose.foundation.BasicText. (If64cb)
- BaseTextField è stato ritirato. Utilizza invece BasicTextField. (I896eb)
- Diversi simboli correlati al layout sono stati spostati da androidx.compose.ui ad androidx.compose.layout.ui. (I0fa98, b/170475424)
Contributo esterno
- Aggiunto il modulo
runtime-rxjava3
per la composizione. Simile aruntime-rxjava2
(I02cbf)
Versione 1.0.0-alpha06
28 ottobre 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha06
viene ritirata. La versione 1.0.0-alpha06 contiene questi commit.
Modifiche alle API
- Recomposer è ora un CompositionReference e un elemento padre di composizione valido. Ora Explicit Recomposer è obbligatorio in meno posizioni. (I4036f)
- Aggiunta dell'API DisposableEffect corrispondente a SideEffect, che svolge
il ruolo di onCommit-with-params, ma con un onDispose obbligatorio.
- È stata aggiunta l'API rememberUpdatedState per pubblicare i dati dalla ricomposizione a processi in corso o di lunga durata, come DisposableEffect o LaunchedTask.
- (Id50b9)
- MutableVector ora implementa RandomAccess (I85d73, b/170461551)
- È stato aggiunto il composable SideEffect per applicare gli effetti collaterali della composizione agli oggetti gestiti dalla composizione. SideEffect è pensato per sostituire il composable onCommit. (Ia77c2)
- Nuova API sperimentale RestorableStateHolder. Consente di salvare lo stato definito con [savedInstanceState] e [rememberSavedInstanceState] per l'albero secondario prima di eliminarlo per consentire di ricomporlo la volta successiva con lo stato ripristinato. (I66884, b/166586419)
Correzioni di bug
- Attiva le transizioni in ComposeTestRule; rimuovi l'opzione per attivare il cursore lampeggiante da ComposeTestRule. (If0de3)
Versione 1.0.0-alpha05
14 ottobre 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha05
viene ritirata. La versione 1.0.0-alpha05 contiene questi commit.
Modifiche alle API
- Modificatore sperimentale Modifier.pointerInput che sospende il modificatore di input (Ia77d2)
- Le prestazioni di scorrimento di LazyColumn/Row vengono migliorate riducendo il lavoro nella composizione secondaria a ogni scorrimento. È stato aggiunto il nuovo metodo hasInvalidations() per la classe Composition. Il metodo hasPendingChanges() di Recomposer è stato rinominato hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
- Aggiungi l'API produceState per avviare le coroutine dalla composizione
che aggiornano un singolo valore
State<T>
nel tempo (Id4a57) - launchInComposition è stato rinominato LaunchedTask per rispettare le linee guida dell'API Compose (I99a8e)
- L'ordine delle chiamate place() nei layout personalizzati ora definisce l'ordine di disegno per i figli (Ibc9f6)
Versione 1.0.0-alpha04
1° ottobre 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha04
viene ritirata. La versione 1.0.0-alpha04 contiene questi commit.
Modifiche alle API
- È stato aggiunto OwnerScope per consentire la raccolta degli ambiti di osservazione di layout e disegno una volta che non sono più validi. (Ic4cf8)
- È stata aggiunta l'API derivedStateOf per creare oggetti State in base a un calcolo che può leggere (e derivare da) altri oggetti State (If758b)
- Aggiunta dell'API TestOnly per SnapshotStateObserver (I6e2a9)
Correzioni di bug
- foundation.Box è stato ritirato. Utilizza invece foundation.layout.Box. (Ie5950, b/167680279)
Versione 1.0.0-alpha03
16 settembre 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha03
viene ritirata. La versione 1.0.0-alpha03 contiene questi commit.
Modifiche alle API
CompositionCoroutineScope
non implementa piùMonotonicFrameClock
. I chiamanti diwithFrameNanos
devono importare esplicitamente la funzione di primo livello. (Icb642, b/166778123)
Correzioni di bug
- Le funzioni di test globali come
onNode
owaitForIdle
sono ora deprecate. Esegui la migrazione alle nuove controparti definite in ComposeTestRule (I7f45a). launchInComposition
non avvia più le coroutine non inviate (Ief6af, b/166486000)
Versione 1.0.0-alpha02
2 settembre 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha02
viene ritirata. La versione 1.0.0-alpha02 contiene questi commit.
Modifiche alle API
- Aggiungi le API
snapshotFlow
ewithMutableSnapshot
per utilizzare e produrre modifiche ai dati degli snapshot. (I3e722) La convenzione di chiamata per le funzioni componibili è cambiata. Si tratta di una modifica che provoca un errore binario. Tutte le librerie devono essere ricompilate per funzionare con questa versione del plug-in del compilatore Compose.
Questa modifica non crea una modifica che causa interruzioni a livello di origine, in quanto le uniche API modificate sono le API del compilatore che hanno un opt-in esplicito. (I7afd2, b/158123185)
Sono stati rimossi i metodi di pianificazione da EmbeddingContext (I7b9be)
onPreCommit è deprecato; onCommit ora ha il comportamento di onPreCommit.
onCommit e onActive ora vengono eseguiti nello stesso frame del coreografo in cui vengono applicate le modifiche alla composizione, anziché all'inizio del frame del coreografo successivo. (I70403)
Versione 1.0.0-alpha01
26 agosto 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha01
viene ritirata. La versione 1.0.0-alpha01 contiene questi commit.
Versione 0.1.0-dev
Versione 0.1.0-dev17
19 agosto 2020
androidx.compose.runtime:runtime-*:0.1.0-dev17
viene ritirata. La versione 0.1.0-dev17 contiene questi commit.
Modifiche alle API
- Ora le emissioni personalizzate possono dichiarare che uno o più dei relativi setter possono essere ignorati e ricomposti indipendentemente dall'emissione. (Ibbd13)
Sono state rimosse le chiamate FrameManager deprecate.
Le API di composizione interne sono state modificate per ridurre la quantità di overhead per monitorare gli oggetti di stato come
mutableStateof()
(I80ba6)Il composable
state { ... }
è ora ritirato a favore di chiamate esplicite aremember { mutableStateOf(...) }
per maggiore chiarezza. In questo modo si riduce la superficie complessiva dell'API e il numero di concetti per la gestione dello stato e si adatta al patternby mutableStateOf()
per la delega delle proprietà della classe. (Ia5727)Flow.collectAsState ora determina il dispatcher predefinito dalla composizione stessa anziché utilizzare Dispatchers.Main per impostazione predefinita. (I9c1d9)
È stato corretto un arresto anomalo che si verificava quando veniva utilizzata un'istruzione che salva lo stato all'interno del ciclo for. Ora è consentito avere la stessa chiave in savedInstanceState(), l'API di UiSavedStateRegistry è stata modificata in base a questo nuovo requisito (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
Correzioni di bug
emitView
è stato ritirato. Se possibile, utilizzaAndroidView
per emettere Views all'interno di Compose. Tieni presente che la composizione diretta di View e ViewGroup non sarà supportata in futuro, a meno che non si tratti di foglie nell'albero di composizione, nel qual caso è possibile utilizzare AndroidView. (I29b1e, b/163871221)
Versione 0.1.0-dev16
5 agosto 2020
androidx.compose.runtime:runtime-*:0.1.0-dev16
viene ritirata. La versione 0.1.0-dev16 contiene questi commit.
Modifiche alle API
Il criterio di mutazione predefinito di
mutableStateOf()
,ambientOf()
esavedInstanceStateOf()
è stato modificato instructuralEqualityPolicy()
anzichéreferentialEqualityPolicy()
.Il valore predefinito per decidere se un nuovo valore assegnato a un'istanza
mutableStateOf()
è considerato una modifica ora prevede l'utilizzo di==
anziché di===
.Vedi https://kotlinlang.org/docs/reference/equality.html
ambientOf()
esavedInstanceStateOf()
utilizzanomutableStateOf()
nelle loro implementazioni, pertanto sono stati modificati per essere coerenti conmutableStateOf()
.L'utilizzo dell'uguaglianza strutturale corrisponde maggiormente alle aspettative degli sviluppatori.
Ad esempio,
val state = mutableStateOf(1f)
seguito da
state.value = 1f
non sarà più considerata una modifica a
state
e gli utilizzi distate
durante la composizione non dovranno più essere ricomposti.Si tratta di una modifica che causa interruzioni, ma nella maggior parte dei casi (ad esempio quando si utilizzano classi che non eseguono l'override di
equals()
), non avrà un effetto evidente su un'applicazione.Le classi che eseguono l'override di
equals()
, come le classidata
, potrebbero riscontrare un peggioramento delle prestazioni perché i metodiequals()
vengono ora chiamati per impostazione predefinita quando vengono assegnati a unmutableStateOf()
.Il comportamento precedente può essere ripristinato aggiungendo il parametro
policy = referentialEqualityPolicy()
ai call dimutableStateOf()
,ambientOf()
esavedInstanceStateOf()
. (Ic21a7)Row
eColumn
sono ora funzioni inline che riducono significativamente l'overhead del loro utilizzo. (I75c10)
Correzioni di bug
- setViewContent è stato ritirato. Al suo posto deve essere utilizzato setContent. (I7e497, b/160335130)
È stato aggiunto MonotonicFrameAnimationClock, che consente di utilizzare un MonotonicFrameClock come AnimationClockObservable per colmare il divario tra i nuovi orologi basati su coroutine e le API che utilizzano ancora i vecchi orologi basati su callback.
L'equivalente di ManualAnimationClock in MonotonicFrameClock è ora ManualFrameClock. (I111c7, b/161247083)
Modifier.stateDraggable è stato completamente rielaborato e rinominato in Modifier.swipeable. È stata introdotta una nuova classe SwipeableState e DrawerState e BottomDrawerState sono stati sottoposti a refactoring per ereditare da questa classe. [Modal/Bottom]DrawerLayout non accetta più un parametro onStateChange. (I72332, b/148023068)
Modifier.plus è stato ritirato, utilizza invece Modifier.then. "Poi" ha un segnale di ordinamento più forte e impedisce anche di digitare
Modifier.padding().background() + anotherModifier
, che interrompe la catena e rende più difficile la lettura (Iedd58, b/161529964)Viene aggiunto SubcomposeLayout. È una primitiva di basso livello che consente di comporre i figli durante la misurazione se vogliamo utilizzare alcuni valori disponibili solo in un secondo momento 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 rendere l'API più semplice da scoprire e utilizzare (Ia6242, b/155482676)
Modifier.drawBackground è stato rinominato in Modifier.background (I13677)
Versione 0.1.0-dev15
22 luglio 2020
androidx.compose.runtime:runtime-*:0.1.0-dev15
viene ritirata. La versione 0.1.0-dev15 contiene questi commit.
Aggiornamento delle dipendenze
- Per utilizzare la versione
0.1.0-dev15
di Compose, devi 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. Utilizza state e mutableStateOf come alternative. Questa decisione di ritiro è stata presa dopo un'attenta discussione.Giustificazione
La motivazione include, a titolo esemplificativo:
- Riduce l'area di superficie e i concetti delle API che dobbiamo insegnare
- Più in linea con altri toolkit comparabili (Swift UI, React, Flutter)
- Decisione reversibile. Possiamo sempre ripristinare
@Model
in un secondo momento. - Rimuove l'utilizzo di casi limite e le domande difficili a cui rispondere sulla configurazione di
@Model
come elementi da gestire. @Model
classi di dati, equals, hashcode e così via.- Come faccio a impostare alcune proprietà come "osservate" e altre no?
- Come faccio a specificare l'uguaglianza strutturale e referenziale da utilizzare nell'osservazione?
- Riduce la "magia" nel sistema. Riduce la probabilità che qualcuno presuma che il sistema sia più intelligente di quanto non sia (ad esempio, che sappia come differenziare un elenco)
- Rende più intuitiva la granularità dell'osservazione.
- Migliora la refactorability da variabile a proprietà nella classe
- Potenzialmente apre le possibilità di eseguire ottimizzazioni specifiche per stato realizzate a mano
- Si allinea maggiormente al resto dell'ecosistema e riduce l'ambiguità nei confronti dello stato immutabile o del nostro "stato mutabile".
Note sulla migrazione
Quasi tutti gli utilizzi esistenti di
@Model
vengono trasformati in modo abbastanza semplice in uno dei due modi. L'esempio riportato di seguito include una classe@Model
con due proprietà solo a scopo esemplificativo e viene utilizzata in un elemento 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: utilizza
State<OriginalClass>
e crea copie.Questo approccio è semplificato dalle classi di dati di Kotlin. In sostanza, trasforma tutte le proprietà
var
precedenti in proprietàval
di una classe di dati, quindi utilizzastate
anzichéremember
e assegna il valore di stato alle copie clonate dell'originale utilizzando il metodo praticocopy(...)
della classe di dati.È importante notare che questo approccio funziona solo quando le uniche mutazioni a quella classe sono state eseguite nello stesso ambito in cui viene creata l'istanza
State
. Se la classe si modifica internamente al di fuori dell'ambito di utilizzo e ti affidi all'osservazione di questa modifica, l'approccio successivo è quello che devi utilizzare.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: utilizzare mutableStateOf e i delegati di proprietà
Questo approccio è semplificato dai delegati di proprietà di Kotlin e dall'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à. Il vantaggio è che l'utilizzo della classe non cambierà, ma solo la sua implementazione interna. Il comportamento non è completamente identico all'esempio originale, in quanto ogni proprietà viene ora osservata/sottoscritta individualmente, quindi le ricomposizioni che vedi dopo questo refactoring potrebbero essere più ristrette (il che è un bene).class Position(x: Int, y: Int) { var x by mutableStateOf(x) var y by mutableStateOf(y) } // source of Example is identical to original @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
(I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/143263925, b/139653744)
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, ora trasformiamo il corpo di una funzione componibile e lasciamo invariato (per lo più) il punto di chiamata.
Ciò significa che la maggior parte della logica di comunicazione con il runtime di composizione si verifica all'inizio del corpo della funzione, anziché nel punto di chiamata.
Questa modifica dovrebbe essere compatibile con l'origine per tutto l'utilizzo di Compose. La maggior parte degli utenti di Compose non dovrà 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 il compositore, un numero intero "chiave" e un numero intero bitmask utilizzato per propagare i metadati attraverso le chiamate.
Compose ora trasforma anche gli argomenti predefiniti in una funzione componibile. Lo fa senza introdurre un sovraccarico predefinito sintetico aggiuntivo della funzione stessa, quindi questa modifica comporterà la definizione di un numero inferiore di funzioni.
Modifiche intenzionali note del comportamento risultanti da questa operazione:
- Alcune chiamate verranno saltate, cosa che non sarebbe successa in precedenza
- Le espressioni componibili nelle espressioni degli argomenti predefiniti ora vengono gestite e sottoscritte correttamente
Questo lavoro ha incluso alcune ottimizzazioni: 1. Il risultato dei confronti dei parametri viene propagato attraverso il grafico delle chiamate ad altre funzioni componibili. Ciò comporterà un minor numero di confronti in fase di runtime, ridurrà le dimensioni della tabella degli slot e aumenterà l'omissione di funzioni componibili che in precedenza non venivano omesse 2. I parametri che vengono considerati "statici" in fase di compilazione non vengono più confrontati o archiviati in fase di runtime. In questo modo si riduce il numero di confronti e le dimensioni della tabella degli slot. 3. La struttura del flusso di controllo del corpo delle funzioni viene utilizzata per ridurre al minimo il numero di gruppi generati. In questo modo si riducono le dimensioni della tabella degli slot e il runtime deve eseguire meno lavoro 4. I parametri di invio e ricezione inutilizzati per le funzioni non sono inclusi nella determinazione della possibilità di ignorare la funzione se non vengono utilizzati all'interno del corpo della funzione.
La maggior parte delle modifiche che causano interruzioni riguardava le API a cui si rivolge direttamente il compilatore e l'utilizzo tipico di Compose non sarà interessato: 1. Composer::startExpr è stato rimosso 2. Composer::endExpr è stato rimosso 3. Composer::call was deprecated 4. Gli overload non varargs di
key
sono stati rimossi. Utilizza la versionevararg
da ora in poi. 5. L'annotazione Pivotal è stata ritirata. Utilizzakey
come sostituzione. 6. ScopeUpdateScope::updateScope è stato modificato in modo da prevedere una Function3 anziché una Function1 7. restartableFunction e restartableFunctionN sono stati aggiornati per includere parametri aggiuntivi in fase di compilazione (I60756, b/143464846)Aggiunta di sortWith e removeRange a MutableVector (Icccf7)
Sono state aggiunte implementazioni del metodo predefinito per CompositionLifecycleObserver (I24289)
Applier ora richiede un metodo clear() per eliminare le composizioni (Ibe697)
Aggiunta di asMutableList() a MutableVector per consentire il passaggio all'API pubblica senza dover copiare l'intero elenco. (I298df)
È stata aggiunta la funzione rememberCoroutineScope() per ottenere un CoroutineScope gestito nella composizione per l'avvio di job in risposta agli eventi. (I0e264)
MutableVector è una nuova raccolta che non implementa nessuna delle interfacce di raccolta standard. Questa raccolta offre velocità rispetto ad altri requisiti ed è destinata a essere utilizzata solo nelle implementazioni interne. (I8ebd6)
StableMutableList
eStableMutableMap
sono stati rimossi temporaneamente per evitare un problema nella versione di Kotlin richiesta da Compose. Queste interfacce verranno reintrodotte una volta che Compose sarà aggiornato a una versione di Kotlin che non presenta il problema.SnapshotStateList
eSnapshotStateMap
sono ora pubblici, ma verranno ritirati una volta ripristinatiStableMutableList
eStableMutableMap
. (Ia7769)aggiungi la funzione di primo livello withFrameNanos per la durata dell'animazione (Ie34c5)
L'annotazione @Untracked è stata ritirata. Sostituisci con @ComposableContract(tracked=false) (Id211e)
RestartableFunction e le API associate sono state rinominate in ComposableLambda e così via. Queste API erano destinate solo al compilatore, quindi normalmente non dovrebbero influire sulla compatibilità a livello di codice sorgente. Il cambio di nome è stato eseguito principalmente per comunicare meglio cosa fa 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 Compose intercettava in modo non banale le chiamate ai costruttori all'interno di una funzione @Composable se era presente un (I5205a, b/158123804)
Il composable Recompose non è più un'astrazione utile. La maggior parte delle ricomposizioni dovrebbe avvenire in seguito alle assegnazioni di MutableState. Per qualsiasi altro elemento, ti consigliamo di utilizzare la funzione
invalidate
per attivare una ricomposizione dell'ambito corrente. (Ifc992)Observe non è più un'astrazione utile. Se devi 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 ritirato a favore di @ComposableContract(restartable=false) (If4708)
È stato aggiunto un adattatore per StateFlow, introdotto di recente, che consente di precompilare il valore iniziale in modo che lo stato restituito non sia nullabile (I61dd8, b/156233789).
È stato aggiunto un adattatore per Flow. Esempio di utilizzo: val value by flow.collectAsState() (If2198, b/153375923)
Gli operatori delegati della proprietà [Mutable]State sono stati spostati nelle estensioni per supportare le ottimizzazioni dei delegati della proprietà di Kotlin 1.4. I chiamanti devono aggiungere le importazioni per continuare a utilizzare
by state { ... }
oby mutableStateOf(...)
. (I5312c)androidx.compose.ViewComposer è stato spostato in androidx.ui.node.UiComposer androidx.compose.Emittable è stato rimosso. Era ridondante con ComponentNode. androidx.compose.ViewAdapters è stato rimosso. Non sono più un caso d'uso supportato. Compose.composeInto è stato ritirato. Utilizza invece
setContent
osetViewContent
. Compose.disposeComposition è stato ritirato. Utilizza invece il metododispose
suComposition
restituito dasetContent
. 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)È stato aggiornato il flag
ComposeFlags.COMPOSER_PARAM
in modo che siatrue
, il che modificherà la strategia di generazione del codice per il plug-in di composizione. A livello generale, questo fa sì che le funzioni @Composable vengano generate con un parametro sintetico aggiuntivo, che viene passato alle chiamate @Composable successive affinché il runtime gestisca correttamente l'esecuzione. Si tratta di una modifica binaria significativa, ma dovrebbe preservare la compatibilità a livello di codice sorgente in tutti gli utilizzi approvati di Compose. (I7971c)Modifiche che causano interruzioni all'API ambients. Per maggiori dettagli, consulta la documentazione relativa ai 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 by liveData.observeAsState() (Ie9e8c, b/150465596)
Gli adattatori Rx senza un valore iniziale esplicito sono ritirati. L'utilizzo di null non è sempre la scelta migliore per impostazione predefinita, ad esempio quando hai un elenco è 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 by observable.subscribeAsState() (Ifab4b, b/153369097)
savedInstanceState()
ora può essere utilizzato con i tipi Nullable (I6847f, b/153532190)Nuove funzioni listSaver() e mapSaver() per semplificare la scrittura di oggetti Saver personalizzati (I8cf68, b/152331508)
Nuove funzioni: savedInstanceState() e rememberSavedInstanceState(). Sono simili a state() e remember(), ma hanno il supporto integrato dello stato dell'istanza salvata (If1987, b/152025209)
Correzioni di bug
runOnIdleCompose
rinominato inrunOnIdle
(I83607)- API sperimentale LayoutNode (I4f2e9)
- androidx.ui.foundation.TextFieldValue e androidx.ui.input.EditorValue sono deprecati. TextField, FilledTextField e CoreTextField che utilizzano questo tipo sono anch'essi deprecati. Utilizza androidx.ui.input.TextFieldValue (I4066d, b/155211005)
- Rimosse le API DrawBackground deprecate a favore delle API di estensione drawBackground su Modifier. È stato eseguito il refactoring delle implementazioni di colore, pennello e paint drawBackground per ridurre anche i percorsi del codice e rimuovere il requisito di creazione di Modifier come parte della composizione. (I0343a)
- API Compose di livello superiore aggiornate che espongono una tela per esporre invece CanvasScope. In questo modo i consumatori non devono più gestire i propri oggetti Paint. Per i consumatori che hanno ancora bisogno di accedere a un canvas, possono utilizzare il metodo drawCanvas dell'estensione che fornisce un callback per emettere comandi di disegno con il canvas sottostante. (I80afd)
- L'API lambda finale WithConstraints è stata modificata. Ora, anziché due parametri, ha un ambito del destinatario che, oltre a vincoli e layoutDirection, fornisce le proprietà minWidth, maxWidth, minHeight e maxHeight in Dp (I91b9a, b/149979702)
- È stato aggiunto il modificatore di spaziatura interna simmetrica. (I39840)
- Sono stati aggiornati wrapContentWidth e wrapContentHeight in modo che prevedano l'allineamento verticale o orizzontale anziché un allineamento qualsiasi. Il modificatore di gravità è stato aggiornato per accettare l'allineamento verticale o orizzontale. Riga, Colonna e Stack sono stati aggiornati per supportare gli allineamenti continui personalizzati. (Ib0728)
- Il modulo ui-text viene rinominato ui-text-core (I57dec)
- Migliora l'API DrawModifier:
- È stato creato l'ambito del ricevitore per draw() ContentDrawScope
- Rimossi tutti i parametri in draw()
- DrawScope ha la stessa interfaccia di CanvasScope
- ContentDrawScope ha il metodo drawContent() (Ibaced, b/152919067)
- ColoredRect è stato ritirato. Utilizza invece
Box(Modifier.preferredSize(width, height).drawBackground(color))
. (I499fa, b/152753731) - Sostituito l'operatore Modifier plus con le funzioni di estensione della fabbrica (I225e4)
- I membri di RowScope e ColumnScope sono ora accessibili al di fuori di Riga e Colonna. (I3a641)
- LayoutFlexible è stato rinominato LayoutWeight. Il parametro stretto è stato rinominato in riempimento. (If4738)
- WithConstraints ha ricevuto il parametro LayoutDirection (I6d6f7)
- Rinomina lo sfondo in DrawBackground e impostalo come memorizzato per impostazione predefinita (Ia0bd3)
- Sostituito ButtonStyle con funzioni distinte e rimosso l'overload di testo (stringa). Consulta gli esempi aggiornati per le informazioni sull'utilizzo. (If63ab, b/146478620, b/146482131)
runOnIdleCompose
erunOnUiThread
sono ora funzioni globali anziché metodi di ComposeTestRule. (Icbe8f)
Contributo esterno
- Rimuovi API non necessarie come Looper e Handler dal livello di porting di Compose Runtime (I6847d)
- Deprecate
Flow<T>.collectAsState()
senza valore iniziale. UtilizzaStateFlow<T>
o passa un valore iniziale esplicito. (I63f98, b/157674865)