作者:书友66421539 | 来源:互联网 | 2023-01-21 13:57
如果文章对你有所帮助请点个赞,写文章需要勇气,也需要得到肯定,如果所有人都只知道取而没有舍,将不会有人开源与分享。
我是wzg,也是墨。
Dagger2使用0.2快捷链接:https://www.
如果文章对你有所帮助请点个赞,写文章需要勇气,也需要得到肯定,如果所有人都只知道取而没有舍,将不会有人开源与分享。
我是wzg,也是墨。
Dagger2使用0.2快捷链接:
https://www.jianshu.com/p/62f755228c98
Dagger2了解过的人都说是学习成本比较高的,相对于大对数项目都使用不上。
但是推出就一定有他的道理,爱学习技术的我就会各种逛github,终于有了对Dagger2的一点点使用见解。
1.首先当然是导入依赖,可以根据自己喜欢的版本使用
// dagger2
implementation 'com.google.dagger:dagger:2.23.1'
annotationProcessor 'com.google.dagger:dagger-compiler:2.23.1'
2.注解介绍
这里描述的紧代表个人对注解的理解
@Inject :表面意思是就是注入
@Component :用于连接module的桥梁
@Provides :提供对应的实例
@Module :管理实例的容器
我的见解就是: ``需求方 中间商 生产商``
3.实例使用:
使用Dagger2的方式如何调用ApiService 的register()
public class ApiService {
public void register() {
LogR.logDateE("注册成功了");
}
}
3.1 首先需要创建一个module容器得到实例(提供者)
@Module//标注当前类是module容器
public class RegModule {
@Provides//提供实例
public ApiService provideApiService(){
return new ApiService();
}
}
3.2 中间商的写法
//使用Component连接module
@Component(modules ={RegModule.class })
public interface RegComponent {
//通常写法:内部是使用者
void inject(MainActivity mainActivity);
}
3.3 需求方如何使用?看代码
注意ApiService并没有直接new实例化对象,而是使用Dagger2注入生成代码管理实例关联。
DaggerRegComponent是写好Component之后reBuild才生成的对象。
public class MainActivity extends AppCompatActivity {
/*使用了Inject 就会向 UserComponent内去找对象*/
@Inject
ApiService mApiService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/* DaggerRegComponent 是项目reBuild后生成的
*
* 关联接口UserComponent
*/
DaggerRegComponent.create().inject(this);
mApiService.register();
}
}
4.运行项目出现一下代表你已经学会了本文的所有,谢谢你的星星or爱心。
到此已经结束,希望本文对你有所帮助。如果后续有时间将会继续写下去,帮助需要的伙伴把Dagger2这块硬骨头啃下去。