¿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.

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.

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 .

  • Dagger 2 inyectar parámetros del constructor
  • Dagger 2.10 Subcomponentes y constructores de Android
  • Dagger 2: Error sobre subcomponentes, pero no tengo subcomponentes en mi aplicación
  • Dagger2 - nulo en lugar del objeto inyectado
  • Dagger 2 "Dagger" prefijo componente no es capaz de compilar? Clase generada automáticamente
  • Dagger2 y Android
  • Dagger se puede utilizar para realizar la inyección en un proveedor de contenido?
  • Cómo inyectar una actividad en un adaptador usando dagger2
  • ¿Cómo anula un módulo / dependencia en una prueba de unidad con Dagger 2.0?
  • Inyectar base de datos en un ContentProvider con daga
  • ¿Cómo organizas tus módulos y componentes Dagger 2?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.