OkHttp3
An HTTP &HTTP/2 client for Android and Java application.(HTTP網絡框架) compile 'com.squareup.okhttp3:okhttp:3.6.0'當前最新版本 OkHttp的最底層是使用Socket,而不是URLConnection,它經過Platform的Class.forName()反射得到當前Runtime使用的Socket庫。 OkHttp3使用場景特色:數據量大,網絡請求頻繁等。
OkHttp
中的重要類:1,OkHttpClient:OkHttp
請求客戶端,Builder
模式實現緩存
2,Dispatcher:
本質是異步請求的調度器,負責調度異步請求的執行,控制最大請求併發數和單個主機的最大併發數,並持有有一個線程池負責執行異步請求,對同步請求只是做統計操做。網絡
3,Request:
封裝網絡請求,就是構建請求參數(如url,header,請求方式,請求參數),Builder
模式實現併發
4,Response
:網絡請求對應的響應,Builder
模式實現,真正的Response
是經過RealCall.getResponseWithInterceptorChain()
方法獲取的。app
5,Call
:是根據Request生成的一個具體的請求實例,且一個Call
只能被執行一次。框架
6,ConnectionPool:Socket
鏈接池異步
7,Interceptor
:Interceptor
能夠說是OkHttp
的核心功能,它就是經過Interceptor
來完成監控管理,重寫和重試請求的。ide
8,Cache:
能夠自定義是否採用緩存,緩存形式是磁盤緩存,DiskLruCache
。源碼分析
無論是同步請求仍是異步請求,都是經過RealCall.getResponseWithInterceptorChain()方法獲取請求結 果的,只不過在前者在主線程中執行,然後者在線程池中的線程中執行的。
OkHttp3,網絡請求庫,同步請求RealCall.execute()和異步請求RealCall.enqueue(),請求任務都是交給Dispatcher調度請求任務的處理,請求經過一條攔截鏈,每個攔截器處理一部分工做,最後一個攔截器,完成獲取請求任務的響應,會將響應沿着攔截鏈向上傳遞。
Retrofit2.0+okhttp3緩存機制以及遇到的問題 - Picasso_L的專欄 - CSDN博客ui