Quando Compose aggiorna un frame, passa attraverso tre fasi:
- Composizione:Compose determina cosa mostrare. Esegue funzioni componibili e crea l'albero della UI.
- Layout:Compose determina le dimensioni e il posizionamento di ogni elemento nell'albero dell'interfaccia utente.
- Disegno:la composizione esegue il rendering dei singoli elementi UI.
Compose può saltare in modo intelligente una di queste fasi se non è necessaria. Ad esempio, supponiamo che un singolo elemento grafico venga scambiato tra due icone delle stesse dimensioni. Poiché le dimensioni di questo elemento non cambiano e non vengono aggiunti o rimossi elementi dell'albero UI, Compose può saltare le fasi di composizione e layout e ridisegnare questo elemento.
Tuttavia, gli errori di codifica possono rendere difficile per Compose sapere quali fasi può saltare in sicurezza, nel qual caso Compose esegue tutte e tre le fasi, il che può rallentare l'interfaccia utente. Pertanto, molte delle best practice per il rendimento servono ad aiutare Compose a saltare le fasi che non deve eseguire.
Per saperne di più, consulta la guida Fasi di Jetpack Compose.
Principi generali
Esistono alcuni principi generali da seguire che possono migliorare il rendimento in generale:
- Se possibile, sposta i calcoli fuori dalle funzioni componibili. Potrebbe essere necessario eseguire nuovamente le funzioni componibili ogni volta che cambia la UI. Qualsiasi codice inserito nel composable viene rieseguito, potenzialmente per ogni frame di un'animazione. Limita il codice del composable solo a ciò che serve per creare l'interfaccia utente.
- Rimanda le letture dello stato il più a lungo possibile.Spostando la lettura dello stato in un composable figlio o in una fase successiva, puoi ridurre al minimo la ricomposizione o saltare completamente la fase di composizione. Puoi farlo passando funzioni lambda anziché il valore dello stato per lo stato che cambia frequentemente e preferendo i modificatori basati su lambda quando passi lo stato che cambia frequentemente. Puoi vedere un esempio di questa tecnica nella sezione Rimanda le letture il più a lungo possibile di Segui le best practice.
Risorse aggiuntive
- Guida alle prestazioni delle app: scopri best practice, librerie e strumenti per migliorare le prestazioni su Android.
- Ispeziona le prestazioni: ispeziona le prestazioni dell'app.
- Benchmarking: confronta le prestazioni dell'app.
- Avvio dell'app: ottimizza l'avvio dell'app.
- Profili di baseline: scopri di più sui profili di baseline.