Vedo che le due linee sono sempre insieme:
myBitmap.recycle();
myBitmap = null;
Se uso solo:
myBitmap = null;
Che differenza?
Grazie.
risposte:
8 per risposta № 1Secondo la documentazione:
public void recycle()
Libera l'oggetto nativo associato a questa bitmape deselezionare il riferimento ai dati pixel. Questo non libererà i dati pixel sincrono; permette semplicemente che venga raccolta spazzatura se presente non ci sono altri riferimenti. La bitmap è contrassegnata come "morta", intendendola volontàgenerare un'eccezione se viene chiamato getPixels () o setPixels () e non disegnerà nulla. Questa operazione non può essere annullata, quindi dovrebbe essere chiamato solo se si è certi che non ci siano ulteriori usi per bitmap. Questa è una chiamata avanzata e normalmente non è necessario chiamarla, poiché il normale processo GC libererà questa memoria quando non ci sono più riferimenti a questa bitmap.
Quindi in poche parole,
myBitmap = null;
Rimuove quel riferimento specifico alla bitmap a cui punta. Se è l'unico riferimento, quella bitmap verrà ripulita dal Garbage Collector.
Però,
myBitmap.recycle();
myBitmap = null;
Rimuove un riferimento nascosto ai dati pixel perquella bitmap. Rimuove quindi il riferimento specifico alla bitmap. Quindi entrambi saranno raccolti. A meno che tu non abbia una bitmap enorme, o per qualche ragione abbia una memoria limitata, probabilmente non devi preoccuparti di chiamare myBitmap.recycle ().