普通注入流程:

一个主component(appCom)下关联多个module(actMo,FragMo…),
每个module对应多个子component(subComponent)。
如下图,ApplicationSub 关联了ActivityModule,FragmentModule,MainModule。在ActivityModule中关联了MainActicitySubMain2ActivitySub
Mvp + Dagger2笔记。

Mvp + Dagger2笔记。

Mvp + Dagger2笔记。

Mvp + Dagger2笔记。


使用@ContributesAndroidInjector注解的gooogle版注入流程

Mvp + Dagger2笔记。

Mvp + Dagger2笔记。

Mvp + Dagger2笔记。

忽略TaskRepository

使用ContributesAndroidInjector注入减少了一个注入器,如普通注入方式中,ActivityModule中的MainActivitySub

在google版本中推荐为每个安卓组件(如Activity)创建一个对应的Module,作为组件获取注入对象的统一出口,因此Module
可理解为一个对象工厂,为组件提供P层对象,或者其他所需对象。

注意:此Module不是Mvp当中的Model层对象,Mvp当中的Model提供业务处理,而工厂Module是为方便、统一管理组件注入的对象而存在。


如下两图中,举例注入P层对象:
图1:
BaseActivity不使用google推荐的方式,可以直接在组件当中直接注入P层对象。

Mvp + Dagger2笔记。

图二:
使用了google的推荐方式,在TasksModule中注入了P层,以及其他对象,像这样在Module中将统一注入,方便管理

Mvp + Dagger2笔记。

推荐Dagger2文章:

Dagger 2从浅到深

相关文章: