2011-10-24 10 views
8

Hola, estoy creando una aplicación sobre señales de tráfico. las señales de tráfico están en formato .png. algunos de ellos los estoy mostrando en horizontalscrollview. Pero cuando intento abrir actividades, obtengo este error de los informes de error del mercado android. aquí está mi informe de error:java.lang.OutOfMemoryError BitmapFactory.nativeDecodeAsset()

<java.lang.RuntimeException: Unable to start activity ComponentInfo{com.besalti.svenskavagmarken/com.besalti.svenskavagmarken.varningsmarken}: android.view.InflateException: Binary XML file line #645: Error inflating class <unknown> 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1659) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1675) 
at android.app.ActivityThread.access$1500(ActivityThread.java:121) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:943) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:130) 
at android.app.ActivityThread.main(ActivityThread.java:3701) 
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:866) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: android.view.InflateException: Binary XML file line #645: Error inflating class <unknown> 
at android.view.LayoutInflater.createView(LayoutInflater.java:518) 
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:623) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:626) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:626) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:626) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:626) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:408) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:227) 
at android.app.Activity.setContentView(Activity.java:1657) 
at com.besalti.svenskavagmarken.varningsmarken.onCreate(varningsmarken.java:25) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1623) 
... 11 more 
Caused by: java.lang.reflect.InvocationTargetException 
at java.lang.reflect.Constructor.constructNative(Native Method) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:415) 
at android.view.LayoutInflater.createView(LayoutInflater.java:505) 
... 26 more 
Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget 
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:494) 
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:370) 
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:715) 
at android.content.res.Resources.loadDrawable(Resources.java:1720) 
at android.content.res.TypedArray.getDrawable(TypedArray.java:601) 
at android.widget.ImageView.<init>(ImageView.java:122) 
at android.widget.ImageView.<init>(ImageView.java:112) 
... 29 more> 

¿alguien me puede ayudar?

+0

¿Puede mostrarnos el código de varningsmarken.java y el archivo xml de diseño para él. Aparentemente tienes un Typearray también. Además, ¿cuál es el tamaño de la imagen que se carga en la imagen? – JPM

+0

Muchas gracias amigo lo arreglé! –

+2

Publica la corrección para que otros puedan aprender de ti, de eso se trata este sitio ... además, también estoy curioso. – JPM

Respuesta

3

El error "El tamaño del mapa de bits excede el presupuesto de VM" está realmente en la biblioteca de gráficos nativa (Skia). Es un poco confuso ya que el problema es que Skia se ha quedado sin memoria en el montón nativo de datos de mapa de bits. Ver BitmapFactory OOM driving me nuts para el fondo. Para evitar esto, usted tendrá que considerar cuidadosamente el uso de mapa de bits

  • asegurándose de que usted no se va referencias de mapa de bits flotante
  • hacer un reciclaje/null onn mapas de bits a medida que estén libres (esto parece ayuda).
2

Utilice el muestreo para leer el mapa de bits. Puede haber un error debido a pérdidas de memoria.

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inSampleSize = 4; 

Bitmap bitmap=BitmapFactory.decodeFile(path,options); 
Cuestiones relacionadas