2012-04-16 18 views
6

Otrzymuję java.lang.OutOfMemoryError podczas używania bitmapy do wyświetlania dużych obrazów.
Aby zmienić rozmiar bitmapy, odniosłem się do następującego linku: Save Bitmap and BitmapFactory.decodeFile.Android: jak rozwiązać Bitmap java.lang.OutOfMemoryError?

Moja logcat jest następujący:

FATAL EXCEPTION: main 
java.lang.OutOfMemoryError 
    at  android.graphics.Bitmap.nativeCreate(Native Method) 
    at  android.graphics.Bitmap.createBitmap(Bitmap.java:604) 
    at  android.graphics.Bitmap.createBitmap(Bitmap.java:551) 
    at  com.android.restaurant.DescriptionPage.getResizedBitmap(DescriptionPage.java:327) 
    at   com.android.restaurant.DescriptionPage.setDetailsIntoLayout(DescriptionPage.java:172) 
    at com.android.restaurant.DescriptionPage.onCreate(DescriptionPage.java:101) 
    at android.app.Activity.performCreate(Activity.java:4397) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1782) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1834) 
    at android.app.ActivityThread.access$500(ActivityThread.java:125) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1027) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:132) 
    at android.app.ActivityThread.main(ActivityThread.java:4135) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:491) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
    at dalvik.system.NativeStart.main(Native Method) 
+1

Jest też coś nie tak z kodem lub telefon nie ma wystarczającej ilości pamięci. Tak czy inaczej, nie możemy ci pomóc, przynajmniej dopóki nie opublikujesz swojego kodu. – Hassan

+0

@ Raman-Mystry - zapoznaj się z artykułem "Wyświetlanie skutecznych bitmap" poniżej. Jeśli nadal masz problemy, proszę 1) opublikuj odpowiedni kod, 2) powiedz nam coś o swojej bitmapie (np. Jak duży jest w h/w i spakuj pliki!), 3) powiedz nam ile pamięci ma twój system przed próbuje załadować bitmapę – paulsm4

+1

[Wypróbuj] [1] [1]: http://stackoverflow.com/questions/10081008/outofmemoryerror-in-game-with-many-small-images/10086141 # comment12999643_10086141 To naprawdę ci pomoże. –

Odpowiedz

5

Ponieważ nie napisali kod trudno jest wiedzieć, czy jest to błąd lub prawdopodobnie nieskuteczne kod, który może ulec poprawie.

Ale ogólnie pamięć JVM jest ograniczona, więc załadowanie dużego obrazu może spowodować OutOfMemoryError. Możesz spróbować zwiększyć pamięć JVM, używając opcji -Xmx. To pierwszy i najprostszy sposób.

Innym sposobem jest zmniejszenie obrazu (jeśli to możliwe). Lub prawdopodobnie używać formatu innego niż BMP (np. JPG). Gwarantuje dobrą jakość i wymaga mniej pamięci.

0

Wyzwaniem podczas tworzenia aplikacji mobilnej jest ograniczenie pamięci.

Pierwszą rzeczą, o której mi chodziło, to próba użycia PNG (Portable Network Graphics) zamiast BitMaps (jeśli to możliwe).

Poza tym wydaje się, że jest to istniejący problem należy sprawdzić: - http://code.google.com/p/android/issues/detail?id=8488

Powiązane problemy