是用MonoDevelop开发的安卓程序,只是加了几张图片就运行黑屏了,不加图片则很正常,软件报如下错误:
WARNING: The runtime version supported by this application is unavailable.
Using default runtime: v2.0.50727
WARNING: generic atexit() called from legacy shared library
GREF GC Threshold: 46800
Grow heap (frag case) to 28.566MB for 20994640-byte allocation
Forcing collection of SoftReferences for 37204016-byte allocation
Out of memory on a 37204016-byte allocation.
--- allocation failed for scaled bitmap
UNHANDLED EXCEPTION: Java.Lang.Error: Exception of type 'Java.Lang.Error' was thrown.
at Android.Runtime.JNIEnv.CallVoidMethod (intptr,intptr,Android.Runtime.JValue[]) <0x00074>
at Android.Views.View.SetBackgroundResource (int) <0x0012b>
at a.Activity1.OnCreate (Android.OS.Bundle) <0x00333>
at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (intptr,intptr,intptr) <0x00057>
at (wrapper dynamic-method) object.91603396-06bd-4745-afb6-2fa3d5a50a53 (intptr,intptr,intptr) <0x00043>  --- End of managed exception stack trace ---
java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:502)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:355)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:785)
at android.content.res.Resources.loadDrawable(Resources.java:1965)
at android.content.res.Resources.getDrawable(Resources.java:660)
at android.view.View.setBackgroundResource(View.java:14463)
at a.Activity1.n_onCreate(Native Method)
at a.Activity1.onCreate(Activity1.java:28)
at android.app.Activity.performCreate(Activity.java:5104)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5039)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)Unhandled Exception: Java.Lang.Error: Exception of type 'Java.Lang.Error' was thrown.
at Android.Runtime.JNIEnv.CallVoidMethod (intptr,intptr,Android.Runtime.JValue[]) <0x00074>
at Android.Views.View.SetBackgroundResource (int) <0x0012b>
at a.Activity1.OnCreate (Android.OS.Bundle) <0x00333>
at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (intptr,intptr,intptr) <0x00057>
at (wrapper dynamic-method) object.91603396-06bd-4745-afb6-2fa3d5a50a53 (intptr,intptr,intptr) <0x00043>  --- End of managed exception stack trace ---
java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:502)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:355)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:785)
at android.content.res.Resources.loadDrawable(Resources.java:1965)
at android.content.res.Resources.getDrawable(Resources.java:660)
at android.view.View.set
软件源码如下:using System;using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;namespace a
{
[Activity (Label = "12a", MainLauncher = true)]
public class Activity1 : Activity
{ protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle); // Set our view from the "main" layout resource
SetContentView (Resource.Layout.Main);
ImageButton Imagebutton = FindViewById<ImageButton>(Resource.Id.Imagebutton1);
Imagebutton.SetBackgroundResource(Resource.Drawable.A);
Imagebutton.SetImageResource(Resource.Drawable.light);
Imagebutton = FindViewById<ImageButton>(Resource.Id.Imagebutton2);
Imagebutton.SetBackgroundResource(Resource.Drawable.B);
Imagebutton.SetImageResource(Resource.Drawable.cz);
Imagebutton = FindViewById<ImageButton>(Resource.Id.Imagebutton3);
Imagebutton.SetBackgroundResource(Resource.Drawable.C);
Imagebutton.SetImageResource(Resource.Drawable.kt);
Imagebutton = FindViewById<ImageButton>(Resource.Id.Imagebutton4);
Imagebutton.SetBackgroundResource(Resource.Drawable.D);
Imagebutton.SetImageResource(Resource.Drawable.video);
Imagebutton = FindViewById<ImageButton>(Resource.Id.Imagebutton5);
Imagebutton.SetBackgroundResource(Resource.Drawable.E);
Imagebutton.SetImageResource(Resource.Drawable.chuanglianon);
Imagebutton = FindViewById<ImageButton>(Resource.Id.Imagebutton6);
Imagebutton.SetBackgroundResource(Resource.Drawable.E);
Imagebutton.SetImageResource(Resource.Drawable.huanjing);
Imagebutton = FindViewById<ImageButton>(Resource.Id.Imagebutton7);
Imagebutton.SetBackgroundResource(Resource.Drawable.D);
Imagebutton.SetImageResource(Resource.Drawable.shield);
Imagebutton = FindViewById<ImageButton>(Resource.Id.Imagebutton8);
Imagebutton.SetBackgroundResource(Resource.Drawable.C);
Imagebutton.SetImageResource(Resource.Drawable.dianliang);
Imagebutton = FindViewById<ImageButton>(Resource.Id.Imagebutton9);
Imagebutton.SetBackgroundResource(Resource.Drawable.A);
Imagebutton.SetImageResource(Resource.Drawable.homeA);
FrameLayout frameLayout = FindViewById<FrameLayout>(Resource.Id.frameLayout1);
frameLayout.SetBackgroundResource(Resource.Drawable.Background);
// Get our button from the layout resource,
// and attach an event to it }
}
}求教各位大大,这是怎么回事啊

解决方案 »

  1.   

    最大的图才400多K,所有一共加起来才4MB,而且显示没用到哪么多啊,只用了几张图就显示不出来了。
      

  2.   

    再这行找at a.Activity1.n_onCreate(Native Method)
    at a.Activity1.onCreate(Activity1.java:28)
    Activity1.java:28行,目前只能从log中看出问题应该在这行!
      

  3.   

    图片那么大 但是你decode所使用的内存就不清楚了。
    Out of memory on a 37204016-byte allocation. 这里显示你使用了37M空间。
    楼主2分法测试一下 几张图片就会OOM  大家也好帮你分析坐等高手给你解答