Wie vermeidet man createBitmap () Absturz in Android


Answers

Viele sind mit diesem Problem konfrontiert. Sie haben drei Möglichkeiten, das Problem zu lösen:

  • Erhöhen Sie den verfügbaren Speicherplatz: Stoppen Sie die Dienste oder ändern Sie Ihr Gerät in ein neueres
  • Verringern Sie die Speichernutzung: durch Optimierung Ihres Codes
  • [UPDATE] Geben Sie den unbenutzten Bitmap-Speicher frei: Rufen Sie recycle () auf .
  • [UPDATE] Verwenden Sie nicht GarbageCollector :)

In der Regel mit Bitmap-Problemen wird Garbage Collector helfen.

Justin Breitfellers Antwort bezieht sich auf eine detailliertere Erklärung der inneren Funktionsweise der Bitmap. Die zu entfernende Nachricht ist, dass Speicher, der für die Bitmap-Daten (in der systemeigenen createBitmap-Methode) reserviert ist, etwas separat behandelt wird und nicht direkt von GarbageCollector freigegeben wird, wenn Bitmap zu Garbage Collectable wird. Die wirkliche Lösung besteht darin, Ihre Bitmaps zu recyceln, wenn Sie sie nicht verwenden. Dadurch bleibt der (kleine) Speicher für das Bitmap-Objekt reserviert, aber der (große) Speicher, der für die Sammlung von Bitmap-Daten reserviert ist, wird markiert. Daher wird GarbageCollector wiederum beides freigeben, aber Sie müssen es nicht manuell aufrufen, bevor ein OutOfMemory auftritt, JVM versucht trotzdem, GarbageCollect zu verwenden.

Question

Ich verwende createBitmap() an mehreren Stellen. OutOfMemoryError() wirft diese API OutOfMemoryError() Ausnahme. Wie vermeide ich diese Ausnahme?

Ich benutze wie unten,

createBitamp(width, height, Config.ARGB_8888);

width = width des Bildschirms

height = height des Bildschirms

Jede Hilfe wäre willkommen.




Links