Dagger2的学习

Dagger :是安卓依赖注入框架。方便管理对象的初始化与使用。

关于相关注解
@Inject:
在需要注解的变量之前添加。也就是在需要依赖的地方使用这个注解。
@Provide:
对方法进行注解,都是有返回类型的。在Module中以此来告诉Dagger我们想要构造对象并提供这些依赖。
@Module:
Modules类里面的方法专门提供依赖,定义一个被@Module注解的类,Dagger就会知道在哪里找到依赖来满足创建类的实例。
@Component:
注入器。是@Inject和@Module之间的桥梁,主要职责是把二者组合在一起。@Component注解用来标记接口或者抽象类。所有的components都可以通过它的modules知道它所提供的依赖范围。
@Scope:
作用域。Dagger2通过自定义注解来限定作用域。所有的对象都不再需要知道怎么管理它自己的实例。Dagger2中有一个默认的作用域注解@Singleton,通常在Android中用来标记在App整个生命周期内存活的实例。也可以自定义一个@PerActivity注解,用来表明生命周期与Activity一致。换句话说,我们可以自定义作用域的粒度(比如@PerFragment, @PerUser等等)。
@Qualifier:
限定符,当一个类的类型不足以标示一个依赖的时候,我们就可以用这个注解。在Android中,我们需要不同类型的Context,我们可以自定义标识符注解“@ForApplication”和“@ForActivity”。这样的话,当注解一个Context的时候,我们可以用这个标识符来告诉Dagger我们想提供哪一种Context。Dagger2里面已经存在一个限定符@Named注解。
@SubComponent:
如果我们需要父组件全部的提供对象,这时我们可以用包含方式而不是用依赖方式,相比于依赖方式,包含方式不需要父组件显式显露对象,就可以拿到父组件全部对象。且SubComponent只需要在父Component接口中声明就可以了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容