【发布时间】:2023-03-26 09:26:02
【问题描述】:
我对 Dagger 2 还很陌生。我正在尝试在我的 Android 项目中实现它。
我有一个Service,它需要GoogleApiClient。我正在使用 Dagger 将其注入此服务。
@FragmentScoped
@Component(dependencies = {NetComponent.class, RepositoryComponent.class})
public interface CustomServiceComponent {
void inject(CustomService customService);
}
@Singleton
@Component(modules = {AppModule.class, NetModule.class})
public interface NetComponent {
GoogleApiClient getGoogleApiClient();
}
@Singleton
@Component(modules = {AppModule.class, RepositoryModule.class})
public interface RepositoryComponent {
DatabaseService getDatabaseService();
}
AppModule、NetModule 和 RepositoryModule 具有标记为 @Singleton @Provides 的方法
当我构建我的项目时,我收到了这个错误:
locationServiceComponent 依赖于多个作用域 组件:@Singleton NetComponent @Singleton RepositoryComponent
我了解我的 LocationComponent 不能依赖于两个 @Singleton 范围的组件,但我需要在我的服务中使用它们并且都需要是 @Singleton。
有没有更好的选择来做同样的事情?
【问题讨论】:
-
“我知道我的 LocationComponent 不能依赖于两个 @Singleton 范围的组件” -> 你能解释一下为什么这是不可能的吗?
-
你可以在here找到答案