Спасибо, я смог свести свои модули только к привязке для текущей деятельности, Отличная обратная связь.

екте, над которым я работаю, есть ряд служебных классов, для которых требуется контекст активности.

Я не хочу объявлять новый метод @Provides для каждого действия, которое использует зависимость. то есть я не хочу этого:

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

// ...and in another module

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

Поэтому вместо этого я объявляю эти утилиты в едином модуле ActivityUtilitiesModule и передаю нашу базовую активность, которую расширяют все остальные действия. Теперь мне не нужно объявлять мою зависимость от Navigator x раз.

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

Тем не менее, Dagger не знает, как удовлетворить зависимость для BaseActivity. Это означает, что для каждого действия мне нужно создать метод предоставляет, который будет удовлетворять зависимости BaseActivity с конкретным используемым действием. например.:

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

Это лучше - мне нужно только повторять этого одного провайдера для каждого действия, а не повторять провайдера для каждого класса утилит для каждого действия, но это все еще выглядит как нежелательный дополнительный шаг в настройке Dagger, и еще одна вещь, которая делает код труднее понять.

Есть ли шаблон, который позволяет мне избежать необходимости предоставлять этого поставщика BaseActivity для каждого вида деятельности?

Ответы на вопрос(1)

Ваш ответ на вопрос