Wann (wenn überhaupt) sollte ich Bitmap.recycle () verwenden?

9

Entsprechend der Website Android-Entwickler lautet die Definition der Bitmap.recycle() -Methode:

  

Geben Sie das native Objekt frei, das mit dieser Bitmap verknüpft ist, und löschen Sie den Verweis auf die Pixeldaten

Ich habe einige Anwendungen entwickelt, die viele Bitmaps erstellen / decodieren und die Ergebnis-Bitmap-Objekte auf ImageView s setzen. Manchmal habe ich die berühmten Ausnahmen wie:

  

Bitmap-Größe excded vm Budget

und

  

Nicht genügend Speicherfehler

Ich bin mir auch sicher, dass ich keine Speicherlecks habe, die das verursachen können.

Nach vielen Suchvorgängen habe ich die "recycle" -Methode entdeckt und verwendet, um den nativen Speicher der Bitmap freizugeben, wenn dieser nicht mehr benötigt wird. Es scheint, dass es sehr geholfen hat .

Ich frage, ob das etwas ist, was ich in dieser Situation tun soll, weil Ich weiß, das System macht das trotzdem, ohne es explizit anzurufen (oder? Vielleicht irre ich mich).

Soll ich diese Methode in Situationen wie diesen verwenden?

In welchen Situationen sollte ich diese Methode verwenden?

Sollte ich diese Methode überhaupt anwenden?

Danke im Voraus.

UPDATE:

google hat kürzlich diese Anleitung gepostet, die besagt:

  

Unter Android 2.3.3 (API Level 10) und niedriger wird recycle () empfohlen. Wenn Sie große Mengen an Bitmap-Daten in Ihrer App anzeigen, werden Sie wahrscheinlich auf OutOfMemoryError-Fehler stoßen. Mit der recycle () -Methode kann eine App den Speicher so schnell wie möglich wiederherstellen.

    
Tal Kanel 26.06.2012, 07:09
quelle

2 Antworten

3
  

In welchen Situationen sollte ich diese Methode verwenden?

Die Bitmaps werden von GC immer dann GC'ed, wenn es entscheidet.Aber in einigen Situationen kann es zu Verzögerungen kommen. Und immer daran erinnern, Daumen-Regel in Java (Vielleicht gilt es auch für P.LL). Die Geschwindigkeit des Recycelns von Objekten per GC ist möglicherweise nicht die gleiche Geschwindigkeit wie das Erstellen von Objekten. So manchmal ist der GC langsam zu recyceln.

so recycle () bedeutet, wenn Sie Speicher so schnell wie möglich freigeben möchten, sollten Sie recycle ()

aufrufen
  

sollte ich diese Methode überhaupt benutzen?

Dies ist ein erweiterter Aufruf und muss normalerweise nicht aufgerufen werden, da der normale GC-Prozess diesen Speicher freigibt, wenn keine Referenzen mehr auf diese Bitmap vorhanden sind. Aber wenn Sie Probleme wie Bitmap-Größe überschritten haben vm budget oder Speicherfehler dann müssen Sie dies verwenden.

    
Vipul Shah 26.06.2012, 07:26
quelle
0

Ich benutze es in Operationen, wo ich weiß, dass Bitmap nicht mehr verwendet wird.

%Vor%

An Orten wie diesem werde ich sicher nicht die Maske oder das Kontaktbild verwenden.

Ich habe eine wirklich gute Ressource für die Bitmap-Verarbeitung gefunden, die hilfreich sein kann Bitmaps anzeigen .

Grüße, Alex

    
Goofyahead 26.06.2012 07:28
quelle