2012-02-20 11 views
9

Obtengo el siguiente stacktrace en la consola de desarrollador. Algunos dicen que "la aplicación no se iniciará" o "se bloqueará al inicio".Mystery stacktrace en la consola de desarrollador de Android (el tamaño del mapa de bits supera los 32 bits)

¡No sé qué hacer, no menciona ninguno en la clase de mi aplicación! ¿Alguien recibió el mismo error y encontró una solución?

java.lang.IllegalArgumentException: bitmap size exceeds 32bits 
at android.graphics.Bitmap.nativeCreate(Native Method) 
at android.graphics.Bitmap.createBitmap(Bitmap.java:695) 
at android.view.View.buildDrawingCache(View.java:6646) 
at android.view.ViewGroup.onAnimationStart(ViewGroup.java:1345) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1591) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.View.draw(View.java:6996) 
at android.widget.FrameLayout.draw(FrameLayout.java:357) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1732) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1730) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1730) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.View.draw(View.java:6996) 
at android.widget.FrameLayout.draw(FrameLayout.java:357) 
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2054) 
at android.view.ViewRoot.draw(ViewRoot.java:1632) 
at android.view.ViewRoot.performTraversals(ViewRoot.java:1335) 
at android.view.ViewRoot.handleMessage(ViewRoot.java:1991) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:150) 
at android.app.ActivityThread.main(ActivityThread.java:4358) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:507) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607) 
at dalvik.system.NativeStart.main(Native Method) 
+1

Puede darse el caso de que los recursos principales cargas actividad relacionada a su disposición "fuera" de su alcance. De todos modos, parece que hay una imagen que causa problemas y si no hay demasiados, intente reemplazarlos uno por uno con, por ejemplo, icono predeterminado de Android hasta que encuentre el que causa problemas. – harism

+0

A veces tenía el mismo problema cuando desarrollé un widget. Por lo general, fue curado por (estaba en Eclipse, por cierto) limpiando el proyecto (menú Proyecto-> Limpiar) y luego refrescando el proyecto y volviéndolo a construir. Pero si alguien sabe la razón exacta por la que sucede, sería increíble y definitivamente votaré por la respuesta. ;) –

Respuesta

5

si se trata de una cuestión de cantidad, usted tiene que recycle los mapas de bits.
si se trata de una cuestión de tamaño (no se pueden cargar imágenes demasiado grandes), debe cargar una copia más clara de su mapa de bits.

Este es el código para crear una imagen más pequeña

Options thumbOpts = new Options(); 
thumbOpts.inSampleSize = 4; 
Bitmap bmp = BitmapFactory.decodeFile(imagePath, mThumbOpts); 

inSampleSize establece en un valor> 1, pide al decodificador para submuestra la imagen original, devolviendo una imagen más pequeña para ahorrar memoria.
Use una potencia de 2 para que sea más eficiente.

This post puede ser útil

+2

Esto no funciona, no tiene nada que ver con el tamaño, mira mi pregunta: [aquí] (http://stackoverflow.com/questions/15008386/android-bitmap-size-exceeds-32-bit-in- dialogfragment/15008630 # 15008630) – stefple

+1

¿Cómo soluciona esto el problema? ¡No hay 'ImageView' mencionado en la pregunta ni muestra de crear un mapa de bits! 'View.buildDrawingCache' está creando una imagen demasiado grande por alguna razón ... – TWiStErRob

1

Bitmap.createBitmap()

Throws IllegalArgumentException

si las x, y, anchura, los valores de altura se encuentran fuera de las dimensiones del mapa de bits fuente, o el ancho es < = 0, o la altura es < = 0

Primero haga su Los valores de x, y, ancho y alto son más pequeños que el mapa de bits de origen.

El problema para mí fue la matriz. Mi matriz tiene un valor de traducción que trajo uno de los valores fuera de los límites del mapa de bits de entrada.

Esperanza esto ayuda

0

En mi caso fue error en esta cadena:

WebView.getSettings().setUseWideViewPort(true); 

Crash fue hasta el API de 18 y menos

Cuestiones relacionadas