点赞关注,不再迷路,你的支持对我意义重大!
🔥 Hi,我是丑丑。本文「Android 路线」| 导读 —— 从零到无穷大 已收录。这里有 Android 进阶成长路线笔记 & 博客,欢迎跟着彭丑丑一起成长。(联系方式在 GitHub)
前言
网络请求是 App 中非常重要的一个组件,而 OkHttp + Retrofit 作为官方和业界双重认可的解决方案,其学习价值不必多言;
在这篇文章里,我将分析 OkHttp 拦截器 的实现原理。如果能帮上忙,请务必点赞加关注,这真的对我非常重要。
目录
【图】
1. 前置知识
这篇文章的内容会涉及以下前置 / 相关知识,贴心的我都帮你准备好了,请享用~
2. OkHttp 分发器回顾
OkHttp 分发器主要处理的问题是同步 / 异步请求任务的分发过程。不管是同步请求还是异步请求,RealCall#getResponseWithInterceptorChain()是真正执行请求的地方:
已简化
public Response execute() throws IOException {
...
3、执行请求,阻塞等待响应返回
Response result = this.getResponseWithInterceptorChain();
...
return result;
}
异步请求:AsyncCall.java
5.1 线程池执行(已简化)
protected void execute() {
...
5.1.1 执行请求,阻塞等待响应返回
Response response = getResponseWithInterceptorChain();
if (retryAndFollowUpInterceptor.isCanceled()) {
5.1.2 请求取消
responseCallback.onFailure(RealCall.this, new IOException("Canceled"));
} else {
5.1.3 请求成功
responseCallback.onResponse(RealCall.this, response);
}
...
}
所以,这篇文章要说的其实就是 getResponseWithInterceptorChain() 方法里面的逻辑,这也是 OkHttp 最主要实现的功能。
3.
创作不易,你的「三连」是丑丑最大的动力,我们下次见!