Спасибо, я смог свести свои модули только к привязке для текущей деятельности, Отличная обратная связь.
екте, над которым я работаю, есть ряд служебных классов, для которых требуется контекст активности.
Я не хочу объявлять новый метод @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 для каждого вида деятельности?