Android: ¿Cuándo las clases son descargadas por el sistema?

Este es un problema muy raro. Mi aplicación que funciona muy bien, pero de alguna manera si dejo mi teléfono durante una hora o dos mientras mi aplicación se está ejecutando, tengo el siguiente error cuando vuelvo a él más tarde:

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é de hecho que mi clase yoga.database.Manager se cargó en el momento en que se inició la aplicación, pero de alguna manera la clase debe haber sido descargada por el sistema cuando dejé el teléfono.

¿Android descarga las 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 bloquee, pero puedo volver a lanzarla fácilmente y se ejecuta muy bien.

El problema se produce sobre todo en mi teléfono HTC Magic con Android 1.6.

Actualmente, la VM de Dalvik no descarga clases. Si lo hiciera, sólo sería capaz de hacerlo cuando todas las clases asociadas con un cargador de clases en particular pudieran descargarse de una vez, lo cual no ocurrirá mientras su aplicación esté en ejecución.

Debe comprobar la salida de logcat para los errores que conducen a esta excepción. Una manera de obtener un NoClassDefFoundError es que algo falle durante la inicialización de la clase en cuestión; Si eso sucediera, probablemente habría un rastro en el registro.

(Por supuesto, por ahora la salida logcat es probablemente desaparecida hace tiempo, pero si el problema es repetible, querrá capturarlo la próxima vez.)

¿Estás jugando con cargadores de clase personalizados?

Le pregunto, porque si yoga.YogaActivity y yoga.database.Manager son clases estándar de Java en el mismo archivo APK de Android, no debería tener uno en la memoria y el otro no. Nunca he visto las clases de descarga de Android de una sola vez – por lo menos, nunca he tenido este problema en particular antes.

También:

Dejo mi teléfono durante una hora o dos mientras mi aplicación se está ejecutando

Es posible que desee aclarar lo que quiere decir con esto. ¿Quiere decir que deja su actividad en primer plano? ¿Quieres decir que presionas HOME y luego regresas horas después? ¿Quieres decir algo más?

  • NoClassDefFoundError en Android
  • Problemas de inicialización de la clase cargando java.util.logging.LogManager en Android Dalvik VM
  • Java.lang.NoClassDefFoundError: android / graphics / drawable / Icono
  • ¿Enfoque para la fijación de NoClassDefFoundError?
  • Runtime Execption java.lang.NoClassDefFoundError: retrofit2.Platform en Android
  • Error de Eclipse: NoClassDefFoundError: java / lang / ref / FinalReference
  • La biblioteca de Android no funciona con Java 8
  • Android: NoClassDefFoundError android.os.AsyncTask
  • ¿Cómo arreglar NoClassDefFoundError en twitter4j usando Android Studio?
  • Android java.lang.NoClassDefFoundError
  • Gson NoClassDefFoundError después de que las herramientas ADT y SDK se actualicen a v17
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.