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.
- Mejor registrador de Android para iniciar sesión en el archivo
- ActionBarSherlock: java.lang.NoClassDefFoundError: com.actionbarsherlock.R $ styleable
- Android facebook SDK haciendo error java.lang.NoClassDefFoundError
- NoClassDefFoundError en la muestra de Cocos2D
- La aplicación se bloquea al hacer una nueva intención. No Error Clase Def Encontrado
¿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.
- Android - Google Maps API v2 - NoClassDefFoundError
- NoClassDefFoundError al usar greenDao
- NoClassDefFoundError durante la ejecución de la prueba de Android JUnit
- NoClassDefFoundError en la biblioteca de Caligrafía
- Twitter Fabric + MultiDex causa NoClassDefFoundError
- HtmlUnit en Android: Dependencias
- Java.lang.NoClassDefFoundError: com.google.android.gms.common.AccountPicker
- Java.lang.NoClassDefFoundError en la versión de Android inferior a Lollipop
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?
- Android InputStream que deja caer dos primeros bytes (BluetoothChat modificado)
- RequestRouteToHost IP argumento