前言
如果没有阅读本系列文章的第一篇,请先阅读:
【OkHttp3源代码分析】(一)Request的execute
因为这两者之间是有关联的!
enqueue执行流程源代码分析
先来看看源代码:
@Override
public void enqueue(Callback responseCallback) {
enqueue(responseCallback, false);//继续调用下面一层
}
void enqueue(Callback responseCallback, boolean forWebSocket) {
synchronized (this) {
//跟execute一样,防止多个子线程同时调用执行的方法。
if (executed) throw new IllegalStateException("Already Executed");
executed = true;
}
client.dispatcher().enqueue(new AsyncCall(responseCallback, forWebSocket));//重点!
}
看到重点的那一行:
client.dispatcher().enqueue(new AsyncCall(responseCallback, forWebSocket));//重点!
我们发现,它将我们的Callback接口封装到一个新的类AsyncCall中去。
我们来看看它的代码:
final <