/ / Se impostato myBitmap = null senza recycle (), quale differenza tra with recycle () [duplicato] - android, bitmap

Se set myBitmap = null senza recycle (), quale differenza tra con recycle () [duplicate] - android, bitmap

Vedo che le due linee sono sempre insieme:

myBitmap.recycle();
myBitmap = null;

Se uso solo:

myBitmap = null;

Che differenza?

Grazie.

risposte:

8 per risposta № 1

Secondo 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 ().