Dagger2学习成本有点高:

推荐几篇博客:

https://www.jianshu.com/p/cd2c1c9f68d4这里讲依赖注入

https://www.jianshu.com/p/3a3748260eac这里讲注解

https://blog.csdn.net/u013320868/article/details/54926578这里依赖注入实现一个butterknife

https://blog.csdn.net/mq2553299/article/details/73065745他有4篇需要看完

https://www.jianshu.com/p/22c397354997这篇需要反复看很不错

https://www.jianshu.com/p/c556b415b800这里讲dagger2和MVP模式结合很不错

代码地址:稍后

Dagger2学习笔记一:

/**
 * dagger2理解:
 * 1.@Inject标记的属性,表示这个属性将会被注入到当前类中---提供注入数据
 * 2.@Inject标记的构造方法,表示在注入过程中将会调用这个方法来实例化
 * 3.@Module标记的是类
 * 4.@Module也表示---提供注入数据的模块
 * 5.@Module的一般作用是提供一个 无法直接使用@Inject标记构造方法来实例化的 实例(比如OkHttpClient的构造方法没有标记@Inject,
 * 就需要HttpActivityModule2来实例化一个OkHttpClient实例,提供出来)
 * 6.@Provides标记一个方法,表示这个方法要提供实例,这个实例在某个类中被@Inject标记的
 * 7.@Component表示注射器,用于连接提供数据的类和使用数据的类
 * 8.@Component标记的是接口
 * 9.@Component在只存在@Inject地方不用写(modules = xxxx.class)因为没得!
 * 10.@Component在有module的时候,需要写modules = HttpActivityModule2.class。关联的提供数据的类
 * 11.@Component重写一个 void inject(A01SimpleActivity activity)方法,关联使用数据的类;
 * 12.在使用属性的地方,比如这里的MainActivity需要注意的地方:
 * 12a.对比MainActivity和HttpActivity,不使用Module可以不写httpActivityModule2
 * 12b.使用了Module的,且Module有参数的必须写httpActivityModule2
 * 小结:
 * @Inject 注解构造 生成“大众”工厂类
 * 或者
 * @Module +@Providers 提供注入“私有”工厂类
 * 然后通过Component 创建获得Activity,获得工厂类Provider,统一交给Injector
 * 最后Injector将Provider的get()方法提供的对象,注入到Activity容器对应的成员变量中,我们就可以直接使用Activity容器中对应的成员变量了!
 *
 *
 * Dagger2理解
 * 1.通过DaggerXXXComponent.builder().build()出来的,实际是XXXComponent的实例
 * 2.在@Component中void inject(XXX xxx)表示注入到哪个类里面
 * 2.1如果在@Component中这样使用,比如ApplicationComponent中 这个方法ApplicationBean providerAppBean();  说明将BeanForApplication开放给其他Component使用
 * 2.1https://blog.csdn.net/u010961631/article/details/72626134
 * 3.在使用依赖是子的作用范围不能大于父
 * 4.@singleTon只是限定范围内为单例
 * 5.编译后生成的Component实现类的名称是Dagger+我们所定义的Component接口的名称。
 * 6.Component中返回值为void且有参的方法,方法名是无所谓的,参数是最重要的代表的是要注入的目标位置,但是方法名一般为inject;
 * 7.Component中返回值不为void且无参的方法,方法名是无所谓的,返回值是最重要的代表的是暴露给子Component使用的依赖或者是获取的子Component的类型。
 */

Dagger2学习笔记二

/**
 * 这个例子可以表明
 * 0.在MainActivity的注入里面 .appComponent(MyApplication.appComponent)一下,就能使用AppModule提供的属性
 * 1.@SingleTon确实是有效的
 * 2.在MainActivity里面注入了mainPresenter,那么这时MainPresenter已经被实例化了
 * 3.实例化了MainPresenter,那么MainPresenter里面需要注入的其他属性都被注入了(MainActivity里可以用的,MainPresenter也可以用)
 * 3.1这一点通过DaggerMainAcitivityComponent可以看出来
 * 3.2:
 * this.mainPresenterProvider = MainPresenter_Factory.create(mainPresenterMembersInjector, provideLoginViewProvider);
 * this.mainActivityMembersInjector = MainActivity_MembersInjector.create(sharedPreferencesProvider, myApplicationProvider, mainPresenterProvider);
 * mainActivityMembersInjector的创建,是传入了myApplicationProvider和sharedPreferencesProvider的
 * 所以MainPresenter里面可以用myApplication,mainPresenter,是注入了的。
 * 不用再在Presenter里面DaggerXXXComponent.builder().build().inject()了。
 * 4.TestClass的实例化表明:要想实例化Presenter,那么presenter里面所有的属性都需要被实例化。不用再Presenter里面做“注入操作”
 * 4.1这里的“注入操作”是在实例化presenter时,由框架自身实现的。
 *
 */

MVPamrs全家桶的理解

Dagger2和MVParms的学习相关推荐

  1. 一款最流行的MVPArms MVP快速集成框架Retoift,Okhttp,RxCache,Gson,RxLifeCycle, Dagger2,Rxjava,ImageLoader

    今年的Android技术圈中MVP,Dagger2,Rxjava,Retrofit这些词汇非常火,随便打开一个技术论坛都充斥着大量的关于这些技术的文章,Github也充斥着各种以基于MVP+Retro ...

  2. dagger2 android快速注入框架相关学习资料

    2019独角兽企业重金招聘Python工程师标准>>> Android:dagger2让你爱不释手-基础依赖注入框架篇 地址:http://www.jianshu.com/p/cd2 ...

  3. Github优秀Android开源项目,值得引用与学习(图文结合~~~)

    刚进来的时候需要加载很多图片和gif图片, 所以想看图片效果需要耐心等待一下. JKeyboardPanelSwitch Android键盘面板冲突 布局闪动处理方案 点我跳转 给大家提供一个底部导航 ...

  4. Github优秀Android开源项目,值得引用与学习(注意!里面有巨图! )

    内容添加(--根据trending(today)/java从上往下添加的,根据时间查看,都是github的项目,以及大佬们的点赞的GitHub项目 ) 刚进来的时候需要加载很多图片和gif图片, 所以 ...

  5. 25000字总结Android优秀的第三方框架、各种学习资料汇集 二 Camera、Video、指纹、聊天IM、投屏等等

    前言 前几天总结了Android中常用到的系统组件.Design组件.自定义组件等等系列 点击跳转地址: 25000字总结Android优秀的第三方框架.各种学习资料汇集 一 系统组件.Design组 ...

  6. Android 依赖注入 DI - Dagger2

    1.依赖注入 (Dependency Injection) 1.1 面向接口编程 public interface Drivable {void drive(); }public class Bike ...

  7. Android -- 带你从源码角度领悟Dagger2入门到放弃(三)

    1, 前面两篇文章我们知道了怎么使用常用的四种标签,现在我们结合我们自己的项目中去简单的使用 在我们搭建项目的时候,一般会创建自己的Application,在里面进行一些初始化如一些第三方的Green ...

  8. Android:dagger2让你爱不释手-基础依赖注入框架篇

    前言 dagger2的大名我想大家都已经很熟了,它是解决Android或java中依赖注入的一个类库(DI类库).当我看到一些开源的项目在使用dagger2时,我也有种匆匆欲动的感觉,因此就立马想一探 ...

  9. 开发日记-20190604 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》

    Referred Blogs Linux如何窗口化打开一个文件夹 linux 访问windows共享文件夹的方法 mount error(112): Host is down Preface 今天尝试 ...

  10. RxJava+Retrofit+MVP+Dagger2

    传说中的谷歌四件套,按顺序来哈~ 2017.2.20更新:对于用了一段时间的谷歌四件套的开发者们来说,基础应该都已经掌握的差不多了,但是四件套确实很博大精深,要想完全掌握,一是要学习使用技巧,二是要在 ...

最新文章

  1. python牛顿法解非线性方程组_matlab实现牛顿迭代法求解非线性方程组.pdf
  2. 页面文件太小无法完成操作_手机上也能轻松完成文件压缩操作,无需软件,可惜知道的人才10%...
  3. 云炬随笔20211011
  4. VC控件 Edit Control
  5. 深入理解 SAP Fiori Elements 工作原理系列之二:如何给 SAP Fiori Elements 应用添加自定义按钮
  6. 如何把webIDE里的UI5应用配置到SAP云平台的Launchpad里
  7. mysql的条件语句_mysql条件语句
  8. 响应在此上下文中不可用
  9. cp无法创建普通文件权限不够_MAC从管理员变成了普通用户怎么办?
  10. 台达a2_台达伺服ASDA-A2系列解决五轴CNC方案助力雕刻机行业换代升级
  11. 程序架构之redis扩容 (增加端口)
  12. Po.et正式推出为出版商打造的API层应用—Frost
  13. AI---人工智能学习
  14. 破解版的cornerstore(mac版)
  15. options 请求
  16. 人工智能演义第三回:一脉相承得失公论,两度寒冬冷暖自知
  17. HUAWEI机试:最长的顺子
  18. 【优化求解】基于自适应模拟退火粒子群优化算法求解单目标优化问题matlab代码
  19. 给你了解你所不了解的多摩君
  20. 【刘文彬】【精解】EOS标准货币体系与源码实现分析

热门文章

  1. delphi7中idHTTP的使用
  2. 趋势软件卸载去除密码提示
  3. JS库之Highlight.js高亮代码
  4. 学习笔记(一)数据挖掘概念与技术
  5. Linux操作系统原理与应用(陈莉君)——学习笔记
  6. Hadoop权威指南:知识梳理(一)
  7. 西门子 dp通讯测试软件,西门子 PLC DP通讯
  8. arcMap安装教程
  9. 解决卡米,安心卸载MIUI预装软件。
  10. cad如何生成kml文件_如何制作KML文件?