ImageView-Inhalt aus dem Speicher löschen

  • Antworten:2
  • Bentwortet
Gelöschter Account
  • Forum-Beiträge: 79

16.12.2018, 14:27:42 via Website

Moin zusammen,

ich habe mir letztens eine einfache App gemacht, um mir verschieden skalierte Bitmaps von der "scaledBitmap"-Funktion anzusehen, die mir dann in einer ImageView angezeigt werden.
Um das zu realisieren, lade ich die Resource und schreibe die Bitmap dann ins ImageView:

float scale = 2;
Bitmap bitmap = BitmapFactory.decodeResource(applicationResources, getIdentifier(resourceName));
Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, bitmap.getWidth() * scale, bitmap.getHeight() * scale, false);
setImageBitmap(scaledBitmap);

So weit, so gut. Auf meinem normalen Handy funktioniert alles super und ich kann problemlos durch meine verschiedenen Resourcen scrollen etc..
Als ich dieselbe App dann testweise auf meinem alten Android Netbook installiert habe, bekam ich nach ein paar Bildern einen "OutOfMemoryError".

Nachdem ich noch einige Sachen ausprobiert habe, bin ich zu dem Schluss gekommen, dass die Bitmaps, auch wenn sie nicht mehr in der ImageView gezeigt werden, noch irgendwo im Speicher liegen müssen.
Sagt euch das irgendwas und gibt es eine Möglichkeit, den Speicher einer App komplett zu löschen oder so?
Ich habe schon versucht, anstatt jedes Mal in dieselbe ImageView zu schreiben, jedes Mal die ImageView mit "removeView" zu löschen und eine Neue für jedes neue Bild zu erstellen, aber das scheint keine Abhilfe zu bringen.

Kommentieren
Beste Antwort
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

16.12.2018, 14:36:23 via Website

Hallo Robert,

kann natrürlich sein dass der GC die Bitmap nicht aufräumen kann, da es noch Referenzen gibt.
Das Problem ist aber bekannt:
https://stackoverflow.com/a/36618513 (ist zwar nicht sehr stilvoll, könnte aber klappen)

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Gelöschter Account
Kommentieren
Gelöschter Account
  • Forum-Beiträge: 79

16.12.2018, 16:08:06 via Website

Hi Pascal,

danke für die schnelle Antwort. Das recycle scheint tatsächlich die Lösung zu sein. ^^

Hilfreich?
Kommentieren