我正在处理的项目有许多需要活动上下文的实用程序类。Dagger 2 - 如何避免代码重复注入需要活动上下文的依赖关系
我不想为每个使用依赖关系的活动声明一个新的@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声明这些实用程序,并通过我们的BaseActivity所有其他活动扩展。现在我不必声明我的Navigator依赖项x次数。
@Provides
static Navigator(BaseActivity activity) {
return new Navigator(activity);
}
但是,Dagger不知道如何满足BaseActivity的依赖性。这意味着我需要创建一个提供方法,以满足BaseActivity依赖关系和所使用的特定活动的每个Activity。例如:
@Provides
static BaseActivity providesBaseActivity(ActivityOne activity) {
return activity;
}
这是更好 - 我只需要重复此一个供应商每次活动,而不是重复每活动每个实用类的提供者,但它仍然感觉就像匕首不受欢迎的额外步骤设置,另一件事使代码更难理解。
是否有一种模式可以让我避免必须为每个活动提供此BaseActivity提供程序?
谢谢,我能够减少我的模块,只为当前活动的绑定,很好的反馈。 – user1173706