7

これは非常に奇妙な問題です。私のアプリは問題なく動作しますが、アプリの実行中に1〜2時間電話を離れると、後で戻ったときに次のエラーが発生します。

java.lang.NoClassDefFoundError: yoga.database.Manager
at
yoga.YogaActivity.openDatabase(YogaActivity.java:294)
at
yoga.YogaActivity.initData(YogaActivity.java:275)
at
yoga.YogaActivity.onCreate(YogaActivity.java:102)
at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
at android.app.ActivityThread.access$2100(ActivityThread.java:116)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4203)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
at dalvik.system.NativeStart.main(Native Method)

アプリの起動時にyoga.database.Managerクラスが読み込まれたことは知っていますが、電話を離れたときに、どういうわけかクラスがシステムによってアンロードされたに違いありません。

Androidは一定期間後にクラスを自動的にアンロードしますか?クラスがアンロードされたときに何ができますか?

上記のエラーによりアプリがクラッシュしますが、簡単に再起動でき、問題なく動作します。

この問題は主に、Android1.6を実行しているHTCMagic電話で発生します。

4

2 に答える 2

9

Dalvik VMは現在、クラスをアンロードしません。その場合、特定のクラスローダーに関連付けられているすべてのクラスを一度にアンロードできる場合にのみ実行できます。これは、アプリの実行中は当てはまりません。

この例外につながるエラーがないか、logcat出力を確認する必要があります。NoClassDefFoundErrorを取得する1つの方法は、問題のクラスの初期化中に何かが失敗することです。それが起こった場合、ログに証跡がある可能性があります。

(もちろん、logcatの出力はおそらく長い間なくなっていますが、問題が繰り返し発生する場合は、次回それをキャプチャする必要があります。)

于 2010-03-19T20:03:42.157 に答える
2

カスタムクラスローダーでゲームをプレイしていますか?

yoga.YogaActivityyoga.database.Managerが同じAndroidAPKファイル内の標準Javaクラスである場合、一方をメモリに保持し、もう一方をメモリに保持しないようにする必要があるためです。私はAndroidのアンロードクラスを1回限り見たことがありません。少なくとも、この特定の問題に遭遇したことはありません。

また:

アプリの実行中にスマートフォンを1〜2時間放置します

これが何を意味するのかを明確にしたいと思うかもしれません。アクティビティをフォアグラウンドに残すという意味ですか?HOMEを押して、数時間後に戻ってくるということですか?他の意味ですか?

于 2010-03-15T15:01:05.857 に答える