Scrittura delle fasi e dell'esecuzione

Quando Compose aggiorna un frame, questo attraversa tre fasi:

  • Composizione:l'opzione Scrittura determina cosa mostrare. Esegue funzioni componibili e crea la struttura ad albero dell'interfaccia utente.
  • Layout: Compose determina le dimensioni e il posizionamento di ogni elemento nell'albero dell'interfaccia utente.
  • Disegno: Compose in realtà visualizza i singoli elementi dell'interfaccia utente.

Compose può saltare in modo intelligente tutte queste fasi se non sono necessarie. 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 dell'interfaccia utente, Compose può saltare le fasi di composizione e layout e tracciare nuovamente questo elemento.

Tuttavia, a causa di errori di programmazione, Compose ha difficoltà a capire quali fasi può saltare in modo sicuro, nel qual caso Compose esegue tutte e tre le fasi, il che può rallentare la UI. Pertanto, molte delle best practice relative alle prestazioni servono per aiutare Compose a saltare le fasi inutili.

Per ulteriori informazioni, consulta la guida alle fasi di Jetpack Compose.

Principi generali

Ci sono un paio di principi generali da seguire che possono migliorare le prestazioni in generale:

  • Se possibile, sposta i calcoli fuori dalle funzioni componibili. Potrebbe essere necessario eseguire nuovamente le funzioni componibili ogni volta che l'interfaccia utente cambia. Qualsiasi codice inserito nel componibile viene rieseguito, potenzialmente per ogni frame di un'animazione. Limita il codice del componibile solo a ciò di cui ha bisogno per creare l'interfaccia utente.
  • Rimanda le letture dello stato il più a lungo possibile. Spostando la lettura dello stato in un elemento componibile secondario o in una fase successiva, puoi ridurre al minimo la ricomposizione o saltare completamente la fase di composizione. Puoi farlo passando le funzioni lambda anziché il valore dello stato per cambiare spesso lo stato e preferire i modificatori basati su lambda quando passi a uno stato che cambia spesso. Puoi trovare un esempio di questa tecnica nella sezione Posticipa le letture il più a lungo possibile di Segui le best practice.

Risorse aggiuntive