Bilder aus dem Speicher entfernen

  • 2 Antworten
  • Letztes Antwortdatum
S

Son Goku

Ambitioniertes Mitglied
5
Hallo

Ich habe eine ListView. In jedem Item der ListView wird jeweils ein anderes Bild aus dem Internet nachgeladen. Die Bilder sind nicht größer sie es sein müssen. Also keine 2000x2000 Grafik für ein 200x200 Feld.

Je weiter ich nach unten scrolle (oder auch wieder nach oben), desto langsamer wird die App und ich bekomme irgendwann diese Fehlermeldung:

Code:
java.lang.OutOfMemoryError: bitmap size exceeds VM budget
Wahrscheinlich (ganz bestimmt) werden die Bilder, die aus dem sichtbaren Breich beim rausscrollen, nicht aus dem Speicher gelöscht. Wie kann ich es nun bewerkstelligen, dass diese (nicht mehr sichtbaren Bilder) aus dem Speicher gelöscht werden?

Viele Dank für eure Hilfe.
 
Guten Tag,

Du musst die views und die bitmaps recyclen ;)

Am besten zeigst du uns mal deinen adapter.

Das Thema ist auch ganz gut auf der dev Seite beschrieben.

lg. Dagobert
 
  • Danke
Reaktionen: Son Goku
Ja, soweit war (bin) ich auch schon.
Ich hatte ursprünglich ein Array, was mir 10 (100) Bilder gepeichert hat. Nachfolgende Bilder wurde wieder von vorne überschrieben und die Bitmaps entsprechende recycled. Lief ganz gut. Nur beim hochscrollen, bekam ich dann einen Fehler, weil versucht wurde Resourcen zuzugreifen, die nicht mehr existierten. Logisch. Die Frage damals und auch heute: Wie komme ich an die Bitmaps ran um diese zu recyclen, wenn diese den sichtbaren Bereich verlassen.


Update:
Hab den Fehler mittlerweile gefunden.
Das Stichwort war "view recyclen". Ich dachte bisher ich könnte nur Bitmaps recyclen.

Ich hab bisher gedacht der 2. Parameter der "getView()" gibt mir die gleiche View, die sich beim vorherigen ab- bzw. aufscrollen an genau der gleichen Position befunden hat und nicht diese, die gerade den sichtbaren Bereich verlassen hat.
So konnte ich dann auch das Bild aus dem Speicher werfen.
 
Zuletzt bearbeitet:
Zurück
Oben Unten