最简单易懂的dagger2示例
来源:互联网 发布:我的世界0.14作弊js 编辑:程序博客网 时间:2024/05/22 17:05
在网上搜了很多资料,包括官网,都看不懂,基本打算放弃了。何况从功能上看,用inject替代new,似乎提升不大。
最后时刻这篇博文拯救了我:https://zhuanlan.zhihu.com/p/24454466 。此文完全抛开了其他博文涉及的Android+MVP等复杂构架,是最简的纯java案例,我一下子就看懂了,可能就10分钟吧,我就实现了0->1的转化。其他博文也写得很用心,但写得都是1->9,故我怎么也看不懂。
拯救我的这篇文章共有4个案例,其中最重要的是第三个,看懂即够。有个微小的遗憾是,作者没有提供可执行的代码,于是我整理成了最简Android版,其中的第三个放在github上:https://github.com/maxyou/Dagger2Demo3。第一个和第二个案例的代码也打包放在里面。这里展示一下第三个的可运行代码,请反复查看相关类、变量的相互关联,于是你就知道是怎么回事了:
看各处关联的一个方法是,尝试修改其中的方法名等,看看IDE会给你怎样的提示,你就明白其中的关联了。
值得提示的是其中的一个类DaggerCarComponent并非用户定义,而是dagger2模块帮忙生成的中间数据,大概要rebuild之后才不报错
其中的@Qualifier可以使用更简单@Named替代,具体用法直接看如下示例即可:
以上,基本应用已经足够。如果要继续深研,可以学习@Scope和@Singleton这样的注解
感谢:
1. https://zhuanlan.zhihu.com/p/24454466 神兵利器Dagger2
纯java,帮忙通过最为关键的0->1
2. http://www.jianshu.com/p/39d1df6c877d Dagger2从入门到放弃再到恍然大悟
此文不厌其烦地讲解了dagger2在Android的MVP模式下的应用,还详细分析了注入过程
此外还阅读了好几篇其他博文,这种从多处学习,再自己整理并分享的感觉真好。
最后时刻这篇博文拯救了我:https://zhuanlan.zhihu.com/p/24454466 。此文完全抛开了其他博文涉及的Android+MVP等复杂构架,是最简的纯java案例,我一下子就看懂了,可能就10分钟吧,我就实现了0->1的转化。其他博文也写得很用心,但写得都是1->9,故我怎么也看不懂。
拯救我的这篇文章共有4个案例,其中最重要的是第三个,看懂即够。有个微小的遗憾是,作者没有提供可执行的代码,于是我整理成了最简Android版,其中的第三个放在github上:https://github.com/maxyou/Dagger2Demo3。第一个和第二个案例的代码也打包放在里面。这里展示一下第三个的可运行代码,请反复查看相关类、变量的相互关联,于是你就知道是怎么回事了:
public class Car { @MarkCarModule.QualifierA @Inject Engine engineA; @MarkCarModule.QualifierB @Inject Engine engineB; public Car() { DaggerCarComponent.builder().markCarModule(new MarkCarModule()) .build().inject(this); } public Engine getEngineA() { return this.engineA; } public Engine getEngineB() { return this.engineB; } } @Component(modules = {MarkCarModule.class}) public interface CarComponent { void inject(Car car); } public class Engine { String engine_run; public Engine(){} public Engine(String s){engine_run = s;} public String run(){return engine_run;} } @Module public class MarkCarModule { @Qualifier @Retention(RetentionPolicy.RUNTIME) public static @interface QualifierA { } @Qualifier @Retention(RetentionPolicy.RUNTIME) public static @interface QualifierB { } public MarkCarModule(){ } @QualifierA @Provides Engine provideEngineA(){ return new Engine("gearA"); } @QualifierB @Provides Engine provideEngineB(){ return new Engine("gearB"); } }
看各处关联的一个方法是,尝试修改其中的方法名等,看看IDE会给你怎样的提示,你就明白其中的关联了。
值得提示的是其中的一个类DaggerCarComponent并非用户定义,而是dagger2模块帮忙生成的中间数据,大概要rebuild之后才不报错
其中的@Qualifier可以使用更简单@Named替代,具体用法直接看如下示例即可:
@Provides @Named("cached")@SingletonOkHttpClient provideOkHttpClient(Cache cache) { OkHttpClient client = new OkHttpClient(); client.setCache(cache); return client;}@Provides @Named("non_cached")@SingletonOkHttpClient provideOkHttpClient() { OkHttpClient client = new OkHttpClient(); return client;}@Inject @Named("cached") OkHttpClient client;@Inject @Named("non_cached") OkHttpClient client2;
以上,基本应用已经足够。如果要继续深研,可以学习@Scope和@Singleton这样的注解
感谢:
1. https://zhuanlan.zhihu.com/p/24454466 神兵利器Dagger2
纯java,帮忙通过最为关键的0->1
2. http://www.jianshu.com/p/39d1df6c877d Dagger2从入门到放弃再到恍然大悟
此文不厌其烦地讲解了dagger2在Android的MVP模式下的应用,还详细分析了注入过程
此外还阅读了好几篇其他博文,这种从多处学习,再自己整理并分享的感觉真好。
阅读全文
0 0
- 最简单易懂的dagger2示例
- 最简单的Dagger2入门教程
- 最简单的Dagger2入门教程
- 最简单的Dagger2入门教程
- Dagger2----一个最简单的Dagger2依赖的实现
- 最简单的安卓下Dagger2注入
- 最简单易懂的闭包
- https最简单易懂的解释
- 最简单的MVP模式,简洁易懂。
- 最简单最易懂的发布网站教程
- ubuntu上最使用jni最简单易懂的例子
- 最简单易懂最深刻的数据库讲解
- Dagger2最简单注入使用
- 【简单向】用最简单易懂的方式实现FFT
- Dagger2的简单使用
- Dagger2的简单使用
- Dagger2的简单使用
- dagger2的简单入门
- (二)Angular4 英雄征途HeroConquest-编辑英雄
- 利用Github搭建个人博客之绑定域名
- 集成Eclipse和Tomcat时找不到server选项
- Java Socket应用---慕课网笔记
- lsqnonlin 非线性最小二乘
- 最简单易懂的dagger2示例
- [PAT乙级]1012. 数字分类 (20)
- Hadoop 安装
- LinkedList与ArrayList的性能比较
- 【C++】继承和多态之——菱形继承
- 排序算法三归并排序
- Educational Codeforces Round 26总结
- 蓝桥杯练习题 BEGIN-2 序列求和
- (三)Angular4 英雄征途HeroConquest-初始化组件文件介绍