La memoria è una risorsa preziosa in qualsiasi ambiente di sviluppo software, ma è ancora più preziosa nei sistemi operativi mobile in cui la memoria fisica è spesso limitata. Questo vale in particolar modo per i dispositivi con memoria bassa in modo nativo che si trovano generalmente su Android Go. Esistono vari modi per ottimizzare la memoria dell'app per garantirne il funzionamento in questi ambienti.
Best practice
Rilascia memoria cache
La memoria potrebbe non essere sufficiente per mantenere i processi in background in esecuzione come in un ambiente tipico. In questo caso, puoi utilizzare onTrimMemory()
per eliminare la memoria non necessaria dal processo dell'app. Per identificare
al meglio l'attuale livello di allestimento per la tua app, utilizza
ActivityManager.getMyMemoryState(RunningAppProcessInfo)
e ottimizza o taglia le risorse non necessarie. Ad esempio, puoi ridurre l'utilizzo non necessario della memoria da parte di espressioni, ricerche, visualizzazione della cache o estensioni apribili per ridurre il numero di volte in cui la tua app riscontra arresti anomali o ANR a causa della memoria insufficiente.
Pianificazione delle attività
La pianificazione simultanea può portare a più operazioni che richiedono molta memoria da eseguire in parallelo, portando alla concorrenza per risorse che superano il picco di utilizzo della memoria di un'app. Prova ad allocare le risorse in modo appropriato separando i processi in attività a bassa latenza e ad alta intensità di CPU nel pool di thread corretto da eseguire su dispositivi che potrebbero dover affrontare vari vincoli delle risorse.
Perdita di memoria
Vari strumenti, come Memory Profiler in Android Studio e Perfetto, sono disponibili specificamente per trovare e ridurre le perdite di memoria all'interno della tua app. Ti consigliamo vivamente di utilizzare questi strumenti per identificare e risolvere potenziali problemi di memoria, in modo da consentire l'esecuzione di altri componenti dell'app senza ulteriore pressione sul sistema.
Altri suggerimenti
- Le immagini di grandi dimensioni o i disegnabili consumano più memoria nelle app. Identifica e ottimizza le bitmap grandi o a colori per ridurre l'utilizzo di memoria.
- Prova a scegliere altre opzioni per le GIF nella tua app quando crei per Android Go, poiché le GIF consumano molta memoria.
- Puoi ridurre le dimensioni dei file PNG senza perdere la qualità dell'immagine utilizzando strumenti come WebP, pngcrush e pngquant. Tutti questi strumenti possono ridurre le dimensioni del file PNG mantenendo la qualità percepita dell'immagine.
- Lo strumento aapt può ottimizzare le risorse immagine inserite in
res/drawable/
con compressione senza perdita di dati durante il processo di compilazione. Ad esempio, lo strumento aapt può convertire un file PNG a colori reali che non richiede più di 256 colori in un PNG a 8 bit con una tavolozza dei colori. In questo modo l'immagine sarà di pari qualità, ma con un ingombro di memoria ridotto.