Dagger2简单使用
发布时间:2020-12-14 02:16:36 所属栏目:百科 来源:网络整理
导读:在注入的时候需要Component,inject方法需要将被注入的对象传进来,一般都是activity,然后component就会把数据注入给传进来的对象。 例如Component是C,activity是A,A中有个对象需要被注入,对象为D,需要注入的对象要用@Inject注解,C注入对象需要Module,
在注入的时候需要Component,inject方法需要将被注入的对象传进来,一般都是activity,然后component就会把数据注入给传进来的对象。
例如Component是C,activity是A,A中有个对象需要被注入,对象为D,需要注入的对象要用@Inject注解,C注入对象需要Module,叫它M。M的类声明外要加@Module。
首先要初始化C,在C的类声明外要加上
@Component( DaggerComonpent.builder().module(new Module()).build(); @SubComponent(例如用C的plus方法实例PC,对应的M叫PM。前面说过数据是M提供的,如果是用C实例的PC,那么PC的数据要由PM提 供,这里有一个有意思的东西就是M也可以为PM提供数据,例如PC需要为PA inject一个String数据,数据是PM提供 的,假设 由方法PMethod提供。 @Provides @Provides
参数的对应关系:如果M中提供一个方法
@Provides
AAAA bbb(@Named("Data") File cacheDir) { ........... }
这个方法需要一个File类型参数,在类型前加@Named("Data")标示这个方法需要传一个名字叫Data的File对象
@Provides
@Named("Data") File ccc(){ return new File("...."); }
这个方法返回一个File,并且加了@Named注解,就是说这个方法提供一个名字叫Data的File,就和上面的方法对应了!
可以自己定义@Scope
@ViolationScope
@Subcomponent( modules = { Module.class } )
在M中提供的实例会跟对应的Component生命周期一致
@Provides @ViolationScope CarInfo provideCarInfo() { return carInfo; }
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |