¿Cuándo usar Dagger en la aplicación Android?
Sé que Dagger es un marco de inyección de dependencia, pero todavía no lo he utilizado en mis proyectos.
Estoy empezando un nuevo proyecto y me pregunto si Dagger es adecuado para ello. Por lo que yo entiendo, el uso de Dagger conduce a un montón de código de caligrafía y anotaciones. Así que no estoy seguro si no es una exageración para mi proyecto relativamente simple.
- Dagger - android.app.IntentService con @Inject
- Dagger 2 inyecta error en AppCompatActivity
- Referencia no resuelta para Dagger 2 en Kotlin
- Dagger2 Component (un-scoped) no puede depender de los componentes del ámbito - Error
- ¿Es posible a los miembros de @Inject (proporcionados a través de @Provides), que contienen un Contexto de Actividad de la Actividad Base
Un poco sobre el proyecto. Se centra en el procesamiento de imágenes y parte principal de la funcionalidad se construye a su alrededor. Sin embargo, probablemente también tendrá un backend simple para el almacenamiento de datos.
En general, me gustaría conocer algunos principios básicos que puedo utilizar para elegir usando Dagger para un proyecto o no.
- Dagger ejemplo construido a través de eclipse falla con 'Asegúrese de que la generación de código se ejecutó para este módulo.'
- @Injects después de @Produces?
- Ciclo de inclusión del módulo Dagger
- Daga que no genera componentes para / clase de prueba
- Alcance de la actividad Dagger2, ¿cuántos módulos / componentes necesito?
- Mejor Dagger dependencia inyección basada en tipo de construcción y sabor?
- Dagger2 componente genérico método de inyección
- Dagger 2, a veces en la compilación me sale "no se puede encontrar la clase de símbolo DaggerApplicationComponent"
Entendimiento básico:
Supongamos que desea probar su aplicación que se ocupa del servicio de tarjetas de crédito . Para fines de prueba no debe desear acceder a un RPCCreditCardService real ya que necesitará transacciones reales y otras cosas que no desea realizar durante el desarrollo. En ese caso, debe tener que crear un servicio de copia falsa que imitará lo mismo que CreditCardService real, pero no realizar cualquier cosa. Si utiliza el marco de inyección de dependencia puede definir tareas comunes en una dependencia e inyectarlo en servicio falso y real. Se minimizará la complejidad de codificación, así como ayuda a hacer cada módulo independiente.
De la documentación:
Mediante el uso de marco de inyección de dependencia, cada clase es fácil de probar. Usted no necesita un montón de boilerplate sólo para intercambiar el RpcCreditCardService de un FakeCreditCardService.
La inyección de dependencia no es sólo para pruebas. También facilita la creación de módulos reutilizables e intercambiables. Puede compartir el mismo AuthenticationModule en todas sus aplicaciones. Y puede ejecutar DevLoggingModule durante el desarrollo y ProdLoggingModule en la producción para obtener el comportamiento adecuado en cada situación.
Referencia:
Para una comprensión más detallada puede comprobar esta discusión .