2013-03-11 3 views
5

dostaję jakiś obraz z folderu Moje aktywów i mam ten wyjątek:Out of memory sprawie przydziału 9.830.416 bajtów z bitmapy

03-11 10:18:28.019: E/dalvikvm-heap(4052): Out of memory on a 9830416-byte allocation. 

mam ten błąd tutaj:

//stream to get photo 
InputStream bitmap=null;       
bitmap=getResources().getAssets().open("ProduitsMini/"+productList.get(rang).getImg_mini()); 
Bitmap bit=BitmapFactory.decodeStream(bitmap); 

// get drawable image 
Drawable mDrawable = new BitmapDrawable(getResources(),bit); 

To dziwne, ponieważ nie mam tego błędu na każdym urządzeniu, ale tylko w Galaxy S3.

+0

Dobrze S3 ma rozdzielczość xhdpi, a ponieważ Android nie zależne od gęstości załadunku może to być związane z tym. Z drugiej strony wydaje się, że nie używasz tej funkcji w taki sposób, w jaki ładujesz obraz. – Aert

Odpowiedz

9

Można spróbować dodać poniżej kodu

InputStream bitmap=null; 
bitmap=getResources().getAssets().open("ProduitsMini/"+productList.get(rang).getImg_mini()); 

BitmapFactory.Options options=new BitmapFactory.Options(); 
options.inSampleSize = 8; 
Bitmap preview_bitmap = BitmapFactory.decodeStream(bitmap,null,options); 

Ta opcja inSampleSize zmniejsza zużycie pamięci.

Można odwołać się do poniższego linku

https://stackoverflow.com/a/823966/1441666

+0

Dziękuję za twoje, teraz działa. – theMouk

+0

Czy istnieje sposób na usunięcie sterty? –