2011-02-07 104 views
0

我的应用程序有三个按钮,每创建一个新的意图是这样的:我的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次的应用程序崩溃。为什么?我注意到,我回去从类后,也将继续sensorlistener全速喜欢这里运行:

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)

+0

它还在您的一个XML文件中使用第21行引发运行时异常。 – 2011-02-07 16:12:40

回答

0

你有一个位图在你的一个视图足够大,当应用程序试图膨胀这个视图的xml和解码有问题的位图它崩溃与出内存错误。

尝试查看您是否可以优化此drawable或尝试在ondestroy您的活动清理它。

+0

感谢您的帮助!我使用视图快速翻转了大约10个图像。如何在ondestroy中清理那个操作?我试图将其设置为空,但我确定有更好的方法? – bengaard 2011-02-07 21:07:02

+0

看看这篇文章的例子,以确保你没有做这些事情之一:http://www.curious-creature.org/2008/12/18/avoid-memory-leaks-on-android/和然后查看如何确保在Shelves开放源代码Android应用程序中的drawables上没有回调:http://code.google.com/p/shelves/source/browse/trunk/Shelves/src/org/curiouscreature /android/shelves/util/ImageUtilities.java看看cleanUpCache函数 – Yahel 2011-02-07 23:10:12

0

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