week.io

dagger2 学习(三) - scope 使用

2017-01-15  本文已影响28人  搬代码白言午

关于Scope

Dagger 2 自带的 Scope 只有一个 @Singleton ,其他的可以通过自定义来实现

本文代码

1. 前言

(1) Scope 的作用,就是提供在当前 Component 实例 范围内的单例。

假设 DaggerUserComponent 能够提供 User 实例

UserComponent 被自定义的 @UserScope 标注,那就意味着

一旦一个 DaggerUserComponent 实例创建完成,

那么其调用 injectTo 方法,进行注入时,所有注入的 User 对象都是同一个实例

知道 DaggerUserComponent 被重新创建,才会提供一个不一样的User实例

(2) @Scope 的使用方法

第一种

  1. @Scope 注解整个 Bean 对象,@inject 注解对应 Bean 对象的构造方法
  2. @Scope 还需要在 Bean 对象注入,出现的 Component 中标注

第二种

  1. @Scope 配合 在Module 中使用,配合 @Provides 一起标注
  2. @Scope 需要在 Module 出现的 Component 中标注

两种方法,其实就是两种提供实例的不同实现,对比前面 一二两篇文章即可看出

第一种是最简单注入时,加上@Scope

第二种是配合@Module 注入式,加上@Scope


2. 进行实践操作

(1) 整体结构构建

实践的内容主要是针对 @Scope 第二种使用方法

因此这�中间@UserScope 只需要添加到 UserModuleUserComponent

具体代码

整个类的结构

Dagger2 学习(三)

一家之言,仅供参考

本文代码

上一篇下一篇

猜你喜欢

热点阅读