当前位置: 移动技术网 > IT编程>移动开发>Android > andorid jar/库源码解析之Dagger/Dagger2

andorid jar/库源码解析之Dagger/Dagger2

2020年04月24日  | 移动技术网IT编程  | 我要评论

张芸京女装,旋涡网,魏然 爱是怀疑

目录:andorid jar/库源码解析 

dagger、dagger2:

  作用:

  1、用于解耦activity和业务逻辑

  2、在使用业务的时候,不需要重复编写new代码。

  3、当业务变化的时候,不需要对所有的ui,进行修改。

  4、便于测试,和正式,替换指定module即可。

  栗子:

  需要:

    1、定义 commoncomponent 的接口 标记 @component(modules = xxxmodule.class) 的注解

    2、定义xxxmodule 模块,并标注  @module 的注解 ,对添加的方法使用 provide开头,这些 provide方法需要添加 @provides注解

  a业务类:

  构造函数使用 @inject 注解

  b页面:

  1、定义a业务类的变量,使用@inject注解

  2、在oncreate中,使用如下代码进行初始调用

daggercommoncomponent.builder().commonmodule(new commonmodule(this)).build().inject(this);

  3、daggercommoncomponent由,使用dagger自动生成的类(dagger使用apt技术实现),使用apt生成如下代码

  

  4、然后就可以使用了。。。。

  源码解读:

  

  ①:创建一个 daggercommoncomponent$builder对象,用于接收 commonmodule 和返回 commoncomponent的接口对象

  ②:创建一个 commonmodule对象,参数是当前对象,并且赋值commonmodule对象给 daggercommoncomponent$builder对象的成员

  ③:检查 commonmodule对象,并且返回一个 daggercommoncomponent对象。且该对象创建了一个prodiver对象。且赋值为 新增类 commonmodule_provideicommonviewfactory 继承于factory(factory extends provider),且包含成员commonmodule

  ④:调用daggercommoncomponent对象的inject并传入当前对象,创建一个 loginpresenter 对象,并且赋值给this对象的presenter对象(该对象标记过inject)

  引入:

// dagger2
implementation 'com.google.dagger:dagger:2.23.1'
annotationprocessor 'com.google.dagger:dagger-compiler:2.23.1'

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网