2012-04-16 27 views
6

Obtengo java.lang.OutOfMemoryError cuando uso mapa de bits para mostrar imágenes grandes.
Para cambiar el tamaño del mapa de bits, me referí al siguiente enlace Save Bitmap and BitmapFactory.decodeFile.Android: ¿Cómo resolver Bitmap java.lang.OutOfMemoryError?

Mi Logcat es el siguiente:

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

Hay algo mal, ya sea con su código, o el teléfono no tiene suficiente memoria. De cualquier forma, no podemos ayudarlo, al menos hasta que publique su código. – Hassan

+0

@ Raman-Mystry - consulte el artículo "Visualización de mapas de bits de manera eficiente" a continuación. Si todavía tiene problemas, por favor 1) publique el código correspondiente, 2) cuéntenos algo acerca de su mapa de bits (como qué tan grande es en h/w y tamaño de archivo), 3) díganos cuánta memoria tiene su sistema antes intentar cargar el mapa de bits – paulsm4

+1

[Pruébalo] [1] [1]: http://stackoverflow.com/questions/10081008/outofmemoryerror-in-game-with-many-small-images/10086141 # comment12999643_10086141 Realmente lo ayudará. –

Respuesta

5

Ya que no han publicado su código es difícil saber si hay un error o probablemente ineficaces código que puede ser mejorado.

Pero, en general, la memoria JVM es limitada, por lo que la carga de una imagen grande puede causar OutOfMemoryError. Puede intentar aumentar la memoria JVM utilizando la opción -Xmx. Esta es la primera y la forma más simple.

Otra forma es disminuir su imagen (si es posible). O probablemente use un formato que no sea BMP (por ejemplo, JPG). Garantiza una buena calidad y requiere menos memoria.

0

El desafío en el desarrollo de aplicaciones móviles es que tiene una memoria limitada.

Lo primero que tengo en mente es tratar de usar PNG (gráficos de red portátiles) en lugar de BitMaps (si es posible).

Aparte de eso, parece que esta cuestión está vigente por favor revise la siguiente: - http://code.google.com/p/android/issues/detail?id=8488

Cuestiones relacionadas