我的Android应用程序意外停止

时间:2011-02-07 16:07:34

标签: android

我的应用有三个按钮,每个按钮创建一个新的意图:

 Button button3 = (Button) findViewById(R.id.Button03);
    button3.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            Intent myIntent = new Intent(view.getContext(), Shout.class);
            startActivityForResult(myIntent, 0);
        }

    });

所以基本上我单击按钮时项目中的其他类开始了。当我想回到第一个屏幕时,我只需按后退键即可。 这很好用,但是我按下按钮和后退键大约是应用程序崩溃的5倍。为什么?我注意到,即使我从课堂上回来,传感器也会继续像这里一样全速运行:

02-07 16:51:13.034: DEBUG/sensor(5354): onSensorChanged: 2
02-07 16:51:13.094: DEBUG/sensor(5354): onSensorChanged: 2
02-07 16:51:13.154: DEBUG/sensor(5354): onSensorChanged: 2
02-07 16:51:13.214: DEBUG/sensor(5354): onSensorChanged: 2
02-07 16:51:13.274: DEBUG/sensor(5354): onSensorChanged: 2
02-07 16:51:13.334: DEBUG/sensor(5354): onSensorChanged: 2
02-07 16:51:13.394: DEBUG/sensor(5354): onSensorChanged: 2
02-07 16:51:13.444: INFO/ActivityManager(156): Starting: Intent { cmp=com.bengaard/.Shout } from pid 5354
02-07 16:51:13.504: DEBUG/sensor(5354): onSensorChanged: 2
02-07 16:51:13.564: DEBUG/dalvikvm(5354): GC_EXTERNAL_ALLOC freed 394K, 60% free 3179K/7943K, external 24861K/26873K, paused 34ms
02-07 16:51:13.574: ERROR/dalvikvm-heap(5354): 32980-byte external allocation too large for this process.
02-07 16:51:13.604: ERROR/GraphicsJNI(5354): VM won't let us allocate 32980 bytes
02-07 16:51:13.604: DEBUG/dalvikvm(5354): GC_FOR_MALLOC freed <1K, 60% free 3179K/7943K, external 24861K/26873K, paused 21ms
02-07 16:51:13.614: DEBUG/skia(5354): --- decoder->decode returned false
02-07 16:51:13.614: DEBUG/AndroidRuntime(5354): Shutting down VM
02-07 16:51:13.614: WARN/dalvikvm(5354): threadid=1: thread exiting with uncaught exception (group=0x40169560)
02-07 16:51:13.614: DEBUG/webviewglue(5354): nativeDestroy view: 0x4dc7e0
02-07 16:51:13.614: DEBUG/webviewglue(5354): nativeDestroy view: 0x47a310
02-07 16:51:13.614: DEBUG/webviewglue(5354): nativeDestroy view: 0x4339e8
02-07 16:51:13.644: ERROR/AndroidRuntime(5354): FATAL EXCEPTION: main
02-07 16:51:13.644: ERROR/AndroidRuntime(5354): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bengaard/com.bengaard.Shout}: android.view.InflateException: Binary XML file line #21: Error inflating class <unknown>
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1622)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.os.Looper.loop(Looper.java:123)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.app.ActivityThread.main(ActivityThread.java:3647)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at java.lang.reflect.Method.invokeNative(Native Method)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at java.lang.reflect.Method.invoke(Method.java:507)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at dalvik.system.NativeStart.main(Native Method)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354): Caused by: android.view.InflateException: Binary XML file line #21: Error inflating class <unknown>
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.view.LayoutInflater.createView(LayoutInflater.java:518)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.view.LayoutInflater.inflate(LayoutInflater.java:386)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.widget.Toast.makeText(Toast.java:235)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at com.bengaard.Shout.onCreate(Shout.java:57)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1586)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     ... 11 more
02-07 16:51:13.644: ERROR/AndroidRuntime(5354): Caused by: java.lang.reflect.InvocationTargetException
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at java.lang.reflect.Constructor.constructNative(Native Method)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.view.LayoutInflater.createView(LayoutInflater.java:505)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     ... 20 more
02-07 16:51:13.644: ERROR/AndroidRuntime(5354): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:450)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:326)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.content.res.Resources.loadDrawable(Resources.java:1740)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.view.View.<init>(View.java:1951)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.view.View.<init>(View.java:1899)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.view.ViewGroup.<init>(ViewGroup.java:286)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     at android.widget.LinearLayout.<init>(LinearLayout.java:120)
02-07 16:51:13.644: ERROR/AndroidRuntime(5354):     ... 23 more
02-07 16:51:13.674: WARN/ActivityManager(156):   Force finishing activity com.bengaard/.Shout
02-07 16:51:13.674: WARN/ActivityManager(156):   Force finishing activity com.bengaard/.OB
02-07 16:51:14.174: WARN/ActivityManager(156): Activity pause timeout for HistoryRecord{40a5f000 com.bengaard/.Shout}
02-07 16:51:14.224: ERROR/AK8973(135): Compass driver encountered fatal error2. 

它看起来像是一个内存不足的问题,但是当我点击后退按钮时如何关闭活动以便我不会遇到这个问题,或者是否有另一个问题的答案?单击后退键后,为什么sensorlistener没有停止?请原谅我是这样的菜鸟:o)

2 个答案:

答案 0 :(得分:0)

你的一个视图中有一个位图足够大,当应用程序试图给这个视图的xml充气并解码有问题的位图时,它会因为内存不足错误而崩溃。

尝试看看你是否可以优化这个drawable,或尝试在你的活动的ondestroy上清理它。

答案 1 :(得分:0)

您需要取消注册传感器侦听器(最好是在您的activity的onPause()方法中),否则系统将保留对它的引用,并且不会释放它以进行垃圾回收。如果已注册的侦听器是活动本身或其他任何对位图有直接或间接引用的内容,则该位图也不会被释放到垃圾收集器。

相关问题