原创 42. OkHttp總結

整個OkHttp功能的實現就在這五個默認的攔截器中,所以先理解攔截器模式的工作機制是先決條件。這五個攔截 器分別爲: 重試攔截器、橋接攔截器、緩存攔截器、連接攔截器、請求服務攔截器。每一個攔截器負責的工作不一 樣,就好像工廠流水線,最終經過

原创 37. OkHttp之-攔截器-BridgeInterceptor

BridgeInterceptor主要做了兩件事,第一,請求發出之前補全請求頭;第二,響應收到之後解析cookie,並保存本地(cookieJar需要調用方自己實現存儲和獲取),如果是使用gzip返回的數據,則使用 GzipSource 包

原创 41. OkHttp之-代理

在使用OkHttp時,如果用戶在創建 OkHttpClient 時,配置了 proxy 或者 proxySelector ,則會使用配置的代理,並且 proxy 優先級高於 proxySelector 。而如果未配置,則會獲取機器配置的代理

原创 40. OkHttp之-攔截器-CallServerInterceptor

CallServerInterceptor ,利用 HttpCodec 發出請求到服務器並且解析生成 Response 首先調用 httpCodec.writeRequestHeaders(request); 將請求頭寫入到緩存中(直到調用

原创 39. OkHttp之-攔截器-ConnectInterceptor

這個攔截器的職責很簡單,就是獲取一份和服務器的連接,具體來說就是一個socket,然後執行下一個攔截器。 他的功能主要是StreamAllocation這個類完成的,StreamAllocation是在第一個攔截器:重定向攔截器創建的。

原创 35. OkHttp之-分發器

注:源碼爲OkHttp 3.10.0版本 在OkHttp內部存在一個Dispatcher的類,他的作用就是通過內部的一個線程池和幾個相關的數據結構來調度請求任務的。我們知道OkHttp的請求任務包含同步請求和異步請求兩種 同步execute

原创 36. OkHttp之-攔截器-RetryAndFollowUpInterceptor

分發器的邏輯執行完成就會進入攔截器了,OkHttp使用了攔截器模式來處理一個請求從發起到響應的過程。 代碼還是從我們上一篇提到的getResponseWithInterceptorChain開始 @Override publ

原创 38. OkHttp之-攔截器-CacheInterceptor

要理解CacheInterceptor,需要對http協議請求頭和響應頭有些瞭解 響應頭 說明 示例 Date 消息發送的時間 Date: Sat, 18 Nov 2028 06:17:41 GMT Expires 資源過

原创 32. 熱修復-QQ空間超級補丁方案

.class生成dex 注:在我們測試過程中,需要將class生成dex文件,這個生成的過程很煩人,可能會出現絕對路徑相對路徑的問題,原因不去深究了,畢竟不是今天的主題,嚴格按照我提供的方式可以保證dex成功生成 以下環境在mac電腦上執行

原创 34. 熱修復-QQ空間超級補丁方案-CLASS_ISPREVERIFIED

CLASS_ISPREVERIFIED 前邊提到過,QQ空間超級補丁的實現方式是將發生錯誤的class打包到一個單獨的dex中,然後將修復後的dex插入到系統的dexElements數組中,從而實現修復bug的效果。 我們知道,Androi

原创 33. 熱修復-QQ空間超級補丁方案-Android N兼容性

Android N混合編譯 ART 是在 Android KitKat(Android 4.0)引入並在 Lollipop(Android 5.0)中設爲默認運行環境,可以看作Dalvik2.0。 ART模式在Android N(7.0)之

原创 27.組件化項目結構搭建

一.組件化簡介 注:組件化開發只適用於大型團隊協作開發大型項目的場景,如果只是個人或者兩三人開發則沒有必要使用 什麼是組件化 業務按照功能劃分爲一個一個模塊,模塊之間沒有依賴關係,相互平行,模塊之間的通信通過一定技術手段實現的開發方式就叫組

原创 31. 插件化實現方式-加載插件中的資源文件

上一篇講了如何加載插件中的類:https://www.jianshu.com/p/ca8ba93f46d3,這篇說下插件資源的加載 安卓中的資源文件 安卓中的資源文件可以分爲兩種,一種是assets目錄下的資源,這裏的資源不會被編譯,而是完

原创 30. 插件化實現方式-加載插件中的類

什麼是插件化 插件化就是以插件下發的到本地的方式,然後通過宿主apk加載插件apk以實現相應的功能的方法,很多大型項目都採用了插件化的方式,如支付寶,微信,甚至最近在研究廣點通廣告sdk的時候偶然發現,連廣點通廣告sdk都使用了插件化開發(

原创 27.APT技術與JavaPoet

上一篇文章完成了組件化工程的搭建(https://www.jianshu.com/p/ed2c9f677e0e),這篇文章來說下APT和JavaPoet 下一篇我們會說下ARouter是如何實現頁面跳轉的(https://www.jians