programacion - ¿Tiene sentido usar Guice para Android?
manual android studio avanzado (4)
¿Sabes que hay RoboGuice ? Es Guice para Android.
Estoy debatiendo el uso de Guice en un proyecto de Android que es bastante complejo y tiene mucha lógica empresarial. Guice parece ser un buen ajuste, pero cada vez que empiezo a leer más a fondo, parece más complicado de lo que debería ser.
Una cosa que no entiendo es: si Guice es tan bueno y la mejor manera de escribir código Java, ¿por qué hay tan poco código de Android que usa Guice ... y por qué Google no usó Guice internamente para Android?
El problema con la demostración de las fortalezas de un marco de inyección de dependencias es que no es posible lograrlo con una simple aplicación Hello World. Estos marcos muestran su valor solo en grandes sistemas con mucha complejidad. Además, tienen una curva de aprendizaje algo pronunciada.
Por lo tanto, es bastante normal que no encuentre suficientes tutoriales: proyectos de código abierto que utilizan Guice. Esto se utilizará con mayor frecuencia en aplicaciones empresariales que no se publiquen.
Como la razón por la que Google no usa Guice, Guice no cabe en todas partes. Agrega una sobrecarga de rendimiento y no tiene sentido usarla en lugares donde no se necesita.
En realidad, Google desaconseja el uso de Guice o RoboGuice en aplicaciones de Android debido a la sobrecarga de memoria.
Fuente:
http://developer.android.com/training/articles/memory.html#DependencyInjection
5.11.2014 Edición:
Hay una biblioteca de inyección de dependencia rápida dedicada para Android. Puedo ver más y más gente usándolo:
http://square.github.io/dagger/
13.04.2015 Edición: Google lanzó su propia versión de dagger, que no utiliza la reflexión en tiempo de ejecución: http://google.github.io/dagger/
Guice tiene todo el sentido de ser utilizado y, de hecho, se utiliza en un montón de aplicaciones. La extensión RoboGuice agrega algunas sutilezas para Android que hacen que sea muy productivo de usar.
De hecho no puedo imaginar escribir una aplicación de Android sin ella. Muy doloroso.
Consulte los enlaces a las aplicaciones que utilizan Roboguice en el sitio web (por ejemplo, Google Docs, OpenTable ...). También se sabe que otras aplicaciones como la aplicación Square usan Guice directamente.
Es totalmente lógico ... ¡hazlo!
Junto con Robolectric también facilitará sus esfuerzos de prueba.
PD: soy un comentarista en RoboGuice, así que soy parcial ;-)
PPS - Junio de 2013: los desarrollos recientes han dado lugar a otros marcos basados en inyección de anotación / dependencia que realizan la mayor parte del trabajo en el momento de la creación y, por lo tanto, evitan el impacto de rendimiento de la reflexión en tiempo de ejecución (que es lento en Android) y, por lo tanto, son más adecuados para trabajo de rendimiento crítico: echa un vistazo a Dagger y AndroidAnnotations si estás interesado en eso.