網絡模塊設計思想
eoe裏的網絡訪問模塊都是經過靜態類的調用來實現的,來看分析一下簡單的設計過程。
首先是內容請求RequestCacheUtil類
這個類只有一個共有方法,就是getRequestContent這個拿內容的方法。這裏的方法都是一些靜態的方法,完成的簡單流程如下:在入口先判斷SD卡是否可用,然後確定緩存的目錄傳到下級,在getCacheRequest查看是否要拿緩存,如果不用直接從網絡中獲取,否則先看getStringFromSoftReference的軟緩存裏面有沒有緩存這個內容,如果有直接拿取返回上層。如果沒有就進入二級緩存本地,這個二級緩存使用Sqlite數據庫保存緩存的數據文件路徑,如果查詢到數據還要判斷一下文件時間是否過期,如果沒有過期返回上層使用,如果過期刪除緩存進入下一級網絡獲取。網絡獲取後更新三種緩存。
如圖:
如上圖getWeb的具體實現類類HttpUtils,也是一個靜態的類,主要包含以下功能:
postByHttpURLConnection | 使用HttpURLConnection連接的Post方法請求 |
getByHttpURLConnection | 使用HttpURLConnection連接的Get方法請求 |
postByHttpClient | 使用HttpClient連接的Post方法請求 |
getByHttpClient | 使用HttpClient連接的Get方法請求 |
isMobileDataEnable 判斷mobile網絡是否可用
isWifiDataEnable 判斷wifi網絡是否可用
setMobileDataEnabled 設置Mobile網絡開關
isNetworkRoaming 判斷是否爲漫遊
類包的結構:
具體的代碼查看eoe的開源包,有錯誤請指正,有問題可以留言