我目前正在尝试将Dagger添加到我的android项目中。对于应用程序项目而言,如何构建ObjectGraph对我来说很容易理解。但是我不太清楚在我的android库项目中执行此操作的最佳方法是什么。
我是否应该继续在应用程序的应用程序类中构建ObjectGraph并将OG传递给LibraryModule-将库的OG附加到Apps OG?还是应该在库中构建整个ObjectGraph?
如果我需要通过ObjectGraph.inject(this)
在库中注入(inject)一个类怎么办?在我的Apps项目中,我可以从Application类获取OG。但是如何在库中处理呢?我应该为ObjectGraph添加@Provides方法吗?
非常感谢您的帮助。
编辑:
简而言之:我如何在我的图书馆项目中调用ObjectGraph.inject(this)
,因为我是在应用程序类中构建的,所以我无法访问OG?
最佳答案
如果有人使用Dagger 2到达这里,这就是我在App中所做的方法:
在库模块中,我创建了以下模块和组件:
@Module
public class ModuleUtil {
@Provides
public RestTemplate provideRestTemplate() {
return new RestTemplate();
}
}
@Singleton
@Component(
modules = {
ModuleUtil.class
})
public interface MainComponent {
void inject(Postman postman);
}
然后,为了管理注入(inject),我在下面创建了Singleton:
public class DaggerWrapper {
private static MainComponent mComponent;
public static MainComponent getComponent() {
if (mComponent == null) {
initComponent();
}
return mComponent;
}
private static void initComponent () {
mComponent = DaggerMainComponent
.builder()
.utilModule(new ModuleUtil())
.build();
}
}
当库模块中的某个类需要注入(inject)其成员时,我只需调用
DaggerWrapper.getComponent().inject(this);
即可。