我们知道okhttp进行异步请求的时候是一个Okhttp的Call对象执行enqueue进行异步请求,然后会进入Call对象的实现列RealCall的enqueue方法,
RealCall.java:
@Override public void enqueue(Callback responseCallback) {
synchronized (this) {
if (executed) throw new IllegalStateException("Already Executed");
executed = true;
}
captureCallStackTrace();
eventListener.callStart(this);
// 获取分发器执行enqueue方法传入AsyncCall对象
client.dispatcher().enqueue(new AsyncCall(responseCallback));
}
// AsyncCall是NamedRunnable的子类,会重写NamedRunnable的execute方法
final class AsyncCall extends NamedRunnable {
private final Callback responseCallback;
AsyncCall(Callback responseCallback) {
super("OkHttp %s", redactedUrl());
this.responseCallback = responseCallback;
}
String host() {