
OkHttp拦截器Interceptor
OkHttp拦截器Interceptor接着OkHttp网络请求流程一文,我们知道OkHttp网络请求最后是通过RealCall的getResponseWithInterceptorChain()方法完成。该方法完整实现如下:1、拦截链OkHttp的核心就是拦截器,通过一组拦截器“递归”的完成网络请求中各个环节的处理。1.1、Interceptors责任链在getResponseWithInter
分类
开源项目与三方库的深度拆解:Android 组件库(BigImageViewer、CalendarView、AvatarView、FoldableLayout)、图表引擎(Mermaid)、虚拟化工具(ExHyperV)等。逐一分析设计思想、核心实现与源码结构,看懂一个库为什么这样写,而不只是怎么用。
共 108 篇文章

OkHttp拦截器Interceptor接着OkHttp网络请求流程一文,我们知道OkHttp网络请求最后是通过RealCall的getResponseWithInterceptorChain()方法完成。该方法完整实现如下:1、拦截链OkHttp的核心就是拦截器,通过一组拦截器“递归”的完成网络请求中各个环节的处理。1.1、Interceptors责任链在getResponseWithInter

OkHttp网络请求流程经过前面多篇博客的铺垫,终于来了。让我们继续深入OkHttp源码,了解OkHttp网络请求的实现。在OkHttp的基本用法一文中我们了解到,拿到Call实例后,有两种网络请求:异步和同步。1、异步请求从Call的enqueue(responseCallback: Callback)方法开始:从OkHttpClient调用newCall(Request)方法获取Call实例,

OkHttp之Headers请求头前面看了请求Request和请求体RequestBody类实现源码,最后我们来看看请求头Headers。Headers是HTTP请求和相应的头部所包含的信息:MIME、日期、缓存、Cookie等。1、HeadersOkHttp设计的Headers类结构如下,让我们仔细看看其中的实现。1.1、核心成员Headers类内部并没有用两个数组分别维护请求头中的name和v

OkHttp之RequestBody请求体继OkHttp之Request请求一文,看完Request类,内部存储了和请求相关的数据,并没有什么复杂的逻辑。接着看看RequestBody类内部实现是怎样的。1、RequestBodyRequestBody是抽象类。1.1、两个抽象方法有两个抽象方法contentType()和writeTo(sink: BufferedSink)。需要具体的Reque

OkHttp之Request请求了解了OkHttp的基本用法,不急着分析OkHttp网络请求流程。先熟悉一遍源码,了解请求相关的几个类:请求Request、请求体RequestBody以及请求头Headers。阅读源码,一方面搞懂内部实现,遇到坑可以知道在哪。另一方面,吸取代码设计经验,设计模式不是纸上谈兵。1、Request先看Request源码,熟悉Request请求的设计。1.1、请求核心成

OkHttp的基本用法看完Google官方的网络通信库Volley,再继续学习Android开发中大名鼎鼎的网络请求框架:OkHttp。深入学习一个优秀的框架之前,先了解它的基本用法,由浅入深,逐步探索。本篇简要介绍一下OkHttp的使用,关于拦截器详见OkHttp拦截器Interceptor。1、OkHttpOkHttp是Square公司开源的网络请求框架,Android开发中另一个网络请求框架

Volley网络图片加载控件NetworkImageView在Volley图片加载ImageLoader一文中了解了使用ImageLoader进行图片加载的原理。还有更简单的网络图片加载,在Volley加载网络图片一文第3节提到NetworkImageView,继承自ImageView通过简短的200行代码,结合ImageLoader实现一个简单易用的图片加载控件。让我们通过源码了解Network

Volley图片加载ImageLoader在Volley加载网络图片中了解到使用ImageLoader进行加载图片,本文来看看ImageLoader源码如何结合RequestQueue实现网络图片加载的。源码分两部分看,一部分是从ImageLoader的get(...)方法开启图片加载请求,另一部分是NetworkDispatcher的网络请求结果回调。1、图片加载请求总体的请求逻辑如下,大部分代
Volley加载网络图片通过前面几篇关于Volley的博客,对Volley框架算是比较熟悉了。Volley虽然小巧,应对Android开发中常见的图片加载也是丝毫不逊于专门的图片加载框架(不能显示动态GIF、不支持生命周期管理、不能动态监听网络状态 ... ...)。Volley图片加载三兄弟:ImageRequest、ImageLoader、NetworkImageView。1、ImageReq

添加三方依赖的正确方式项目开发中需要使用很多三方库:Json解析使用Gson、图片加载使用Glide、网络访问使用OkHttp和Retrofit等等等。各种各样的开源库,五花八门的版本号,到底用哪个呢?项目中选择合适的三方库很重要。不要再把三方库下载下来拷贝到项目的libs目录下集成,老的项目可能还在用这种方式,项目更新三方库有点麻烦。直接用Maven远程仓库(公开或私有仓库)集成更方便。1、Ma

Volley之CacheDispatcher缓存在源码解析Volley请求队列RequestQueue一文最后,我们看了向请求队列添加Request网络请求的逻辑。如果请求开启缓存,那么会先将请求放到缓存队列中处理,缓存队列没有或者缓存过期的话再放到网络请求队列中处理并返回。1、CacheDispatcherCacheDispatcher也是继承自Thread。1.1、CacheDispatche

Volley之网络请求NetworkDispatcher在源码解析Volley请求队列RequestQueue一文最后,我们捋了向请求队列添加Request网络请求的逻辑:对于没有缓存需求的网络请求,sendRequestOverNetwork(Request<T> request)放入网络请求队列mNetworkQueue中等待处理:1、NetworkDispatcherNetworkDispa

Volley请求队列RequestQueueVolley将所有的网络请求通过RequestQueue内部进行管理,这是一个很内敛的设计思想,先从Volley的入口开始颇析。1、创建请求队列通过Volley进行网络请求,首先得获取这个网络请求队列RequestQueue。1.1、通过Volley newRequestQueue(...)方法在Volley使用介绍一文中,我们通过Volley类提供的静
Volley使用介绍安卓开发要对几个网络开源库非常熟悉:OkHttp、Volley、Retrofit。先从轻量级的网络请求库Volley学习,它的源码不到1万行,麻雀虽小五脏俱全。1、Volley介绍Volley是Google官方2013年发布的Android平台的网络通信库。该开源框架目前看来已经非常稳定,大部分代码提交记录定格在3年前(不是没人维护了,而是不需要再修改)。GitHub:goog

AndroidStudio创建Library并打包aar开发中常常使用第三方的库,Java开发常常使用 .jar包,而Android使用的是aar包。看看如何创建Library项目如何创建,以及aar是如何打包。不同于普通的App项目,aar是Android中的Library。1、创建Android Library项目 File > New > New Project新建项目,由于没有Androi