Daga 2: cómo evitar la repetición de código para inyectar dependencias que requieren contexto de actividad

El proyecto en el que estoy trabajando tiene una serie de clases de utilidad que requieren contexto de actividad.

No quiero tener que declarar un nuevo método @Provides para cada actividad que use la dependencia. es decir, no quiero esto:

@Provides
static Navigator providesNavigator(ActivityOne activity) {
    returns new Navigator(activity);
}

// ...and in another module

@Provides
static Navigator providesNavigator(ActivityTwo activity) {
   returns new Navigator(activity);
}

Entonces, en cambio, declaro estas utilidades en un solo ActivityUtilitiesModule y paso nuestra BaseActivity que todas las demás actividades extienden. Ahora no tengo que declarar mi dependencia de Navigator x número de veces.

@Provides
static Navigator(BaseActivity activity) {
    return new Navigator(activity);
}

Sin embargo, Dagger no sabe cómo satisfacer la dependencia de BaseActivity. Esto significa que para cada Actividad necesito crear un método de suministro que satisfaga la dependencia de BaseActivity con la Actividad específica que se utiliza. p.ej.:

@Provides
static BaseActivity providesBaseActivity(ActivityOne activity) {
    return activity;
}

Esto es mejor: solo necesito repetir este proveedor por actividad, en lugar de repetir un proveedor para cada clase de utilidad por actividad, pero todavía se siente como un paso adicional no deseado en la configuración de Dagger, y otra cosa que dificulta el código entender.

¿Existe algún patrón que me permita evitar tener que suministrar este proveedor de BaseActivity por actividad?

Respuestas a la pregunta(1)

Su respuesta a la pregunta