OkHttp源码分析总结

2019-01-09  本文已影响0人  陈超_

先讲述一下Okhttp的如何使用。

创建一个OkhttpClient,一个Request。通过Client调用newCall方法,传入Request。返回一个Call对象,然后通过Call对象可以执行同步或者异步请求。最后返回请求后的回调

OkhttpClient可以设置连接超时时长,读取超时时长等信息,Request可以设置Url,以及请求头等信息。

在newCall以后返回的是一个Call对象。查看源码以后可以知道Call是一个接口,而真正实现方法的是RealCall这个子类

Call执行同步excute方法

    先判断Call是否已经被执行,如果已经执行过那么会直接抛出异常,否则添加到同步队列当中

    拦截器链获取http响应

Call执行异步enqueue方法  

    第一步也是先判断Call是否被执行

    然后创建一个实现了Runnable的AsyncCall实现类,添加到队列当中。

    添加的时候会去判断队列是否已经是最大的请求数,如果已经超过了请求数,那么会添加到等待的队列当中。如果没有超过,则直接添加到运行中的队列

      在执行完异步请求以后,会dispatch会执行finish,移除掉这个call,然后执行promoteCalls()方法,去判断等待执行的队列是否还有任务,并且没有超过请求书,如果满足继续执行请求

上一篇下一篇

猜你喜欢

热点阅读