2011-02-07 13 views
0

私のアプリは、それぞれがこのような新しい意思を作成する3つのボタンがあり停止します。最初の画面に戻るときは、バックキーを押すだけです。 これはうまくいきますが、ボタンとバックキーを約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. 

それはメモリ不足の問題のように見えますが、私はどのように閉鎖することができます私がこの問題を起こさないように、私がバックボタンをクリックしたときの活動、または問題に対する別の答えがありますか?なぜバックキーをクリックしてもセンサーリスナーが停止しないのですか?あなたがそうであるためにすみません:o)

+0

また、XMLファイルの1つにライン21のランタイム例外がスローされます。 –

答えて

0

このビューのxmlを膨らませて問題のビットマップを解読しようとすると、あなたのビューのうちの1つでビットマップがクラッシュしますメモリエラー。

このドロアブルを最適化できるかどうか、またはアクティビティのオンデストロイでクリーンアップを試みてみてください。

+0

ご協力ありがとうございます!私は約10枚の画像を見るためにビューフリッパを使用しています。どのように私はondestroy中にそのopをきれいにすることができますか?私はnullに設定しようとしましたが、より良い方法があると確信していますか? – bengaard

+0

この記事の例を見て、あなたがこれらのことをしていないことを確かめてください:http://www.curious-creature.org/2008/12/18/avoid-memory-leaks-on-android/そしてシェルフのオープンソースのAndroidアプリケーション(http://code.google.com/p/shelves/source/browse/trunk/Shelves/src/org/curiouscreature)でdrawableにコールバックを持たないようにする方法を確認してください。 /android/shelves/util/ImageUtilities.java応答のためにcleanUpCache関数 – Yahel

0

センサーリスナーの登録を解除する必要があります(アクティビティのonPause()メソッドを使用することをお勧めします)。そうしないと、システムは参照を保持してガベージコレクションのために解放されません。登録されたリスナーがアクティビティ自体、またはビットマップへの直接的または間接的な参照を持つ他のものである場合、ビットマップはガベージコレクタにも解放されません。

+0

を見てください。私はこれをしました: protected void onPause(){ sensorMgr.unregisterListener(this); viewFlipper = null; finish(); super.onPause(); これはリスナーを停止しました:o)しかし、それでも上記のエラーとほぼ同じようにクラッシュします。 02から07 21:55:05.265:ERROR/AndroidRuntime(7954):java.lang.OutOfMemoryErrorを:ビットマップのサイズは、私は10枚の画像を通過viewflipperを持っているからだと推測するVMの予算 を超えています。私はnullに設定しようとしていますが、私はそれが使用しているメモリを解放し、私のアプリがクラッシュするのを防ぐ良い方法があると確信しています? – bengaard

関連する問題