gpt4 book ai didi

android - Dagger 2 跨模块依赖

转载 作者:行者123 更新时间:2023-11-30 01:13:55 25 4
gpt4 key购买 nike

在我当前的项目中,我们有一个 ApplicationComponent,它包含各种模块,包括 NetworkModule:

DaggerApplicationComponent.builder()
.applicationModule(new ApplicationModule(this))
.networkModule(new NetworkModule())
.apiModule(new ApiModule())
.build();

我现在想设置一个 UserServices 模块,它将至少提供一个 UserServices 对象,并且该对象需要其他模块提供的一些配置。例如,NetworkModule 提供了一个 HttpLoggingInterceptor.Level 用于应用程序中的其他网络调用,我想在 UserServices 调用。

来自 NetworkModule 调试版本的示例:

@Module
public class NetworkModule extends BaseNetworkModule {
HttpLoggingInterceptor.Level getHttpLoggingInterceptorLevel() {
return HttpLoggingInterceptor.Level.BODY;
}
}

为了封装,我想将 UserServices 提供在它自己的模块中。

如何设置 UserServices 模块,以便它可以包含在同一组件中,并可以访问 NetworkModule 中的 Provides 以配置 它提供的UserServices对象?

谢谢

最佳答案

我通过反复试验弄明白了这一点。如果依赖模块尚未包含在 component 中,那么我可以简单地将 includes 参数添加到 @Module 注释中:

@Module(includes= {
NetworkModule.class,
ApiModule.class
})

在我的例子中,依赖模块和其他一些在几个地方使用,并且在 component 本身中都是独立需要的。幸运的是,Dagger 似乎会为我在同一个组件中跨模块连接东西。所以在这种情况下我真的不需要做任何特别的事情——只需在组件中这样做:

@Singleton
@Component(modules = {
ApplicationModule.class,
NetworkModule.class,
SchedulerModule.class,
ApiModule.class,
UserServicesModule.class
})

关于android - Dagger 2 跨模块依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38154981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com