美文网首页
Dagger2学习笔记

Dagger2学习笔记

作者: 风中追风_ | 来源:发表于2017-02-24 22:37 被阅读16次

@Inject

1.注解构造器
2.注解非private的类成员变量
3.注解方法,该方法在所在类的构造方法结束后立即调用,可用于安全的注入this

@Component

提供两种方式定义方法,编译后生成DaggerXXXComponent这个类,在目标类中使用,就可以实现依赖注入了

1.void inject(目标类 obj);
Dagger2会从目标类开始查找@Inject注解,自动生成依赖注入的代码,调用inject可完成依赖的注入。
2.Object getObj(); 如: Pot getPot();
Dagger2会到Pot类中找被@Inject注解标注的构造器,自动生成提供Pot依赖的代码,这种方式一般为其他Component提供依赖。(一个Component可以依赖另一个Component)

另外:

1.@Component可以指定多个@Module的,如果需要提供多个依赖的话。
2.Component可以依赖于其他Component,可以使用@Component的dependence,也可以使用@SubComponent,这样就可以获取其他Component的依赖了(即获取其他Component指定的Module)。我们Component不需要重复的指定Module,可以直接依赖其它Component获得。

@Scope

1.@Scope的作用:
它的作用只是保证依赖在@Component中是唯一的,可以理解为“局部单例”。
@Scope是需要成对存在的,在Module的Provide方法中使用了@Scope,那么对应的Component中也必须使用@Scope注解,当两边的@Scope名字一样时(比如同为@Singleton), 那么该Provide方法提供的依赖将会在Component中保持“局部单例”。
而在Component中标注@Scope,provide方法没有标注,那么这个Scope就不会起作用,而Component上的Scope的作用也只是为了能顺利通过编译,就像我刚刚定义的ActivityScope一样。

2.如何使用Dagger2实现单例呢?

很简单,做到以下两点即可。

依赖在Component中是单例的(供该依赖的provide方法和对应的Component类使用同一个Scope注解。)
对应的Component在App中只初始化一次,每次注入依赖都使用这个Component对象。(在Application中创建该Component)

相关文章

  • Dagger2学习笔记5(关于Lazy,Provide的使用)

    Dagger2学习笔记1(基础概念学习)Dagger2学习笔记2(学习Dagger2的简单使用)Dagger2学习...

  • Dagger2学习笔记4(@Singleton 与@ Scope

    Dagger2学习笔记1(基础概念学习)Dagger2学习笔记2(学习Dagger2的简单使用)Dagger2学习...

  • Dagger2学习笔记3(各个注解学习)

    Dagger2学习笔记1(基础概念学习)Dagger2学习笔记2(学习Dagger2的简单使用)上篇中学习了如何使...

  • Dagger2学习笔记(二)

    系列文章:Dagger2学习笔记(一)Dagger2学习笔记(二) 在上一篇文章我们讲了用于搜索的SearchAc...

  • Dagger2学习笔记(一)

    系列文章:Dagger2学习笔记(一)Dagger2学习笔记(二) 依赖注入是一种十分好的技巧,它能解偶高层次模块...

  • Dagger2 框架与 SystemUI

    学习笔记:Dagger源码[https://github.com/google/dagger] Dagger2 注...

  • Dagger链接

    [Dagger2学习笔记] (https://blog.csdn.net/sweet_smile5/article...

  • Dagger2学习笔记

    声明:第一次做笔记,仅做自己学习后总结记录,如有侵权请及时联系我删除. 笔记只作用法记录,不涉及原理,如果有人看过...

  • Dagger2学习笔记

    学习资料: Dagger2概念详细讲解 一共3篇文章,以形象的例子和清晰的思路,讲清楚了下面三个问题,建议看下面的...

  • Dagger2学习笔记

    前言 项目开撸阶段,准备接入Dagger2,再重新学起来!这篇文章主要是记录对dagger2的学习,从基本使用,到...

网友评论

      本文标题:Dagger2学习笔记

      本文链接:https://www.haomeiwen.com/subject/ptvtmttx.html