Android網路緩衝的實現思路

來源:互聯網
上載者:User

標籤:平台   就會   獲得   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網路緩衝的實現思路

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.