Tengo la impresión de que Android admite la reflexión. Pero, ¿realmente? ¿Cuán sensato sería confiar en la reflexión? ¿Cuál es la pena?Android y reflejo
Respuesta
Android admite la reflexión.
Una vez que tiene un prototipo en ejecución, puede comparar y determinar sus cuellos de botella.
Si se refleja, entonces considere intentar almacenar en la memoria caché las interfaces y hacer que sea un costo único, en lugar de resolver continuamente las mismas interfaces de las mismas instancias repetidamente.
Es compatible, e incluso recomendado, en la situación en la que desea compatibilidad con múltiples versiones del sistema operativo Android en un solo archivo apk
. Este artículo de la Blog oficial de desarrolladores de Android se describe cómo crear una aplicación que requiere sólo una versión temprana de la API, y utiliza la reflexión para invocar nuevas API si están disponibles:
Hay un buen ejemplo de reflexión en el código de muestra también, en BusinessCard. Este método no generará un montón de expectativas, por lo que debería ser mucho más amigable para el rendimiento. También es, en mi opinión, más fácil de implementar. Especialmente si se trata de un método no implementado previamente.
Aquí es donde se utiliza: http://developer.android.com/resources/samples/BusinessCard/src/com/example/android/businesscard/ContactAccessor.html
un ejemplo sencillo en relación con el uso de la reflexión sobre androide http://aaarkonusurum.blogspot.com/2012/02/android-ile-reflection.html
Class x = Object.class;
Constructor[] constructors = x.getDeclaredConstructors();
Field[] fields = x.getDeclaredFields();
Method[] methods = x.getDeclaredMethods();
for (Constructor constructor : constructors) {
//constructors
}
for (Field field : fields) {
//fields
}
for (Method method : methods) {
//methods
}
Creación de una TextView de código subyacente en tiempo de ejecución con el uso de la reflexión
String x = TextView.class.toString().replace("class ", "");
Class<?> cls = Class.forName(x);
Class<?> param[] = new Class[1];
param[0] = Context.class; //Context=o an ki context ==> [activity.class]
Constructor<?> ct = cls.getConstructor(param);
Object paramVal[] = new Object[1];
paramVal[0] = context;
Object retobj = ct.newInstance(paramVal);
Llegar a setText método() en el tiempo de ejecución
Class methodParam[] = new Class[1];
methodParam[0] = java.lang.CharSequence.class;
Method method = cls.getMethod("setText", methodParam);
Object arglist[] = new Object[1];
arglist[0] = new String("THIS TEXTVIEW HAS BEEN CREATED ON RUN TIME");
method.invoke(retobj, arglist);
Android por supuesto apoya Reflexión y podemos leer métodos de una clase APK o marco diferente. Aquí hay un artículo sobre el uso de Reflection en Android como un posible enfoque de diseño para crear API- http://prasanta-paul.blogspot.kr/2013/09/java-reflection-as-android-api.html
No me gusta el bit "por supuesto". Hay muchos entornos Java en los que la reflexión es inexistente. JavaCard y Java ME vienen a la mente. –
- 1. Constructores genéricos y reflejo
- 2. Scala 2.10 y reflejo del paquete
- 3. ¿Objective-C tiene reflejo?
- 4. Reflejo de Silverlight
- 5. Auto reflejo Nexus Proxy Repository
- 6. Sistema inesperado .__ Canon con reflejo
- 7. Descifrando el protocolo de reflejo de AirPlay
- 8. Reflejo de tiempo de compilación en C#
- 9. Reflejo de Java: impacto de setAccessible (verdadero)
- 10. ¿Cómo invoco un constructor estático con reflejo?
- 11. Deshabilitar reflejo de Java para el hilo actual
- 12. Obtener propiedades privadas/Método de clase base con reflejo
- 13. ¿Cómo puedo generar un evento mediante reflejo en .NET/C#?
- 14. ¿Encontrar parámetros de tipo por reflejo en Scala 2.10?
- 15. Populador de propiedades de objetos dinámicos (sin reflejo)
- 16. ¿Es posible recuperar información del archivo mediante reflejo en C#?
- 17. Deserializar cadena JSON en C# sin usar el reflejo
- 18. Estableciendo propiedades con reflejo en las clases estáticas
- 19. ¿Los miembros virtuales se llaman mediante reflejo (en circunstancias normales)?
- 20. Llamar a un método genérico por reflejo en java
- 21. paquete frente a protección protegida con reflejo de Java
- 22. ¿Cómo comprobar si una propiedad es virtual con reflejo?
- 23. Reflejo de Javascript: ¿obtiene todas las propiedades de un objeto?
- 24. ¿Debo dejar el reflejo de bluetooth pirateado en el código de producción?
- 25. diferencia entre Android: anchura y android: layout_width
- 26. Diferencia: android: background y android: src?
- 27. Android HttpClient y HTTPS
- 28. XMPP y Android
- 29. Android AdMob y Maven
- 30. Android webview.loadData y CSS
Supongo que la pregunta es si alguien ya hizo los puntos de referencia en varios dispositivos. –