【发布时间】:2015-10-19 18:40:35
【问题描述】:
我正在构建一个使用 Dagger 2 的应用程序。
所以,我的应用程序组件如下所示:
@Singleton
@Component(modules = {ApplicationModule.class})
public interface ApplicationComponent {
// Exported for child-components.
Application application ();
final class Initializer {
public static ApplicationComponent init (Application app) {
return DaggerApplicationComponent.builder()
.applicationModule(new ApplicationModule(app)).build();
}
private Initializer () {
} // No instances.
}
ConnectorComponent plus(ConnectorModule module);
... injections
}
这是在@Singleton 范围内,因此它在应用生命周期内是唯一的。
然后我有另一个组件,它应该能够使用上述组件提供的所有依赖项,但为它的依赖项提供@PerActivity 范围:
@Scope
@Retention(RUNTIME)
public @interface PerActivity {}
看起来像这样
@PerActivity
@Subcomponent(modules = ConnectorModule.class)
public interface ConnectorComponent {
... injections
}
问题是。如何确保 @Singleton 提供的所有内容都将作为依赖项上的 Singletons 传递给 ConnectorModule?另一件事,我怎样才能确保 ApplicationComponent 中的方法plus 总是会添加一个我想要的新模块(@PerActivity)?
最后,任何人都可以想出一种策略来在所有活动中使用它(这对于@PerAcitivity 范围使用是有意义的)并且不必每次都使用新的 ConnectorModule 调用 plus?
【问题讨论】:
标签: java android dependency-injection dagger-2