dagger2:
Dagger2是什么?
Dagger2是Dagger的升级版,是一个依赖注入框架,第一代由大名鼎鼎的 Square公司共享出来,第二代则是由谷歌接手后推出的,现在由Google接手维 护.
依赖 :
依赖是指某个模块A要实现某个功能需要其他模块B。 最原始也最简单的的方式是在模块内new一个B的对象出来,这样会造成B的构 造函数修改,需要修改A中的代码,两者耦合度非常高。
依赖注入:
依赖注入是不在A中去创建 B的实例,而是让上层调用者注入一个B的对象,这 样可以让模块A不再因为B的构造方法的修改而改
使用方法:
导入依赖:(版本不同自己修改一下dagger:dagger的版本否则Could not find com.google.dagger:dagger)
implementation"com.google.dagger🗡2.0"
annotationProcessor"com.google.dagger:dagger‐compiler:2.16"
1.创建注入提供者类
2. 提供者创建构造方法
3.给构造方法添加@Inject注解,表明对外提供依赖,并写个方法
3. 在接收注解方创建提供注解类的对象并添加@Inject注解,表明这个对 象需要注入
public class Model implements Contract.Model {
@Inject
public Model(){
}
@Override
public void getdate(String data) {
}
}
- 创建注解的桥梁,或者叫注入者。注入者是一个接口,需要用 @Component注解,并且提供一个方法用来表示向谁注入。
6. 注意到这里可以锤了 7. 锤过之后如果不报错可以在build中找到如下内容
7. 在调用类中加载Dagger,然后就可以调用了
8. 在调用类中加载Dagger,然后就可以调用了
9. DaggerUtils1Compont.builder().build().inject(this);
如果报dagger2找不到的错误:
项目中:
maven{ url 'https://maven.aliyun.com/repository/google'}
maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}
maven{ url 'https://maven.aliyun.com/repository/public'}
maven{ url 'https://maven.aliyun.com/repository/jcenter'}
model:
implementation"com.google.dagger:dagger:2.23.2"
annotationProcessor"com.google.dagger:dagger‐compiler:2.23.2"
如果还是找不到:
在电脑的这个C:\WINDOWS\system32\drivers\etc
添加:
#google_android更新
203.208.46.146 dl.google.com
203.208.46.146 dl-ssl.google.com127.0.0.1 servserv.generals.ea.com
74.125.237.1 dl-ssl.google.com
127.0.0.1 localhost
203.208.46.146 dl.google.com
74.125.237.1 dl-ssl.google.com
示例代码:(库){
桥梁类(接口)
//在V中获取P
fun getp(mainActivity: MainActivity)
//在P中获取M
fun getm(presenter: Presenter)
//实现类 库
//库
@Module
class MyModel {
//获取P
@Provides
fun getp()=Presenter()
//获取M
@Provides
fun getm()=Model()
}
}