¿Tiene sentido usar Guice para Android
Estoy debatiendo utilizando guice en un proyecto de Android que es bastante complejo y tiene una gran cantidad de lógica de negocio. Guice parece ser un buen ajuste, pero cada vez que empiezo a leer más profundamente en él, comienza a verse más complicado de lo que necesita ser.
Una cosa que no entiendo es: si Guice es tan grande y la mejor manera de escribir código java, ¿por qué hay tan poco código Android que usa Guice … y por qué Google no usó guice internamente para Android?
- Robolectric + PowerMock + Mockito no funciona
- Roboblender-3.0.1.jar: no incluido en Android: javax.tools. Referido desde com.google.inject.blender.AnnotationDatabaseGenerator
- RoboGuice 3.0 NoClassDefFoundError: roboguice.inject.ContextScopedRoboInjector
- RoboGuice unidad de prueba de inyección de módulo de aplicación en lugar de módulo de prueba
- No se puede inyectar valor nulo en la clase
- Mocking SQLite-Database durante la prueba de actividad con Robolectric
- Gradle y varios proyectos con Roboguice dependencia
- Cómo utilizar RoboDialogFragment con un diseño personalizado
- Inyectar objeto con constructor que toma un parámetro usando RoboGuice 2
- ¿Algún ejemplo simple usando roboguice con fragmentos en android?
- OnViewCreated con la biblioteca de compatibilidad
- Roboguice y simulacros: ¿Cómo roboguice inyectar un servicio de simulacro cuando la prueba, pero utiliza el REAL de lo contrario?
- Interceptor de actividad
El problema con demostrar las fortalezas de un marco de inyección de dependencia es que no es posible lograrlo con una simple aplicación Hello World. Estos marcos muestran su valor sólo en sistemas grandes con mucha complejidad. Además, tienen una curva de aprendizaje de alguna manera escarpada.
Por lo tanto, es bastante normal que no pueda encontrar suficientes tutoriales – proyectos de código abierto que usan Guice. Esto se usará con mayor frecuencia en aplicaciones empresariales que no se publican.
Como por qué Google no utiliza Guice, Guice no cabe en todas partes. Añade una sobrecarga de perfomance y no tiene sentido utilizarlo en lugares, donde no es necesario.
Guice tiene todo el sentido de ser utilizado y de hecho se utiliza en un montón de aplicaciones. La extensión RoboGuice añade algunas sutilezas para Android que la hacen muy productiva de usar.
De hecho, no puedo imaginar escribir una aplicación para Android sin ella. Muy doloroso.
Echa un vistazo a 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 utilizan Guice directamente.
Tiene totalmente sentido .. ¡hazlo!
Junto con Robolectric también hará sus esfuerzos de prueba más fáciles.
PS: Soy un committer en RoboGuice así que soy parcial 😉
PPS – Junio 2013: Los desarrollos recientes han dado lugar a otros marcos basados en inyección de anotación / dependencia que hacen la mayor parte del trabajo en tiempo de construcción y por lo tanto evitar el impacto de rendimiento de la reflexión de tiempo de ejecución Trabajo de rendimiento crítico – echa un vistazo a Dagger y AndroidAnnotations si está interesado en eso.
En realidad, google desalienta el uso de Guice o RoboGuice en aplicaciones Android debido a la sobrecarga de memoria.
Fuente:
http://developer.android.com/training/articles/memory.html#DependencyInjection
5.11.2014 Editar:
Hay una biblioteca de inyección de dependencia rápida dedicada para android. Puedo ver más y más personas que lo utilizan:
http://square.github.io/dagger/
13.04.2015 Editar: Google lanzó su propia versión de daga, que no utiliza la reflexión en tiempo de ejecución: http://google.github.io/dagger/
¿Sabes que hay RoboGuice ? Es Guice para Android.