Inyectar dependencias en singleton con Dagger?

¿Es posible tener Dagger inyectar singletons para usted?

Como están las cosas, sólo he encontrado una manera de proporcionar manualmente dependencias a singletons:

@Provides @Singleton public Dispatcher providesDispatcher(Context context, PPreferences preferences, FileNameCache fileNameCache) { return new Dispatcher(context, preferences, fileNameCache); } 

¿Es esta la única forma de definir singletons? Lo que prefiero hacer es algo como lo siguiente para que Dagger inyecte las dependencias en sí, sin embargo, al hacerlo me da un error.

 @Provides @Singleton public Dispatcher providesDispatcher(Dispatcher dispacher) { return dispacher; } 

Tal vez hay otra manera de definir singletons que me permitiría inyectar otros singletons en ellos sin embargo?

Cualquier ayuda es apreciada.

EDIT: Acabo de darme cuenta de que estoy haciendo el segundo enfoque con otro Singleton, sin embargo, es un caso ligeramente diferente como estoy cartografiar una implementación a una interfaz:

 @Provides @Singleton public Tracker providesTracker(TrackerImpl tracker) { return tracker; } 

TrackerImpl se inyecta con una instancia de las referencias PP mencionadas anteriormente también.

Cuando intento tenerlo crear el Dispatcher con el segundo ejemplo esto es el error que consigo:

 error: Unknown error java.lang.IllegalStateException thrown by javac in graph validation: Dependency cycle: 0. com.example.test.Dispatcher bound by @Singleton/ProviderMethodBinding[provideKey="com.example.test.Dispatcher", memberskey="null"] 0. com.example.test.Dispatcher 

No es necesario tener un método @Provides (en el módulo) para crear una instancia de singleton de Dispatcher. Simplemente anote el constructor Dispatcher con @Inject y la clase con @Singleton. Dagger usará esa instancia cada vez que inyecte una instancia de Dispatcher.

 @Singleton public class Dispatcher { @Inject public Dispatcher(..) } 
  • Imagen "Zoom In / Out" en el botón Haga clic en Android?
  • Excepción al intentar agregar un BeaconParser a AltBeacon lib
  • Cómo utilizar URLEncoder con UTF-8
  • Android Studio que agrega la biblioteca de rxjava
  • ¿Puede un Servicio de Android tener permisos múltiples?
  • Necesito ayuda con Android y Java
  • Cómo convertir int a typedarray Android
  • El número de llamada desde el teclado de marcación devuelve la advertencia: "Llamada requiere permiso que puede ser rechazado por el usuario"
  • Java.lang.IllegalStateException: ScrollView puede alojar sólo un hijo directo
  • Ideas para el sistema de almacenamiento móvil java cifrado multiplataforma
  • MediaRecord no pudo iniciar el emulador Android 7.1.1
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.