Le seguenti best practice ti aiutano a ottimizzare la tua app senza sacrificare la qualità.
Utilizzare i profili di base
I profili di base possono migliorare la velocità di esecuzione del codice del 30% dal primo avvio e possono rendere tutte le interazioni dell'utente, come l'avvio dell'app, la navigazione tra le schermate o lo scorrimento dei contenuti, più fluide fin dal primo utilizzo. L'aumento della velocità e della reattività di un'app comporta un aumento degli utenti attivi giornalieri e un tasso medio di visite di ritorno più elevato.
Utilizzare un profilo di avvio
Un profilo di avvio è simile a un profilo di baseline, ma viene eseguito in tempo di compilazione per ottimizzare il layout DEX per un avvio più rapido dell'app.
Utilizzare la libreria di avvio delle app
La libreria di avvio dell'app ti consente di definire gli inizializzatori dei componenti che condividono un unico content provider, anziché definire content provider separati per ogni componente da inizializzare. Ciò può migliorare notevolmente il tempo di avvio dell'app.
Caricare le librerie in modo differito o disattivare l'inizializzazione automatica
Le app utilizzano molte librerie, alcune delle quali potrebbero essere obbligatorie per l'avvio. Tuttavia, possono esserci molte librerie in cui l'inizializzazione può essere ritardata fino a dopo il disegno del primo frame. Alcune librerie hanno un'opzione per disattivare l'inizializzazione automatica all'avvio o hanno un'inizializzazione on demand. Utilizza questa opzione per posticipare l'inizializzazione fino a quando non è necessario per migliorare il rendimento. Ad esempio, puoi utilizzare l'inizializzazione on demand per richiamare WorkManager solo quando è necessario il componente.
Utilizzare lo stato nei composable
Lo stato è qualsiasi dato che può cambiare nel tempo e determina cosa viene visualizzato nell'interfaccia utente o come si comporta. Poiché Compose è dichiarativo, la schermata non si aggiorna automaticamente a meno che la UI non osservi e risponda esplicitamente alle modifiche dello stato.
Valuta la possibilità di utilizzare la composizione condizionale per posticipare il caricamento delle parti dell'interfaccia utente che non sono immediatamente visibili all'avvio, come schermate di errore, dettagli facoltativi o schede secondarie. Se racchiudi i componenti pesanti in un semplice controllo dello stato, eviti di eseguire la logica di composizione durante la finestra di avvio critica, mantenendo leggero il layout iniziale.
var shouldLoad by remember {mutableStateOf(false)}
if (shouldLoad) {
MyComposable()
}
Carica i composable all'interno del blocco condizionale modificando shouldLoad:
LaunchedEffect(Unit) {
shouldLoad = true
}
Viene così attivata una ricomposizione che include il codice all'interno del blocco condizionale nel primo snippet. Per saperne di più, consulta Stato nei composable.
Ottimizzare la schermata iniziale
Le schermate iniziali sono una parte importante dell'avvio delle app e l'utilizzo di una schermata iniziale ben progettata può contribuire a migliorare l'esperienza complessiva di avvio delle app. Android 12 (livello API 31) e versioni successive includono una schermata iniziale progettata per migliorare le prestazioni. Per ulteriori informazioni, vedi Schermata iniziale.
Utilizzare tipi di immagini scalabili
Ti consigliamo di utilizzare la grafica vettoriale per le immagini. Se non è possibile, utilizza immagini WebP. WebP è un formato di immagine che offre una compressione superiore senza perdita di dati e con perdita di dati per le immagini sul web. Puoi convertire immagini BMP, JPG, PNG o GIF statiche esistenti nel formato WebP utilizzando Android Studio. Per saperne di più, consulta Creare immagini WebP.
Inoltre, riduci al minimo il numero e le dimensioni delle immagini caricate all'avvio.
Utilizzare le API Performance
L'API per il rendimento per la riproduzione multimediale è disponibile su Android 12 (livello API 31) e versioni successive. Puoi utilizzare questa API per comprendere le funzionalità del dispositivo ed eseguire le operazioni di conseguenza.
Dai la priorità alle tracce di avvio a freddo
Un avvio a freddo si riferisce all'avvio di un'app da zero, il che significa che il processo del sistema non crea ancora il processo dell'app. L'app in genere si avvia a freddo se la lanci per la prima volta dall'avvio del dispositivo o da quando il sistema ha arrestato forzatamente l'app. Gli avvii a freddo sono molto più lenti perché l'app e il sistema devono svolgere più operazioni che non sono necessarie in altri tipi di avvio, come quelli a caldo. Il tracciamento del sistema degli avvii a freddo ti offre una migliore supervisione delle prestazioni dell'app.
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Analisi e ottimizzazione dell'avvio dell'app
- Tempi di avvio dell'app
- Frame bloccati