Dagger2的基本概念与实际应用。】的更多相关文章

本文系原创博客,文中不妥烦请指出,如需转载摘要请注明出处! Dagger2的基本概念与实际应用 Alpha Dog 2016-11-30  10:00:00 本文Demo的github地址:https://github.com/DarkPointK/MyTestApplication.git 最近2天看了几篇关于Dagger2的博文,一开始是云里雾里,后来尝试着动手才整理出思绪,恍然大悟.在Dagger2对于程序的解耦有了更深一层的认识!现在将自己的理解整理出来,希望能帮到正在学习的同志! 想要…
概述 在2016年5,6月份开始在知乎上看到开发方法,那时候记得是看mvc,mvp,mvvm这三种开发模式区别,后面进一步了解到google在github上开源了使用这3种模式进行Android开发的demo.不同的项目有不同的情况,开发项目是找一个最适合的,而不是性能最好,开发时间最短等. MVP是一种开发模式或者架构,RxJava与Retrofit是两个库,前面的是异步的库,后面的是提供Restful请求的库,这两个库都是为了MVP开发模式服务的.当然,他的适用场景是业务逻辑复杂的项目,也就…
Dagger2 中虽然概念挺多的,但是大部分花时间都能理清.包括看人家的分析,Debug 代码下去也能懂.但是对于 scope 的用法以及实现原理还是有点难理解的.主要的问题也像简书上的文章所说: 自定义注解是怎么工作的?是不是命名了就能达到自己想要达到能够控制自己所提供的组建的生命周期的生命周期的功能?引用的说法就是这么一个回事: 比如Singleton就可以实现单例,PerActivity就可以创建的类实例与Activity“共生死“,是不是我定义一个PerFragment的注解,同样可以达…
一.作用域Scope 之前了解RoboGuice的时候,我们知道它默认给我们提供了几个注解,ContextSingleton和Singleton,但是Dagger2更为灵活,只有javax包中提供的Singleton注解.更为强大的是,我们可以自定义作用域. 首先我们定义一个运行时的注解. @Scope @Retention(RetentionPolicy.RUNTIME) public @interface PerActivity { } 我们新增加一个Module,专门为Activity中提…
什么是Dagger2 Dagger是为Android和Java平台提供的一个完全静态的,在编译时进行依赖注入的框架,原来是由Square公司维护,现在由Google维护. 我们知道Dagger是一个依赖注入的框架,那么什么是依赖注入呢? 我们在activity中有可能会用到很多很多的类,这些类要在activity中进行实例化,这样就导致我们的activity非常依赖这么多的类,这样的程序耦合非常 严重,不便于维护和扩展,有什么办法可以不去依赖这些类呢,这时候就需要有一个容器(IoC),将这些类放…
毫无疑问,Dagger2的 上手是有门槛的,有门槛是因为它里边的概念多,用起来复杂,可是一旦你学会了Dagger2的使用,你一定会爱不释手的.与ButterKnife和AndroidAnnotations不同,Dagger2是由Google开发和维护(之前是Squreup),在 性能上可以说是做到的极致(Dagger2在编译期间进行了依赖注入,完全去除了反射机制),Dagger2要解决的问题也和ButterKnife以及AndroidAnnotations不同,后者主要是解决控件的初始化,线程的…
概述 Dagger2是一款使用在Java和Android上的静态的,运行时依赖注入框架.官方地址:http://google.github.io/dagger/ 记得当初刚学习Dagger2的时候看了许多博客,但是感觉上手依然困难,所谓光学不练就是这个意思吧 时至今日,用上此框架的同仁越来越多.分析文章也很多,上手相对要简单了许多. 学习Dagger2最先要明白的是其各个注解的含义及工作原理,这样才可以快速的上手和使用. 在这里简要记录一下在使用Dagger2过程中的感受和心得体会. 本文示例代…
Dagger2是第一个使用生成代码的方式实现依赖注入的框架.作为Dagger的升级版本,自然有它的优势,优先注重的是执行效率.本文着重介绍Dagger2.官方据点传送门: https://google.github.io/dagger//users-guide.html 首先来看一下依赖注入和控制反转 在软件工程领域,DI是一种实现控制反转用来解决依赖的设计模式,依赖是一个可以被使用的对象(服务),注入是把依赖传递给依赖它的对象(客户),即要使用它的对象,这样,服务就成了客户组成的一部分.传递服…
Dagger 依赖注入的诉求, 这边就不重复描述了, 在上文Spring以及Guice的IOC文档中都有提及, 既然有了Guice, Google为啥还要搞个Dagger2出来重复造轮子呢? 因为使用动态注入, 虽然写法简单了, 耦合也降低了, 但是带来了调试不方便, 反射性能差等一些缺点. 而Dagger跟Guice最大的差异在于, 他是编译期注入的, 而不是运行时. 他生成的代码可以直观的调试, 也不是通过反射, 而是通过构建工厂类. 下面我们用代码来简单演示一下. 构建工程 既然Dagge…
原文url: http://blog.iliyun.net/2016/11/20/%E6%A1%86%E6%9E%B6%E5%B0%81%E8%A3%85/ 这几年来android的网络请求技术层出不穷,网络请求从最初的HttpClient,HttpURLConnection到Volley,OkHttp,Retrofit.但是如果直接使用,每个网络请求都会重复很多相同的代码,这显然不是一个老司机需要的.接下来我们就讲讲网络请求封装那点事. 主要利用以下技术点 - Retrofit2 Retrof…