这是一个非常奇怪的问题.我的应用程序运行得很好,但不知怎的,如果我在我的应用程序运行时将手机放置一两个小时,当我稍后再回来时会出现以下错误:
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会在特定时段后自动卸载类吗?我的课程卸载后我该怎么办?
上面的错误导致我的应用程序崩溃,但我可以很容易地重新启动它,它运行得很好.
问题主要发生在运行Android 1.6的HTC Magic手机上.
解决方法:
Dalvik VM目前没有卸载类.如果确实如此,那么只有在与特定类加载器关联的所有类可以立即卸载时才能执行此操作,而在应用程序运行时则不会出现这种情况.
您需要检查logcat输出以查找导致此异常的错误.获取NoClassDefFoundError的一种方法是在有问题的类的初始化期间失败的东西;如果发生这种情况,日志中可能会有一条踪迹.
(当然,到目前为止,logcat输出可能已经很久了,但如果问题是可重复的,那么下次你会想要捕获它.)