2011-10-24 16 views
8

Ciao sto creando un'app sui segnali stradali. i segnali stradali sono in formato .png. alcuni di loro che sto mostrando in horizontalscrollview. Ma quando provo ad aprire attività, ottengo questo errore dalle segnalazioni di errori del mercato Android. ecco il mio rapporto errori: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> 

qualcuno può aiutarmi?

+0

ci mostri il codice per varningsmarken.java e il file XML di layout per esso. A quanto pare hai anche un Typearray. Inoltre, qual è la dimensione dell'immagine che viene caricata nell'immagini? – JPM

+0

Grazie mille amico l'ho risolto! –

+2

Pubblica la correzione in modo che gli altri possano imparare da te, questo è ciò che questo sito tratta ... e inoltre sono curioso anch'io. – JPM

risposta

3

L'errore "dimensione bitmap supera il budget della macchina virtuale" è in realtà nella libreria grafica nativa (Skia). È un po 'confuso poiché il problema è che Skia ha esaurito la memoria nell'heap nativo per i dati bitmap. Vedi BitmapFactory OOM driving me nuts per lo sfondo. Per ovviare a questo, si dovrà guardare con attenzione a che l'uso di bitmap

  • fare in modo che non lasciare riferimenti bitmap galleggiante
  • facendo un riciclo/null Onn bitmap non appena saranno liberi (questo sembra Aiuto).
2

Utilizzare il campionamento per leggere bitmap. Potrebbe essersi verificato un errore a causa di perdite di memoria.

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

Bitmap bitmap=BitmapFactory.decodeFile(path,options); 
Problemi correlati