OkHttp使用簡介:緩存
①、準備OkHttpClient對象:網絡
通常app中使用網絡能夠所有用它,能夠將它弄爲全局變量,這樣就能夠共用它的緩存和線程池了。app
②、準備Request對象:異步
很顯然它是採用Builder模式來構形成,它封裝了請求地址、請求方法、請求頭、請求體和標誌位信息:ui
③、發起請求:分爲同步請求和異步請求:
同步請求:會阻塞UI線程。spa
異步請求:也就是不會阻塞UI線程,在子線程中執行的。線程
總結:3d
OkHttp源碼剖析:對象
在分析源碼以前先來看一張圖:blog
程序會發一個Request請求給OkHttp的核心層進行處理,而在Okhttp中有一個最重要的概念:攔截器,它會將請求攔截以後再分發response給應用層,大致是這麼一個過程。下面先來分析一下同步請求:
因爲前兩步比較簡單,直接分析第三步:
先看一下newCall方法是作了啥事:
其實是生成了一個RealCall對象,因此最終execute()方法的執行就是在RealCall裏面,定位到它:
下面分析一下它的實現:
下面具體來看一下:
這裏以CallServerInterceptor攔截器爲例進行分析:
因此說它的底層其實也就是用基礎的東東來進行封裝滴。
接下來再來看一下它的異步請求:
因此進去看一下:
這個類中有三個重要的集合:
下面用圖來表示一下其整個過程: