如何为其他片段提供匕首依赖?

时间:2015-07-03 09:27:38

标签: android dagger-2

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有新的依赖模块?

1 个答案:

答案 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/