普通注入流程:
一个主component(appCom)下关联多个module(actMo,FragMo…),
每个module对应多个子component(subComponent)。
如下图,ApplicationSub 关联了ActivityModule,FragmentModule,MainModule。在ActivityModule中关联了MainActicitySub和Main2ActivitySub。
使用@ContributesAndroidInjector注解的gooogle版注入流程
忽略TaskRepository
使用ContributesAndroidInjector注入减少了一个注入器,如普通注入方式中,ActivityModule中的MainActivitySub。
在google版本中推荐为每个安卓组件(如Activity)创建一个对应的Module,作为组件获取注入对象的统一出口,因此Module
可理解为一个对象工厂,为组件提供P层对象,或者其他所需对象。
注意:此Module不是Mvp当中的Model层对象,Mvp当中的Model提供业务处理,而工厂Module是为方便、统一管理组件注入的对象而存在。
如下两图中,举例注入P层对象:
图1:
BaseActivity不使用google推荐的方式,可以直接在组件当中直接注入P层对象。
图二:
使用了google的推荐方式,在TasksModule中注入了P层,以及其他对象,像这样在Module中将统一注入,方便管理。
推荐Dagger2文章: