Sim*_*out 5 android dagger dagger-2
我目前正在开发一个多模块应用程序。基本上有4个模块:
这意味着应用程序不直接依赖于 implementations 模块。
我基本上有以下设置:
应用程序组件
@Component(
dependencies = {
BaseComponent.class
},
modules = {
AndroidInjectionModule.class,
AndroidSupportInjectionModule.class,
ContributesAndroidInjectorModule.class
}
)
@ApplicationScope
public interface ApplicationComponent extends AndroidInjector<MyApplication> {
@Component.Builder
interface Builder {
Builder baseComponent(BaseComponent baseComponent);
ApplicationComponent build();
}
}
Run Code Online (Sandbox Code Playgroud)
基础组件
@Component(
modules = {
...
}
)
@Singleton
public interface BaseComponent {
@Component.Builder
interface Builder {
@BindsInstance
Builder context(@ApplicationContext Context context);
@BindsInstance
Builder configuration(AppConfiguration configuration);
BaseComponent build();
}
ExposedDependency exposedDependency();
}
Run Code Online (Sandbox Code Playgroud)
除了使用安装在 BaseComponent 中的 @ContributesAndroidInjector 的模块外,此设置完美运行:我没有找到一种方法将包含 AndroidInjector 的映射暴露在 BaseComponent 上并添加到 ApplicationComponent 中。
有没有办法在 BaseComponent 中公开某种映射以将 AndroidInjectors 添加到 ApplicationComponent ?
(我会尝试将这个问题提取到一个没有敏感信息的 git repo)
这不是一个直接的答案,但我最终在我的业务逻辑模块中创建了抽象活动/片段/服务,并在 DI 模块中创建了具体类。
具体类从应用程序获取组件并使用它来注入依赖项。
几乎是 AndroidInjector 之前的旧 Dagger 方式......
| 归档时间: |
|
| 查看次数: |
202 次 |
| 最近记录: |