標籤:平台 就會 獲得 pos androi android hash hashcode 關於
在開發群裡有多位同學問到了關於Android中網路緩衝的問題。事實上不管是Android還是iOS,緩衝的大致思路都是同樣的,以下就幾種情況下的緩衝做一個大致的介紹。順便說一下有些開源的網路請求架構已經提供了對緩衝的支援。比如如今比較流行的okhttp。但是有的時候我們希望利用Android內建的網路請求api而且實現自己的網路緩衝策略。自己實現會更加靈活,更符合自己的 商務邏輯需求。
我把網路緩衝大致先分為兩種:
1、網路資料重新整理不頻繁的
在此種情況下網路資料資料的頻率並非非常高,而且對資料的即時顯示要求也不是非常高,比如一些電商平台的商品顯示列表資料。在這樣的情況下。資料比方每過1個小時才重新整理一次,這樣我們就不是必需每次都去從網路上請求資料,可給資料設定一個逾時值,當然這個逾時值應該小於資料重新整理的時間。比如假設資料重新整理是1小時一次。那麼我們能夠把緩衝的逾時值設定成30分鐘。10分鐘,或者5分鐘。這樣就會既能夠保證資料的高速顯示又不會影響使用者獲得最新的資料。在這樣的情況下的商務邏輯例如以下:
if(網路可用){if(本地存在相應緩衝&&緩衝沒有到期&&非重新整理操作){返回本地;}else{進行網路請求;儲存網路資料到本地;//(能夠使用檔案或sqllite)返回網路資料。}}else{if(重新整理操作){提示無網路狀態下重新整理操作不可用;}else{if(本地存在相應緩衝){返回本機快取}else{返回空。}}}
2、網路資料重新整理較頻繁的
假設網路資料重新整理較為頻繁,比方貼吧,說說什麼的。就不能用上面所說的緩衝機制,由於這樣的對資料的即時性要求比較高,這樣的情況下所須要的緩衝機制也不過略微改善一下使用者的使用體驗,讓使用者剛剛進來的時候有內容能夠看。這樣的情況下的緩衝邏輯例如以下:
if(網路可用){if(本地存在相應緩衝){在介面中先設定本機資料;}發出網路請求。網路請求資料存放區到本地。等網路請求結束用新的資料重新整理介面。}else{if(本地存在相應緩衝){在介面中設定本機資料。}else{介面中提示沒有資料。或者網路不可用。}}
以上就是較為經常使用的網路緩衝的兩種實現思路。另外要說明的就是把網路資料存放區到本地的詳細技術。能夠使用sqllite進行儲存,也能夠使用檔案進行儲存。假設使用檔案儲存體建議建立一個目錄,而且以每一個url相應的hashcode碼為檔案名稱,這樣儲存比較清晰,而且計算逾時值時能夠直接用目前時間減去檔案的改動時間就能夠了,假設是用sqllite資料庫儲存,儲存的時候應該儲存相應的url,時間戳記,和內容。
如有不妥歡迎拍磚。
Android網路緩衝的實現思路