Recycling-bitmaps
Arbeite ich an einem Projekt mitzuwirken, Operationen auf bitmaps. Weil ich nicht wollen, um Fehler wegen ungenügenden Speicherplatzes bin ich versucht zu recyceln jede nicht verwendete bitmap. Leider habe ich recycelt zu viel und hab 'versucht, einen Recycling-bitmap' - Fehler.
Ich bin mit:
Bitmap.createBitmap(bmp, x,y,w,h, matrix, false);
Bitmap.createScaledBitmap(bmp, w, h,true);
Sollte ich recycle bmp nach diesen Methoden oder wird recycelt, indem Sie Ihnen? Wie:
Bitmap newBitmap = Bitmap.createBitmap(bmp, x,y,w,h, matrix, false);
bmp.recycle();
Kann ich nur nach der Bildansicht.setImageBitmap() recycle-eine, die zuvor verwendet wurde, hier? E. g.
myImageView.setImageBitmap(myBitmap);
myImageView.setImageBitmap(newBitmap);
myBitmap.recycle();
Danke für die Hilfe.
- Erwägen Sie die Verwendung der BitmapFactory.Optionen beim erstellen der Bitmap. Speziell schauen inPurgeable... developer.android.com/reference/android/graphics/...
- "Versuchen, verwenden Sie eine Recycling-bitmap" die genaue und nur Fehler, die Sie sehen in Bezug auf Recycling-bitmap? Wenn es ist, könnte es sich lohnen, zu versuchen, die Analyse Ihrer stack-trace und sehen, ob Sie ein Muster erkennen können, Wann der Fehler passiert ist (es gibt einen zentralen Platz in dem Rahmen, in dem diese Ausnahme wird geworfen, obwohl es durchaus ein paar Möglichkeiten, Ihren code dort).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie nur Recycling eine bitmap, die, wenn Sie nicht mehr benötigt. Jedoch, Sie tun brauchen eine bitmap-wenn Sie möchten display es. Wenn Sie nicht wollen, um es anzuzeigen, dann können Sie bereiten Sie ein bitmap.
Du nur recyceln bitmaps sobald Sie fertig sind mit Ihnen und sind sicher, dass Sie nie brauchen, um die Daten in Ihnen wieder. Es ist nicht eine Magische Methode, die Sie verwenden können, überall, das Sie mögen, geben Sie mehr Speicher, wenn der Umgang mit bitmaps.
Wann ich es will-scale-bitmap-dann nutze ich die gleiche Referenz:
Wenn die erste bitmap-Objekt verliert seine Referenz "bmp" wird es entfernt von der GC (garbage collector), so dass Sie nicht brauchen, um recyle nichts. Als für das Bild anzeigen, es verweist nur auf seine Quelle zu "newBitmap" es nicht schafft seine eigenen.