2013-07-27 12 views

risposta

6

Fondamentalmente tutti gli oggetti che sono correttamente annullati vengono considerati rilasciati e la loro memoria può essere recuperata dal sistema operativo. La tua domanda è troppo generica ed è difficile per offrire un elenco esaustivo di metodi, ma si dovrebbe generalmente essere a conoscenza di questi:

  1. Stop/chiudere eventuali servizi/files/connessioni che non sono più necessari
  2. Do NOT archiviare qualsiasi Drawable in qualsiasi oggetto statico, i drawables contengono riferimenti al loro proprietario View che contengono riferimenti alle attività del proprietario, quindi se si tiene su qualsiasi Drawable si manterrà su molto di oggetti/memoria inutilmente
  3. Per un'utilità app, probabilmente non ti devi preoccupare della memoria; ma per le app che utilizzano molte bitmap, dovresti avere una conoscenza approfondita di Bitmap management e di come vengono utilizzate le bitmap nella tua app per gestirle efficacemente
+0

+1 per la menzione Drawable. – Subby

+0

Quindi dovrei rendere null tutte le mie visualizzazioni di testo e imagebuttons nella 'onPause'? –

+0

@RuchirBaronia non ce n'è bisogno visto che: a. se viene chiamato onPause(), l'attività verrà indicata dal sistema operativo. b. se viene chiamato onDestory(), allora Activity e tutto ciò che fa riferimento verranno comunque rilasciati. È solo quando alcuni altri oggetti o variabili statiche di alcune classi ottengono la sospensione dell'attività che si verificherà una perdita. – Kai

7

Ci sono alcuni noti esempi di memoria hog, con media (audio/video) e grandi bitmap che sono i più grandi maiali della memoria. La maggior parte delle cose sono prese in considerazione rimuovendo tutti i puntatori a loro e lasciando che GC abbia la sua strada con loro. Bitmap, tuttavia, possono essere riciclati più immediatamente utilizzando:

if (yourBitmap != null) { 
    yourBitmap.recycle(); 
    youBitmap = null; 
} 

I vostri mezzi di comunicazione dovrebbero essere fermati e de-riferimento. Ma dovrebbe essere fermato in onPause() e non lasciato fino a onStop().

+0

k Posso rimuovere il riferimento della bitmap ma come su oggetti come Sto esaurendo la memoria –

+2

assicurati di .recycle() i tuoi bitmap, non solo rimuovi il riferimento. Ciò libererà la tua memoria più rapidamente. Kai ha lasciato alcuni punti positivi nella sua risposta. – HalR

+0

che dire di drawable? –

Problemi correlati