Speicher sparen

  • Antworten:2
  • Bentwortet
Mac Systems
  • Forum-Beiträge: 1.727

21.12.2010, 11:12:01 via Website

Hallo,

folgende Methode nutze Ich einige male:

1private final Bitmap loadBitmapByResourceID(final int resourceID)
2 {
3 final Drawable drawable = getContext().getResources().getDrawable(resourceID);
4 return ((BitmapDrawable) drawable).getBitmap();
5 }

Mir scheint das gerade kontra Produktiv für den Speicher zu sein, da hier immer neue Instanzen eines Bildes zurückgeliefert werden. Oder hat Android noch einen (Image) Cache denn Ich nicht kenne ?

Ansonsten könnte Ich das ja selbst mittels einer Map erledigen ...

mfg,
Mac

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Tobias Eckert
  • Forum-Beiträge: 155

21.12.2010, 12:59:33 via Website

Hi Mac,

Ich würde mir den Umweg über das Drawable sparen:

1return(BitmapFactory.decodeResource(getContext().getResources(), resourceID));

Wenn Du die Bitmap später nach Gebrauch recyclest, die Variable auf Null setzt und ein System.gc() aufrufst hast Du denke ich alles getan was geht um so wenig Speicher wie möglich zu verwenden.

Je nachdem ob Du die Bitmap im Original brauchst, oder eine kleinere Größe, weniger Farben etc. ausreichen kannst Du auch noch mit BitmapOptions arbeiten.

Viele Grüße,

Tobias

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

21.12.2010, 13:04:10 via Website

Danke, die BitmapFactory kann Ich bis jetzt noch garnicht, zumindest weniger Code.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten