本文将适合有Dagger2使用基础及考虑组件化构建项目的同学
首先看一下组件化的大概样子
如何让dagger2在组件A、B、C等组件有效的使用呢?
问题1:各组件间有相同的数据,希望与各个模块共同享用(如数据库)
问题2:各组件有各自独立的数据,只希望在自己的组件使用(如网络接口)
问题3:不想把全部数据都丢在基础组件,造成基础组件越来越庞大
思路:
1.在基础组件构建AppComponent及AppModule,将共同的数据类及配置提供出来(如网络配置,数据库等)
2.在业务组件创建各自的Component及Module,并依赖AppComponent,并配置各自需要提供的数据(如网络接口类实例等)
3.将个组件所创建的Dagger方法注入到各个需要的地方(Activity等)
实现方法:
1.配置dagger2
在build.gradle添加如下配置
2.基础组件创建dagger2的component,module如下图
3.在业务组件中实现子依赖
4.在Activity中进行注入
详细代码请看: