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:
- JAVA - ¿Es un error en la clase java.util.Calendar o qué?
- Tienes problemas para conectarte a Google Play Services; Obtener el código de estado Cancelado
- Gradle Android Build Project Error: No se pudo encontrar el recurso de metadatos
- El niño especificado ya tiene un padre. Debe llamar a removeView () en el primer padre del niño (Android)
- Cómo arreglar este código todas las pantallas de Android
@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
- Cómo actualizar el PNR Capcha añadido en el Indian Railways Site
- ¿Cómo representar una relación Many-To-Many en XML o en otro formato de archivo simple?
- DrawLine problema con Paint.StrokeWidth = 1 en Android
- Android en la aplicación de facturación de la clave pública en el repositorio público
- Buscar la vista de padre por id
- Cómo obtener la velocidad de fotogramas de vídeo en Android OS?
- Varias etiquetas de raíz en Android Studio
- Obtener los detalles del último registro de llamadas después de finalizar la llamada utilizando el receptor de difusión
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(..) }
- Cómo pasar valores a AsyncTask Android
- ¿Cómo puedo implementar FragmentManager y FragmentTransaction para reemplazar sólo un fragmento?