首先配 Dagger
在Applcation的gradle中
1:
dependencies {
classpath ‘com.neenbedankt.gradle.plugins:android-apt:1.8’
}
2
在build.gradle(Module: app)文件中最外层的上方添加
apply plugin: ‘com.neenbedankt.android-apt’
3:
在build.gradle(Module: app)文件中
apt ‘com.google.dagger:dagger-compiler:2.2’
compile ‘com.google.dagger:dagger:2.2’
provided ‘javax.annotation:jsr250-api:1.0’
以上就完成配置了
为了解耦(依赖注入)而生
什么是Dagger?
inject
通俗的将就是把一个实例 注入 到 一个目标类中 ,使其目标类拥有实例的功能
就像这样
// 实例 对象
public class A{
public String sayHi(){
return "i love you ";
}
}
//目标
public class B{
public void say(){
A a = new A();
system...(a.sayHi());
}
}
其实dagger 就是完成了如上的需求依赖注入
看看dagger是如何实现上述功能的
伪demo
先定义一个
@Module
public class A {
@Pervoides
pubulic String sayHi(){
return "beauty , lai yi fa ";
}
}
public class B{
//在B中注入
@Inject sayHi;
public static void main(....){
DaggerAppComponent.Builder().injectComponent(this);
//在B类(目标类中直接输出)
System.out.println(sayHi);
}
}
以上其实还不行他们之间还需要一个桥梁
那就是Component 可以理解为 注入器,组件,等等。
@Component(modules =A.class) //标注 这个,让A 与B 产生关系
public @Interface AppComponent{
void injectComponent(B b);
}
以上可重点内容以理解为,DaggerAppComponent(注入器,就像我们小时候的打屁股的针一样) 把 A 类(实例类,理解为药水) ,注入到(药水打到屁股) ,B类 目标类(我们的屁股)
那么我们屁股就拥有药水的能力(用@Inject 注解)