Jetpack Compose offre prestazioni eccellenti fin da subito. Configura la tua app utilizzando le best practice per evitare errori comuni e ottimizzare le prestazioni dell'applicazione Compose.
Competenze Android
Visualizza su GitHubPrestazioni di Jetpack Compose
android skills add jetpack-compose-performanceBenchmarking di Jetpack Compose
Per convalidare le prestazioni di Jetpack Compose rispetto alle visualizzazioni, utilizziamo benchmark principali, ovvero benchmark incentrati su user journey importanti e reali, come l'avvio a freddo di un'app o lo scorrimento di un elenco o di una griglia con immagini. Eseguiamo questi benchmark utilizzando l'app Pokedex open source, confrontando le sue implementazioni di Views e Compose.
Questi benchmark mostrano che Compose 1.9 e versioni successive corrispondono alle prestazioni delle visualizzazioni per i jank durante lo scorrimento.
Per ulteriori metriche e per scoprire di più sulle nostre metodologie, consulta Benchmark Hero.
Concetti fondamentali
Ecco alcuni dei concetti chiave per le prestazioni in Compose:
- Fasi: comprendere le fasi di composizione, layout e disegno è fondamentale per ottimizzare il modo in cui Compose aggiorna la UI.
- Profili di riferimento: questi profili precompilano il codice essenziale, consentendo lanci di app più rapidi e interazioni più fluide.
- Stabilità: scopri in che modo Compose confronta i parametri durante la ricomposizione, in modo da poter saltare il lavoro non necessario senza introdurre costosi controlli di uguaglianza.
Configura correttamente l'app
Se le prestazioni dell'app sono scarse, potrebbe esserci un problema di configurazione. Un buon primo passo è controllare le seguenti opzioni di configurazione:
- Esegui la build in modalità di rilascio con R8:prova a eseguire l'app in modalità di rilascio. La modalità di debug è utile per individuare molti problemi, ma comporta un costo in termini di prestazioni e può rendere difficile l'individuazione di altri problemi. Dovresti anche attivare l'ottimizzazione e la riduzione con il compilatore R8 per garantire una build di release efficiente e con un buon rendimento.
- Utilizza i profili di baseline:i profili di baseline migliorano le prestazioni precompilando il codice per i Critical User Journey. Compose include un profilo predefinito, ma idealmente dovresti crearne anche uno specifico per l'app. Scopri di più sui profili di baseline nella documentazione generale sulle prestazioni di Android
Strumenti
Acquisisci familiarità con la suite di strumenti disponibili per aiutarti a misurare e analizzare le prestazioni della tua app Compose.
Best practice
Quando sviluppi la tua app con Compose, tieni presente le seguenti best practice:
- Evita calcoli onerosi: utilizza
rememberper memorizzare nella cache i risultati di calcoli onerosi. - Aiuta i layout lazy: fornisci parametri
keyecontentTypestabili ai layout lazy per ridurre al minimo le ricomposizioni non necessarie e consentire il riutilizzo degli slot. - Limita le ricomposizioni non necessarie: utilizza
computedStateOf(in Compose 1.13 e versioni successive) oderivedStateOfper limitare le ricomposizioni durante la lettura di uno stato in rapida evoluzione. - Rimanda le letture dello stato: rimanda le letture dello stato il più possibile inserendole in funzioni lambda.
- Utilizza i modificatori lambda per modificare lo stato: utilizza i modificatori basati su lambda come
Modifier.offset { ... }per le variabili di stato che cambiano di frequente. - Evita le scritture a ritroso: non scrivere mai in uno stato che è già stato letto in un componibile.
Per maggiori dettagli, consulta la guida alle best practice.
Visualizzazioni
Se utilizzi le visualizzazioni anziché Compose, consulta la guida dedicata Migliora le prestazioni del layout.
Risorse aggiuntive
- Guida alle prestazioni delle app: scopri best practice, librerie e strumenti per migliorare le prestazioni su Android.
- Ispeziona le prestazioni:controlla le prestazioni dell'app.
- Benchmarking: esegui il benchmarking delle prestazioni dell'app.
- Avvio dell'app: ottimizza l'avvio dell'app.
- Profili di baseline: scopri i profili di baseline.