例外が発生してアプリが中断してしまうのですが、原因が特定できず困っています。
前提ですが、本アプリには以下の3つのアクティビティがあります。
①01TitleActivity→①タイトル画面アクティビティ
②02NextActivity →②次ゲーム呼び出しアクティビティ
③03GameActivity→③ゲームのメインアクティビティ
制御の流れとしては
①から②を呼び出し
②から③を呼び出し(②はfinish)
③から②を呼び出し(③はfinish)
本当は、この後また②から③を呼び出しするのですが、ここで例外が発生してしまいます。
直接のエラー原因としては、
trying to use a recycled bitmap android.graphics
というエラーが出ており、「リサイクルしたビットマップを使おうとしている」と言われているのですが、
下記の通り、ソースの箇所がどのアクティビティでもないので、エラーの原因になっているbitmapを特定できず、
対応方法がわかりません。
03-23 10:28:37.232: DEBUG/AndroidRuntime(1749): Shutting down VM
03-23 10:28:37.232: WARN/dalvikvm(1749): threadid=1: thread exiting
with uncaught exception (group=0x4001d800)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): FATAL EXCEPTION: main
03-23 10:28:37.242: ERROR/AndroidRuntime(1749):
java.lang.RuntimeException: Canvas: trying to use a recycled bitmap
android.graphics.Bitmap@44f4b268
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.graphics.Canvas.throwIfRecycled(Canvas.java:955)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.graphics.Canvas.drawBitmap(Canvas.java:1044)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:323)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.widget.ImageView.onDraw(ImageView.java:842)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.view.View.draw(View.java:6740)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.view.ViewGroup.drawChild(ViewGroup.java:1640)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.view.ViewGroup.drawChild(ViewGroup.java:1638)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.view.ViewGroup.drawChild(ViewGroup.java:1638)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.view.View.draw(View.java:6743)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.view.ViewGroup.drawChild(ViewGroup.java:1640)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.view.View.draw(View.java:6743)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.widget.FrameLayout.draw(FrameLayout.java:352)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.view.ViewGroup.drawChild(ViewGroup.java:1640)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.view.ViewGroup.drawChild(ViewGroup.java:1638)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.view.View.draw(View.java:6743)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.widget.FrameLayout.draw(FrameLayout.java:352)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1842)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.view.ViewRoot.draw(ViewRoot.java:1407)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.view.ViewRoot.performTraversals(ViewRoot.java:1163)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.os.Handler.dispatchMessage(Handler.java:99)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.os.Looper.loop(Looper.java:123)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
android.app.ActivityThread.main(ActivityThread.java:4627)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
java.lang.reflect.Method.invokeNative(Native Method)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
java.lang.reflect.Method.invoke(Method.java:521)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
03-23 10:28:37.242: ERROR/AndroidRuntime(1749): at
dalvik.system.NativeStart.main(Native Method)
03-23 10:28:37.262: WARN/ActivityManager(59): Force finishing
activity XXX.XXXX.XXXXX/.02NextActivity
03-23 10:28:37.792: WARN/ActivityManager(59): Activity pause timeout
for HistoryRecord{45025ab0 XXX.XXXX.XXXXX/.02NextActivity}
03-23 10:28:47.195: WARN/ActivityManager(59): Launch timeout has
expired, giving up wake lock!
03-23 10:28:47.846: WARN/ActivityManager(59): Activity idle timeout
for HistoryRecord{44f1d228 XXX.XXXX.XXXXX/.01TitleActivity}
03-23 10:28:53.023: WARN/ActivityManager(59): Activity destroy timeout
for HistoryRecord{4501f350 XXX.XXXX.XXXXX/.03GameActivity}
03-23 10:28:53.023: WARN/ActivityManager(59): Activity destroy timeout
for HistoryRecord{45025ab0 XXX.XXXX.XXXXX/.02NextActivity}
実は、例外が出るようになったのは最近で、
03GameActivityの処理を修正していてこんなエラーが出るようになりました。
原因は03GameActivityの終了処理近辺?
でも、「Force finishing activity
XXX.XXXX.XXXXX/.02NextActivity」と出力されているので02NextActivityに問題が...?
どなたか、せめて原因を特定するためのヒントだけでも教えてもらえませんでしょうか?
すみません、自己解決しました。
03GameActivityの終了処理を見直ししたら、エラーがでなくなりました。
ゲーム内でRunnableを使って定期処理をしている部分があったのですが、
そこの終了の仕方を変更すると発生しなくなりました。
お騒がせしました。
2012年3月23日10:39 ryo okuda <ddn...@gmail.com>: