He leído algunos documentos sobre cargadores de clases, pero todavía no estoy seguro de dónde y por qué se necesitan. La API de Android dice:Uso correcto de Classloader (especialmente en Android)
Carga clases y recursos de un repositorio . Uno o más cargadores de clase se instalan en tiempo de ejecución. Estos son consultados cuando el sistema de tiempo de ejecución necesita una clase específica que aún no está disponible en la memoria.
Así que si entiendo esto correctamente, puede haber muchos clasificadores que son responsables de cargar nuevas clases. Pero, ¿cómo el sistema decide cuál usar? ¿Y en qué situación debería un desarrollador crear una instancia de un nuevo cargador de clases?
En la API de Android para el intento no es un método
public void setExtrasClassLoader (ClassLoader loader)
La descripción dice:
Establece el cargador de clases que se utilizará cuando unmarshalling cualquier valores parcelable de los extras de esta Intención.
Entonces, ¿puedo definir allí un cargador de clases especial para que pueda pasar el objeto con un Intento que no está definido en la actividad de recepción? Un ejemplo:
Si la actividad A que se encuentra en el Proyecto A (en Eclipse) define un objeto que deseo enviar a la Actividad B en el Proyecto B usando putExtra del objeto Intención. Si este objeto que se envía a través del Intento no está definido (código fuente en el proyecto B), entonces hay una NoClassDefFoundException. Entonces, ¿puedo usar el método setExtraClassloader para evitar esta excepción? En caso afirmativo, ¿cómo puedo decidir qué objeto de cargador de clases tengo que aprobar? ¿Y cómo lo instauro correctamente?
pero si esto no es posible, ¿cuál es el propósito de este método'? – RoflcoptrException
Para hacer trucos realmente extravagantes dentro de un solo proyecto. – CommonsWare
Los cargadores de clases personalizados generalmente crean tantos problemas como resuelven, por lo que no son un buen lugar para comenzar cuando intentan resolver un problema. Si realmente quiere confundirse, intente descubrir qué hace Thread.setContextClassLoader. :-) – fadden