Approfondimenti sui giochi a bassa memoria

A volte Android uccide (o termina) i giochi di alta qualità più importanti quando il dispositivo ha poca memoria. Android tenta di utilizzare tutta la memoria disponibile per memorizzare nella cache app e giochi in modo che vengano caricati rapidamente (migliorando l'esperienza utente), ma quando la memoria diventa limitata, il sistema chiude le app e i giochi che richiedono più memoria per liberare memoria per il normale funzionamento del dispositivo.

Di seguito sono riportate informazioni, approfondimenti e best practice per aiutarti a migliorare l'utilizzo della memoria del gioco.

  • Utilizza ApplicationExitInfo: questa API Java/Kotlin restituisce il motivo per cui l'esecuzione precedente della partita è stata interrotta dal sistema Android. Utilizza ApplicationExitInfo per verificare la presenza di memoria insufficiente come motivo della morte di un'esecuzione precedente di un processo. Controlla se il gioco è stato interrotto a causa di una scarsa memoria, in modo che possa essere ottimizzato per utilizzare meno memoria sul dispositivo.
  • Osserva la RAM fisica totale: per evitare che i giochi vengano terminati in primo piano e per soddisfare le capacità del dispositivo, osserva la RAM fisica totale e regola l'utilizzo della memoria di gioco in base a questa metrica. Se l'obiettivo è impedire l'interruzione delle app poco dopo il passaggio in background (per consentire al giocatore di eseguire il multitasking), utilizza i callback trim (in particolare TRIM_MEMORY_UI_HIDDEN) per ridurre l'utilizzo della memoria del gioco.
  • Non registrarti per i callback trim deprecati: Android non dispone di API per rilevare gli eventi di pressione della memoria nativa quando raggiungono i limiti di memoria (vedi il callout daemon killer di memoria ridotto). I richiami di taglio non sono stati utili per evitare l'interruzione in caso di scarsa memoria, pertanto Android li ha ritirati tutti, ad eccezione di TRIM_MEMORY_UI_HIDDEN e TRIM_MEMORY_BACKGROUND.

Daemon killer per memoria insufficiente

Il demone Android low memory killer (lmkd) è un processo che monitora lo stato della memoria di un sistema Android in esecuzione e reagisce a un'elevata pressione sulla memoria uccidendo i processi meno essenziali per mantenere le prestazioni del sistema a livelli accettabili.

Il daemon può scegliere i processi da terminare senza attendere che il processo accetti qualsiasi tipo di callback. Di conseguenza, le app e i giochi non riceveranno una notifica come ultima possibilità di rilasciare memoria prima di essere uccisi.

Scopri di più sul demone di eliminazione a bassa memoria.