OkHttp3源码详解(三) 拦截器,kotlin数组全排列

2. 发起请求

OkHttpClient.newCall实际是创建一个RealCall实例:

  1. @Override

  2. public Call newCall(Request request) {

  3. return new RealCall(this, request, false /* for web socket */);

  4. }

RealCall.enqueue实际就是讲一个RealCall放入到任务队列中,等待合适的机会执行:

  1. @Override

  2. public void enqueue(Callback responseCallback) {

  3. synchronized (this) {

  4. if (executed) throw new IllegalStateException(“Already Executed”);

  5. executed = true;

  6. }

  7. captureCallStackTrace();

  8. client.dispatcher().enqueue(new AsyncCall(responseCallback));

  9. }

从代码中可以看到最终RealCall被转化成一个AsyncCall并被放入到任务队列中,任务队列中的分发逻辑这里先不说,相关实现会放在OkHttp源码分析——任务队列疑问进行

你可能感兴趣的:(程序员,架构,移动开发,android)