okhttp源碼學習(三)基礎類的介紹

1.OkHttpClient:

OkHttp框架的客戶端,是一個用戶面板;通過它對OkHttp進行各種設置,網絡請求都是通過OkHttpClient完成的,每個OkHttpClient內部都維護了自己的任務隊列、連接池、Cache、攔截器等

2.Call:

描述一個實際的訪問請求,用戶的每一個網絡請求都是一個Call實例;實際實現是RealCall和AsyncCall

3.Dispatcher

任務調度器,維護了一個線程池,維護了三個雙端隊列,一個用於同步請求,兩個用於異步請求

4.ExchangeCodec

協議層,分別支持HTTP1.1和HTTP2.0,對HTTP請求編碼和響應解碼

5.Exchange

傳輸單個HTTP請求和響應對,處理ExchangeCodec這個實際I/O

6.ExchangeFinder

Exchange輔助查找類

7.RealConnection

描述一個物理socket連接,連接池中維護多個RealConnection實例

8.RealConnectionPool

連接池,存儲RealConnection連接

9.ConnectionPool

連接池,內部持有RealConnectionPool,通過它來及進行連接池的複用

10.StreamAllocation

由於Http/2支持多路複用,一個RealConnection可以支持多個網絡訪問請求,所以OkHttp又引入了StreamAllocation來描述一個實際的網絡請求開銷(從邏輯上一個Stream對應一個Call,但在實際網絡請求過程中一個Call常常涉及到多次請求。如重定向,Authenticate等場景。所以準確地說,一個Stream對應一次請求,而一個Call對應一組有邏輯關聯的Stream),一個RealConnection對應一個或多個StreamAllocation,所以StreamAllocation可以看做是RealConenction的計數器,當RealConnection的引用計數變爲0,且長時間沒有被其他請求重新佔用就將被釋放。
00261

11.Transmitter

發射器,更準確的說是用來通知和調度網絡請求的,作用在整個網絡請求生命週期;OkHttp的應用程序和網絡層之間的橋樑。此類公開高級應用程序層:連接,請求,響應和流;也是用來計算RealConnection的連接引用,判定是否爲空閒連接

12.RealInterceptorChain

攔截器鏈對象,操作整個鏈式,每一次調用一個攔截器

13.CookieJar

負責cookie的存取

最後獻上一份添加了註釋的源碼 https://github.com/525642022/okhttpTest/blob/master/README.md
哈哈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章