Este es un problema muy extraño. Mi aplicación que funciona muy bien, pero de alguna manera si dejo mi teléfono durante una hora o dos, mientras que mi aplicación se está ejecutando, me sale el siguiente error cuando vuelva a ella más tarde:Android: ¿Cuándo se descargan las clases en el sistema?
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)
Sé que es un hecho de que mi clase yoga.database.Manager se cargó en el momento en que se lanzó la aplicación, pero de alguna manera la clase debe haber sido descargada por el sistema cuando salí del teléfono.
¿Android descarga clases automáticamente después de ciertos períodos? ¿Qué puedo hacer cuando mi clase se descarga?
El error anterior hace que mi aplicación se cuelgue, pero puedo volver a ejecutarla fácilmente y funciona perfectamente.
El problema se produce principalmente en mi teléfono HTC Magic con Android 1.6.
¡Gracias por tu aporte! Investigaré el logcat. – user277827
@fadden, ¿Tiene una fuente/cita para * "Dalvik VM no descarga clases actualmente. Si lo hiciera, solo podría hacerlo cuando todas las clases asociadas con un cargador de clases en particular se puedan descargar a la vez" *? – Pacerier
Para la primera parte, soy la fuente: en general, fui responsable del tiempo de ejecución de Dalvik en ese momento (y continué hasta principios de 2011, poco antes de que el desarrollo en el tiempo de ejecución esencialmente se detuviera para centrarme en lo que ahora es ART). La segunda parte es la manera en que funcionan los cargadores de clases. Para que una clase se descargue, no debe haber referencias a ella, pero el cargador de clases hace referencia a todas las clases, y cada clase hace referencia a su cargador. Por lo tanto, hasta que un cargador y todas las clases cargadas sean inalcanzables, el GC no las descartará. No tengo una referencia autorizada para citar para eso. – fadden