dagger2入门到不放弃

Dagger2使用与分析(7)---Lazy和Provider

2019-04-09  本文已影响6人  saygoodbye_e92e

前言:Lazy和Provide可以用来包装我们需要注入的依赖,

 1.Lazy为懒加载模式, 用到的时候才会依赖, 加载过一次之后就会只使用之前的实例, 

2.而Provide为强制加载, 每次调用都会强制重新加载.

还是原来的套路,我们创建依赖类,这次为了对比普通注入,lazy和provider模式,我们分别创建3个实体类

如下:

public class Person {

}

public class Animal {

}

public class SuperMan {

}

创建自定义module

自定义module

自定义Component

自定义Component

测试使用1:

测试使用01

查看控制台打印结果:

结果01

结论:可以看到普通注入只要声明就会被初始化, 而使用Provider和Lazy包装的并没有进行初始化

测试2:
下来我们分别对这些不同对象调用两次:

测试02

测试结果如下:

测试2结果

结论:以看到使用Provider包装的Animal, 每次调用都会重新获取新的实例, 而使用普通注入和使用Lazy包装都使用的是用一个实例, 从而也就能看出各自的区别.

注意:

我们看到, 当限定局部单例(@Scope或@Singleton)之后, 无论是Provider还是Lazy, 在同一个activity中只会获取同一个依赖对象.

上一篇 下一篇

猜你喜欢

热点阅读