我ApplicationComponent
提供了ApiModule
和其他
@PerApplicationScope
@Component(
modules = {ApiModule.class, ApplicationModule.class}
)
public interface ApplicationComponent {
void inject(MainActivity activity);
}
我在应用程序的开头构建此组件:
@Override
public void onCreate() {
super.onCreate();
component = DaggerApplicationComponent.builder()
.applicationModule(new ApplicationModule(this))
.apiModule(new ApiModule())
.build();
}
只有在我的初始片段加载并且我从某些API响应中得到响应之后,我才能创建应该在所有其他片段之间共享的Player
。
如何告诉Dagger有新的依赖模块?
答案 0 :(得分:0)
使用Dagger,您可以使用组件范围,如果您希望跨应用程序生命周期使用相同的Object实例,则必须在应用程序级别组件中将依赖项作为@Singleton提供。
您可以使用自定义注释为片段活动创建自定义范围,以在该图生命周期中提供相同的ApiModule依赖关系实例。
这里有一个与Dagger范围一起玩的示例项目
https://github.com/joesteele/dagger2-component-scopes-test
这是一篇关于这个主题的精彩帖子
http://fernandocejas.com/2015/04/11/tasting-dagger-2-on-android/