我们来讨论一下@scope的使用与分析
应用场景:假如在目标类中依赖的对象要求是单例的,在一定的生命周期内使用同一个对象,使用Dagger2应该如何做呢。
根据之前基础使用方法中的介绍,每次我们调用 component 的 inject方法时,都会新创建一个对象来注入。如果我们想使用一个实例,那么就需要在创建了一个实例之后,后续每次使用都返回同一个对象而不是重新创建。如何达到这一目的呢,这里就需要用到 Scope 注解 。Scope 顾名思义是作用域,用于标注一个对象的作用域。Scope也是一个元注解,首先用Scope 来定义一个注解:

对应的单例的实体类是

自定义Module类如下:

自定义Component如下:

测试使用:

结果:

查看DaggerPersonComponent文件

进入DoubleCheck中

典型的单例模式的写法。
后面会继续介绍更多Dagger2的文章
网友评论