Dagger2解耦简易版

Dagger2 是一个Android依赖注入框架,由谷歌开发,最早的版本Dagger1 由Square公司开发。依赖注入框架主要用于模块间解耦,提高代码的健壮性和可维护性。
// 添加依赖
compile 'com.google.dagger:dagger:2.9'
annotationProcessor 'com.google.dagger:dagger-compiler:2.9'

然后就是写出需要注入的类,里面写上方法,例如:
/**
* 类描述:用来注入的类
* 姓名 :
*/

public class Genlei {
private int a ;
// 无参方法
public void getin(){
Log. e ( "---------" , " 通过依赖注入调用的方法 " );

}
// 有参方法
public void setin( @NonNull String str){
Log. e ( "==========" ,str+ "::" );
}
}

然后就是在创建一个类,用来实例化注入的类,并不在调用的类里面实例化,这样就可以进行一个解耦,但是注意的是,这个类要用 @Module 修饰,里面的方法也要用 @Provides 修饰,例:
/**
* 类描述:注入中间类
* 姓名 :
*/
@Module
public class Zhurulei {
@Provides
Genlei getgenlei(){
// 实例化根类
return new Genlei();
}
}

然后就是写一个接口,通过注解将关联类导入,通过抽象方法传入this
/**
* 类描述:
* 姓名 :刘希鑫
*/

@Component (modules = Zhurulei. class )
public interface Zhurujiekou {
void inject(MainActivity mainActivity);
}

然后,只要在调用类里通过注解将注入类的对象创建出来 @Inject
然后在Build中解析一下就可以了

随后,就是调用接口,传入this,就可以直接用上面的注入类对象来调用它的方法了。
public class MainActivity extends AppCompatActivity {
// 通过注解找到注入的类
@Inject
Genlei genlei ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout. activity_main );

DaggerZhurujiekou. create ().inject( this );
genlei .getin();
genlei .setin( " 这是调用的有参方法 " );
}
}

以上就是一个最简单的依赖注入,不过一样可以进行解耦操作,只要在和MVP关联上,一个解耦的MVP就完成了,当然,你也可以在添加一些其他方式,比如,MVP+Rxjava+Retroffit+Dagger2。

下面就是对于依赖注入的讲解,也就是Dagger2
我们平时使用MVP框架的时候,还是会在View层里new出P层,这样就进行了一个绑定,违反了android的单一职责和解耦性,而且也会因为View层销毁而P层生命周周期还没有走完造成的生命周期不一致的内存泄漏。
而Dagger2就是为了解除绑定,避免内存泄漏的一种方法,通过第三方类或者接口,来实例化P层然后注入到View层,而View层只管调用注入的数据,并不去管P曾德生命周期,这样两者之间并没有具体的关联,全都有第三方来管理,而这时如果View层销毁了,那么因为没有关联,那么P层自然也不会因为生命周期不一致而造成内存泄漏。


依赖注入的过程:
  • @Inject 带有此注解的属性或构造方法将参与到依赖注入中,Dagger2会实例化有此注解的类
  • @Module 带有此注解的类,用来提供依赖,里面定义一些用@Provides注解的以provide开头的方法,这些方法就是所提供的依赖,Dagger2会在该类中寻找实例化某个类所需要的依赖。
  • @Component 用来将@Inject和@Module联系起来的桥梁,从@Module中获取依赖并将依赖注入给@Inject
原理我没屡明白,想要了解的童鞋去看看下面的网址
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值