Dagger2使用】的更多相关文章

本系列只讲使用方法和使用中遇到的问题,如果还对dagger2还不了解的童鞋儿可以参考文章: http://www.jianshu.com/p/cd2c1c9f68d4 http://www.jianshu.com/p/94d47da32656 使用Dagger2的前提需要添加一些依赖: 1 在Project的 build.gradle文件添加以下内容 buildscript { repositories { jcenter() } dependencies { classpath 'com.an…
Dagger2是一个Java和Android的依赖注入框架. 本文介绍Android中dagger2的基本使用. 其中包括@Inject, @Component, @Module和@Provides注解的使用. 使用依赖注入的好处 1.使用类和被依赖的对象构造分开,这样如果我们需要改变被依赖类的构造方法,不必改动每一个使用类. 2.对各种被依赖类的实例,可以只构造一次. 3.当我们需要更换一种实现时,只需要保证接口一致. 4.利于单元测试,我们可以方便地mock依赖类的对象. 优点总结: 创建对…
一.Dagger2注入原理 Dagger2以自动生成代码的形式,帮助我们构建依赖图,在使用依赖的时候方便清晰,这里说明一点,在我们使用Dagger2的时候,绝大多数错误都是编译器就会暴漏出来,这也就决定了这套框架的稳定性会更高. 关于生成的源码,我们一起看一下.我们就以之前提到的例子来看: @Generated("dagger.internal.codegen.ComponentProcessor") public final class DaggerApplicationCompon…
一.作用域Scope 之前了解RoboGuice的时候,我们知道它默认给我们提供了几个注解,ContextSingleton和Singleton,但是Dagger2更为灵活,只有javax包中提供的Singleton注解.更为强大的是,我们可以自定义作用域. 首先我们定义一个运行时的注解. @Scope @Retention(RetentionPolicy.RUNTIME) public @interface PerActivity { } 我们新增加一个Module,专门为Activity中提…
为什么是Dagger2 为了更好的了解Dagger2,请先阅读RoboGuice篇了解依赖注入. 官方文档称,依赖注入这种技术已经在存在多年了,为什么Dagger2要造轮子? Dagger2是第一个全部使用自动生成代码的框架. 框架生成的代码就像我们自己手写的,可以轻易进行调试和测试,并且很容易了解其原理. 一.接入 Dagger2使用了生成代码的方式,这里需要apt的插件. buildscript { repositories { jcenter() } dependencies { clas…
简介 这个项目主要有两个功能,一个加载网页/文章,另一个用来显示评论.并应用了MVP模式,Dagger2.RxJava.ButterKnife等开源框架.效果图如下: 结构 首先来看一下布局文件: <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.andr…
Dagger2 是一个Android依赖注入框架,由谷歌开发,最早的版本Dagger1 由Square公司开发.依赖注入框架主要用于模块间解耦,提高代码的健壮性和可维护性.Dagger 这个库的取名不仅仅来自它的本意"匕首",同时也暗示了它的原理.Jake Wharton 在对 Dagger 的介绍中指出,Dagger 即 DAG-er,这里的 DAG 即数据结构中的 DAG--有向无环图(Directed Acyclic Graph).也就是说,Dagger 是一个基于有向无环图结构…
接上一篇文章介绍了Dagger2的初步使用,相信刚接触的人会觉得很奇怪,怎么会有很多自己没有定义的代码出现,为什么Component的创建方式是那样的.为了搞清楚这些东西,我们需要查看一下Dagger2 生成的源代码.Dagger2 是一个DI框架,通过学习生成的代码也可以更好的理解Dagger2是如何做依赖注入的. 将上一篇文章中的工程在SublimeText中打开,结构如下图: 可以看到AppComponent 生成了 DaggerAppComponent,Dagger2的生成规则中,我们自…
写在前面 现在越来越多的使用到了开源项目,但是仅限于使用,却不了解,更谈不上深入.也是因为越来越多的开源项目,平时工作中遇到问题也是第一时间寻找对应的开源项目,少了许多独立的思考.现在虽然能很轻松的完整一些有很多功能的App,但自己只是完成了一下界面,核心的通信.图片加载等功能都是使用的开源项目.从今天开始,我希望搭建一个Android项目的起步工程,一点点了解这些开源项目,不求多么的精通,至少不再是只会调用API.代码会在github上开源,至于能不能一直写下去,要看看我的拖延症还有没有救.…
什么是Dagger2 Dagger是为Android和Java平台提供的一个完全静态的,在编译时进行依赖注入的框架,原来是由Square公司维护,现在由Google维护. 我们知道Dagger是一个依赖注入的框架,那么什么是依赖注入呢? 我们在activity中有可能会用到很多很多的类,这些类要在activity中进行实例化,这样就导致我们的activity非常依赖这么多的类,这样的程序耦合非常 严重,不便于维护和扩展,有什么办法可以不去依赖这些类呢,这时候就需要有一个容器(IoC),将这些类放…