La latenza all'avvio è una metrica importante per trattenere gli utenti attivi giornalieri e garantire un'esperienza utente senza interruzioni sin dalla prima interazione. Questo vale soprattutto in ambienti con poca RAM, dove potrebbero essere presi in considerazione dei compromessi in termini di prestazioni. Tuttavia, prima di iniziare a migliorare l'avvio dell'app, è importante comprendere gli aspetti sottostanti che contribuiscono allo stesso avvio.
Best practice
Spedisci con un profilo di riferimento
I profili Baseline migliorano la velocità di esecuzione del codice di circa il 30% dal primo lancio evitando passaggi di interpretazione e compilazione JIT (JIT) per i percorsi di codice inclusi. Inviando un profilo di riferimento in un'app, Android Runtime (ART) può ottimizzare i percorsi di codice inclusi tramite la compilazione Ahead of Time (AOT), fornendo miglioramenti delle prestazioni per ogni nuovo utente e a ogni aggiornamento dell'app.
Evita l'inizializzazione
Evita di lavorare con entusiasmo che potrebbero non essere necessari nella sequenza di avvio dell'app.
Lo scenario più probabile per la tua app che avvia un processo è il
lancio dell'app. Tuttavia,
WorkManager,
JobScheduler,
BroadcastRicevir, i servizi associati e la libreria di avvio AndroidX
possono anche avviare i processi dell'app in background. Se possibile, evita di inizializzare inutilmente qualcosa nella tua classe Application
. Molte librerie offrono l'inizializzazione on demand, che consente di richiamarle solo quando necessario.
Sposta le attività dal thread dell'interfaccia utente al thread in background
Se ci sono attività che richiedono più tempo e bloccano il thread principale, spostale in un thread in background o utilizza WorkManager per garantire l'efficienza. Identifica le operazioni che occupano grandi intervalli di tempo o richiedono più tempo del previsto. L'ottimizzazione di queste attività può aiutare a migliorare drasticamente la latenza dell'avvio.
Analizza e correggi il conflitto di lettura del disco grave
StrictMode è uno strumento per sviluppatori che può aiutare a rilevare l'uso di accessi accidentali al disco o alla rete nel thread principale dell'app, dove vengono ricevute le operazioni dell'interfaccia utente e avvengono le animazioni. Quando lo strumento rileva una possibile area di miglioramento, puoi chiudere automaticamente l'app o registrare la violazione per ulteriori verifiche in un secondo momento.
Evita IPC sincroni
Spesso le lunghe pause nell'esecuzione della tua app sono causate da chiamate a Binder, il meccanismo di comunicazione tra processi (IPC) su Android. Nelle versioni recenti di Android, è uno dei motivi più comuni per l'interruzione dell'esecuzione del thread dell'interfaccia utente. In genere, la soluzione consiste nell'evitare di chiamare funzioni che effettuano chiamate a Binder; se è inevitabile, devi memorizzare nella cache il valore o spostare il lavoro nei thread in background. Per maggiori informazioni, consulta Ritardi di pianificazione dei thread.