自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

专注Android开发

淡泊以明志,宁静以致远

  • 博客(69)
  • 收藏
  • 关注

转载 拆Retrofit2.0 的create()方法流程

滚滚长江东逝水,浪花也要乘风迎浪。一直在心里感激在网上写博客的各路大神们,在开发过程中帮助很大,自己也有心向先辈们学习,一来对自己也是一种督促,写博客也是巩固知识的过程,二来也希望能将自己开发中的所学记录下来,说不定能帮助到某些程序猿呢?这也是我的第一篇博客,内容如果有误还请指出来。好了,废话少说,进入正文。Retrofit不用多介绍了,谁用谁知道。我在使用过程中会产生疑问:1.声

2017-06-22 15:22:02 1636

转载 Retrofit2.0源码解析

Retrofit 是square公司开发的一款对OKHttp进行了进一步封装的网络框架,现在也是android网络请求中非常火的一个网络请求框架,最近在准备面试的时候也刚好复习到了这一块,然后花了几天时间简单地看了下Retrofit2.0源码,分享一下。若有不对的地方,欢迎指正。Retrofit2.0原理Retrofit2.0用了动态代理技术,通过解析注解生成Http请求,把请求交

2017-06-22 14:50:29 652

转载 okhttp 内核剖析

基本使用从使用方法出发,首先是怎么使用,其次是我们使用的功能在内部是如何实现的.建议大家下载 OkHttp 源码之后,跟着本文,过一遍源码。官方博客栗子:http://square.github.io/okhttp/#examplesOkHttpClient client = new OkHttpClient();String run(String url) t

2017-06-21 16:24:52 445

转载 深入浅出 OkHttp 源码

OkHttp3是Square出品的高质量Http网络请求库,目前在GitHub上的star数超过17000。很多Android项目的网络组件都是基于OkHttp封装的,还有著名的Retrofit也是基于OkHttp封装的。OkHttp的基本使用OkHttpClient client = new OkHttpClient();Request request = new Request.

2017-06-21 16:13:18 462

转载 OkHttp3.4.x源码剖析

OkHttp在一个月前迎来了3.4.x时代,内部对架构做了大量的修改,移除了HttpEngine的概念,通过Interceptor与Chain用职责链模式来完成整个请求的过程,内部透明的进行了重试,重定向,header替换,gzip解压,存取cookie,读写缓存等过程。笔者研读了源码后觉得十分精彩,于是想分享一下OkHttp的网络请求执行流程与架构。因而不会过多关注其API,但是Ok

2017-06-20 18:45:54 1025

转载 Retrofit中如何正确的使用https?

很多文章对客户端https的使用都是很模糊的,不但如此,有些开发者直接从网上拷贝一些使用https的“漏洞”代码,无形之中让客户端处在一种高风险的情况下。今天我们就对有关https使用的问题进行深入的探讨,希望能解决以往的困惑。对于https,需要了解其工作原理的可以参考https是如何工作的?,更多关于https的问题我会站在客户端的角度在后面陆陆续续的写出来。证书锁定

2017-06-20 18:39:12 1073

转载 根据Interceptor 分析 OkHttp(二)

Interceptor可以说是OkHttp的核心功能,它就是通过Interceptor来完成监控管理、重写和重试请求的。下面是一个简单的Interceptor,可以监控request的输入参数和response的输出内容。class LoggingInterceptor implements Interceptor { @Override public Response interc

2017-06-20 18:36:39 364

转载 根据Interceptor 分析 OkHttp(一)

在介绍Interceptor前需要理解几个概念Requests每个HTTP请求都包含一个URL,一个method(比如GET/POST),还有一系列的headers。Requests 还可能包含一个body:一个指定content type的data stream。ResponsesResponses是通过一个code(比如200代表请求成功、404

2017-06-20 18:32:40 660

转载 OkHttp关于https请求的设置

https请求由于证书验证问题,直接请求一般都会失败.一般是做证书验证处理或者忽略证书验证,这里介绍后者.解决方案从外文文章中看到,这里搬砖一下.希望对大家有帮助[java] view plain copyprivate static OkHttpClient getUnsafeOkHttpClient() {          try {

2017-06-20 18:26:19 2413

转载 【OkHttp3源代码分析】(二)Request的enqueue

前言如果没有阅读本系列文章的第一篇,请先阅读:【OkHttp3源代码分析】(一)Request的execute因为这两者之间是有关联的!enqueue执行流程源代码分析先来看看源代码: @Override public void enqueue(Callback responseCallback) { enqueue(resp

2017-06-20 12:40:44 1253

转载 【OkHttp3源代码分析】(一)Request的execute

简单使用OkHttp3阅读本文需要对OkHttp3的使用有一定了解。首先我们先看看如何简单进行一个get请求的Request。Request qqRequest = new Request.Builder() .url("http://www.qq.com")

2017-06-20 12:39:22 1718

转载 OKHttp源码解析

转载出处:http://frodoking.github.io/2015/03/12/android-okhttp/Android为我们提供了两种HTTP交互的方式:HttpURLConnection 和 Apache HTTP Client,虽然两者都支持HTTPS,流的上传和下载,配置超时,IPv6和连接池,已足够满足我们各种HTTP请求的需求。但更高效的使用HTTP可以让您的应用运行

2017-06-19 21:05:46 464

转载 OkHttp 3.7源码分析(五)——连接池

接下来讲下OkHttp的连接池管理,这也是OkHttp的核心部分。通过维护连接池,最大限度重用现有连接,减少网络连接的创建开销,以此提升网络请求效率。1. 背景1.1 keep-alive机制在HTTP1.0中HTTP的请求流程如下:这种方法的好处是简单,各个请求互不干扰。但在复杂的网络请求场景下这种方式几乎不可用。例如:浏览器加载一个HTML网页,HTML

2017-06-19 13:06:05 605

转载 OkHttp 3.7源码分析(四)——缓存策略

合理地利用本地缓存可以有效地减少网络开销,减少响应延迟。HTTP报头也定义了很多与缓存有关的域来控制缓存。今天就来讲讲OkHttp中关于缓存部分的实现细节。1. HTTP缓存策略首先来了解下HTTP协议中缓存部分的相关域。1.1 Expires超时时间,一般用在服务器的response报头中用于告知客户端对应资源的过期时间。当客户端需要再次请求相同资源时先比较其过期

2017-06-19 13:04:55 573

转载 OkHttp 3.7源码分析(三)——任务队列

前面的博客已经提到过,OkHttp的一个高效之处在于在内部维护了一个线程池,方便高效地执行异步请求。本篇博客将详细介绍OkHttp的任务队列机制。1. 线程池的优点OkHttp的任务队列在内部维护了一个线程池用于执行具体的网络请求。而线程池最大的好处在于通过线程复用减少非核心任务的损耗。多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间

2017-06-19 13:03:51 460

转载 OkHttp 3.7源码分析(二)——拦截器&一个实际网络请求的实现

前一篇博客中我们介绍了OkHttp的总体架构,接下来我们以一个具体的网络请求来讲述OkHttp进行网络访问的具体过程。由于该部分与OkHttp的拦截器概念紧密联系在一起,所以将这两部分放在一起进行讲解。1.构造Demo首先构造一个简单的异步网络访问Demo:OkHttpClient client = new OkHttpClient(); Request requ

2017-06-19 12:03:52 455

转载 OkHttp 3.7源码分析(一)——整体架构

OkHttp是一个处理网络请求的开源项目,是Android端最火热的轻量级框架,由移动支付Square公司贡献用于替代HttpUrlConnection和Apache HttpClient。随着OkHttp的不断成熟,越来越多的android开发者使用OkHttp作为网络框架。之所以可以赢得如此多开发者的喜爱,主要得益于如下特点:支持HTTPS/HTTP2/WebSocket(

2017-06-19 12:01:36 748

转载 OkHttp3源码分析[任务队列]

OkHttp系列文章如下OkHttp3源码分析[综述]OkHttp3源码分析[复用连接池]OkHttp3源码分析[缓存策略]OkHttp3源码分析[DiskLruCache]OkHttp3源码分析[任务队列]本文目录:线程池基础反向代理模型OkHttp的任务调度看过Wiki的都知道OkHttp拥有2种运行方式,一种是同步阻塞调用并直接返回的形式,另一种是通过内部线程

2017-06-19 11:48:04 896

转载 OkHttp3源码分析[DiskLruCache]

OkHttp系列文章如下OkHttp3源码分析[综述]OkHttp3源码分析[复用连接池]OkHttp3源码分析[缓存策略]OkHttp3源码分析[DiskLruCache]OkHttp3源码分析[任务队列]本文目录:Cache的简介LinkedHashMap原理OkHttp的文件系统本文主要是对put/get过程进行分析,注意缓存的判断依据不是本文,而是缓存策略

2017-06-19 11:47:17 1294 1

转载 OkHttp3源码分析[缓存策略]

OkHttp系列文章如下OkHttp3源码分析[综述]OkHttp3源码分析[复用连接池]OkHttp3源码分析[缓存策略]OkHttp3源码分析[DiskLruCache]OkHttp3源码分析[任务队列]本文专门分析OkHttp的缓存策略,应该是okhttp分析中最简单的一篇了HTTP缓存基础知识在分析源码之前,我们先回顾一下http的缓存Header的含义

2017-06-19 11:44:02 522

转载 OkHttp3源码分析[复用连接池]

OkHttp系列文章如下OkHttp3源码分析[综述]OkHttp3源码分析[复用连接池]OkHttp3源码分析[缓存策略]OkHttp3源码分析[DiskLruCache]OkHttp3源码分析[任务队列]1. 概述HTTP中的keepalive连接在网络性能优化中,对于延迟降低与速度提升的有非常重要的作用。通常我们进行http连接时,首先进行tcp握手,然后

2017-06-19 11:42:17 940

转载 OkHttp3源码分析[综述]

OkHttp系列文章如下OkHttp3源码分析[综述]OkHttp3源码分析[复用连接池]OkHttp3源码分析[缓存策略]OkHttp3源码分析[DiskLruCache]OkHttp3源码分析[任务队列]本文主要是综述与常识介绍OkHttp是一个高效的Http客户端,有如下的特点:支持HTTP2/SPDY黑科技socket自动选择最好路线,并支持自动重连拥有

2017-06-19 11:38:21 485

转载 Gradle tip #3-Task顺序

原文链接我注意到我在使用Gradle的时候遇到的大多数问题都是和task的执行顺序有关的。很明显如果我的构建会工作的更好如果我的task都是在正确的时候执行。下面我们就深入了解一下如何更改task的执行顺序。dependsOn我认为最直接的方式来说明的你task的执行时依赖别的task的方法就是使用dependsOn方法。 比如下面的场景,已经存在task A,我们要添

2017-06-15 13:20:20 459

转载 Gradle Tips#2-语法

在第一篇博客中,我讲解了关于tasks和构建过程中task的不同阶段。在写完这篇之后,我意识到我应该更详尽的讲述一下Gradle。弄懂语法很重要,免得我们碰到复杂的构建脚本的时候直接晕菜。这篇文章我就会讲解一些语法上的东西。语法Gradle脚本是使用Groovy语言来写的。Groovy的语法有点像Java,希望你能接受它。 如果你对Groovy已经很熟悉了,可以跳过这部分了。 

2017-06-15 13:19:45 247

转载 Gradle Tips#1-tasks

原文链接以这篇博客开始,我将写一系列关于Gradle的文章,用来记录接触Gradle构建脚本以来我所理解的Gradle。今天要讲的就是Gradle tasks以及task的配置和运行。可能有的读者还不了解Gradle task,用真实的例子来展示应该更容易被理解。下面的代码展示了三个Gradle task,稍后会讲解这三者的不同。 task myTask { pr

2017-06-15 13:19:11 289

转载 深入浅出Android Gradle构建系统(五:build type)

默认情况下,Android插件自动为项目构建一个debug和一个release版本的应用。这两个版本的不同主要体现在在非开发机上的调试功能以及APK的签名方式。debug版本使用一个用公开的name/password创建的key来签名(这样构建的时候就不需要提示输入密码了)。release版本在构建的时候不会进行签名,而是稍后在做。这个可以使用gradle中的BuildType对象来进行配置。

2017-06-15 13:18:10 414

转载 深入浅出Android Gradle构建系统(四:自定义构建过程之配置manifest)

Android Gradle插件提供了大量的DSL来自定义构建过程,这篇blog就来讲解如何在gradle中配置manifest。DSL提供了配置以下Manifest条目的功能:minSdkVersiontargetSdkVersionversionCodeversionNameapplicationId (更加方便有效的包名 -- [参考](http://tools.

2017-06-15 13:17:14 357

转载 深入浅出Android Gradle构建系统(三:build task)

构建任务(Build Tasks)java和Android通用的任务在build文件中使用了Android或者Java插件之后就会自动创建一系列可以运行的任务。Gradle中有如下一下默认约定的任务:1. assemble该任务包含了项目中的所有打包相关的任务,比如java项目中打的jar包,Android项目中打的apk2. check该任务包含了项目中所有验

2017-06-15 13:16:23 351

转载 深入浅出Android Gradle构建系统(二:项目结构)

上一篇这篇主要介绍使用Gradle的Android项目的目录结构,以及在Gradle中的配置Gradle采用约定优于配置的原则,最简单方式是使用一个默认的目录结构。当然目录结构是可以自己修改的。默认情况下,android gradle项目的代码都在src目录下,src下会有两个目录main和androidTest,其中main目录下是项目代码,androidTest目录下是测试

2017-06-13 17:11:25 276

转载 深入浅出Android Gradle构建系统(一:简介)

gradle是Android开发中引入的全新的构建系统,因为全新的构建系统主要是出于下面的目的:1. 方便复用代码和资源2. 构建多种版本的apk更见简单,不论是为多渠道构建不同的apk还是构建不同环境的apk(debug,release)3. 方便配置,扩展,自定义构建过程4. 良好的IDE集成为什么选择Gradle?Gradle主要有以下几个有点:1.

2017-06-13 17:10:25 306

转载 RxJava 2.0有什么不同(译)

ReactiveX 于2016.10.29 发布了正式版RxJava 2.0.0,但到我写本文章为止,还没有发现谁完整的翻译了官方的这篇文档 What’s-different-in-2.0。秉着旧事物迟早被新事物替代的想法,于是我用我没过6级的英语咬牙翻译下这篇文章,希望能帮助年轻的司机。但鉴于本人水平有限,翻译得不好,如果各位大神发现哪里写错了,欢迎发邮件通知我,我会在第一时间改正,本人

2017-06-13 16:14:06 901 2

转载 RxJava 2.0 使用详解

前言在上一篇博客中,提到了RxJava的一些比较核心的东西,还有与1.x版本的一些区别! 现在我们具体了解一下它的使用!使用最基本的的使用我们知道一个简单的RxJava的应用,需要一个观察者或者订阅者Observer,一个被观察者Observable,最后调用subscribe()方法将两者绑定起来! 示例: observer = new O

2017-06-13 15:57:52 571

转载 浅谈RxJava与2.0的新特性

简介说起 RxJava ,相信诸多 Android 开发者都不会陌生。作为一个知名的响应式编程库,从前年开始逐渐变得火热,从小众到被众多 Android 开发者们广泛引入与流传,其在 GitHub 的仓库截止笔者写这篇文章时,已经有16400+个 star 。甚至有一些大牛专门为 Android 写了 RxJava 的适配库,如RxAndroidRxBindingRxLifec

2017-06-13 15:55:06 925

转载 RxJava2.0在安卓中的二级缓存策略

转自: http://blog.csdn.net/qq_35064774/article/details/53449795前言在上一篇 安卓网络数据缓存策略 中,介绍了安卓中数据的缓存策略,这篇将用RxJava2.0 实现 Json/Xml 数据的二级缓存。 对于 RxJava2.0 不了解的,可以看一下这篇入门教程 从零开始的RxJava2.0教程1-4 。

2017-06-13 15:49:19 511

转载 从零开始的RxJava2.0教程(四)在安卓中的应用

1. 前言在第1 2 3篇中,我介绍了RxJava 2.0的基本用法。这一篇将介绍在安卓中的基本用法。 附上本系列教程的链接。 从零开始的RxJava2.0教程(一)基础 从零开始的RxJava2.0教程(二)操作符 从零开始的RxJava2.0教程(三)响应式的好处 从零开始的RxJava2.0教程(四)在安卓中的应用2. RxAndroidR

2017-06-13 15:47:02 329

转载 从零开始的RxJava2.0教程(三)响应式的好处

转载至 http://blog.csdn.net/qq_35064774/article/details/53065360 1. 前言在第一篇中,我介绍了RxJava的基础知识。第二篇中,我向你展示了操作符的强大之处。这一篇,我将向你介绍响应式的优点。 2. 错误处理到目前为止,我都没怎么介绍 onComplete 和 onError 方法。这两个方法用

2017-06-13 15:46:14 532

转载 从零开始的RxJava2.0教程(二)操作符

转载至 http://blog.csdn.net/qq_35064774/article/details/53057359 1. 前言在上一篇中,我介绍了RxJava 2.0的一些基础知识,同时也介绍了map()操作符。这篇blog将介绍许多RxJava中的操作符,RxJava的强大性就来自于它所定义的操作符。 首先先看一个例子: 2. 准备工作假设

2017-06-13 15:45:28 626

转载 从零开始的RxJava2.0教程(一)基础

转载至 http://blog.csdn.net/qq_35064774/article/details/53057332 1. 为什么写这篇文章RxJava这些年越来越流行,而上月末(2016.10.29)发布了2.0正式版,但网上大部分关于RxJava的教程都是1.x的。关于2.0的教程基本是介绍1.x和2.x的区别,对于RxJava的老用户来说,自然看看和1.x的区别

2017-06-13 15:44:49 550

转载 Android中RxJava+Retrofit2.0+MVP模式的整合

MVP的工作原理以上是MVP的工作原理图。其中大家注意的Presenter操作View和Mode都是通过接口来实现直接的调用。MVP的工作流程Presenter负责逻辑的处理,Model提供数据,View负责显示。 作为一种新的模式,在MVP中View并不直接使用Model,它们之间的通信是通过Presenter来进行的,所有的交互都发生在Presenter内部

2017-06-13 15:43:01 863

转载 给初学者的RxJava2.0教程(九)

前言好久不见朋友们,最近一段时间在忙工作上的事情,没来得及写文章,这两天正好有点时间,赶紧写下了这篇教程,免得大家说我太监了。正题先来回顾一下上上节,我们讲Flowable的时候,说它采用了响应式拉的方式,我们还举了个叶问打小日本的例子,再来回顾一下吧,我们说把上游看成小日本, 把下游当作叶问, 当调用Subscription.request(1)时, 叶问就说我要

2017-06-13 15:06:00 550

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除