用戶端緩衝機制是android應用開發中非常重要的一項工作,使用緩衝機制不僅僅可以為使用者節省3G流量,同時在使用者體驗方面也是非常好的選擇.
緩衝機制分為兩部分,一部分是文字緩衝,另一部分是多媒體檔案快取.
快取檔案儲存策略:
1. 文字緩衝:
文字緩衝應該分為兩種,一種是更新比較頻繁的地區,一種是更新不頻繁的地區.
根據兩者的更新頻率區分它們的到期時間.
更新比較頻繁的地區,它的緩衝到期時間應該為應用程式內(即應用程式從開啟到關閉的這段時間).這種情況會有專門的快取檔案夾存放該類快取檔案,以及專門的快取資料庫表存放資訊.每次應用程式啟動的時候都會先將該類資料清空.
另一種很少更新的地區,它的緩衝不設定到期時間,而是提供一個按鈕或者Menu可以讓使用者選擇手動更新(如我的好友名單,我的訂閱,我的分享.等等….)
具體的文字緩衝劃分,詳見附錄1.
(1)通常情況下,我們與伺服器互動都是採用JSON格式擷取資料的,擷取的JSON資料僅僅是一段字串,我們可以考慮將這些字串使用檔案流寫入一個TXT,儲存到
SD卡中,在資料庫添加該資料的記錄.添加資料庫記錄時,提供兩個關鍵字段,一個是
請求的URL,另一個則是本地儲存後的檔案地址.日後每次向伺服器發起請求之前都會根據URL在資料庫中檢索.
該方法好處:降低系統資料庫資料量,不會出現資料庫滿了的現象.
缺點:IO操作頻繁,有時代碼書寫有誤會造成記憶體泄露等狀況.
(2)將JSON資料解析後裝入List<Map>對象中,然後遍曆List,將資料統統寫入相應的資料庫表結構中,以後每次向伺服器發起請求之前可以先在資料庫中檢索,如果有直接返回.
該方法好處:如果本地存在文字緩衝,那麼讀取緩衝速度快.
缺點:增加資料庫資料量.
2. 多媒體檔案快取
(1) 圖片緩衝
圖片的緩衝可以根據當前日期,時間為名字緩衝到SD卡中的指定圖片緩衝目錄,
同時資料庫中做相應記錄,記錄辦法可以採用兩個關鍵字段控制,一個欄位是該圖片的URL地址,另一個欄位是該圖片的本機地址.取圖片時根據URL在資料中檢索,如果沒有則串連伺服器下載,下載之後再伺服器中作出相應記錄.
(2) 視頻檔案快取
考慮到視頻檔案就是動畫片,每一集的大小應該超過20MB,如果邊播放邊下載的話
使用者的3G流量負擔是很大的,而且使用者看完一集動畫片,基本上不會再去看第二遍.
從這個狀況來看,建議不要對視頻檔案進行下載快取.另外也能降低程式員的編碼負擔.
當然我們可以為一些動漫發燒友提供一個下載動畫片的按鈕,供他們下載喜歡的動畫片,甚至也可以設定如果要下載動畫片會付出一些代價等等.
快取檔案刪除策略:
1. 每一個模組在每次用戶端自動或者使用者手動更新的時候刪除相應模組的快取檔案,並重新下載新的快取檔案.
2. 在設定介面中提供刪除緩衝的功能,點擊後刪除本機所有緩衝.
本地用戶端與伺服器互動流程圖如下:
附錄1 (需要緩衝的模組)
臨時緩衝:
模組:新品->產品列表
模組:新品->評論列表
模組:新品->詳情
模組:專題->本期
模組:專題->精彩內容
模組:漫畫->產品列表
模組:漫畫->評論列表
模組:漫畫->詳情
模組:動畫->產品列表
模組:動畫->評論列表
模組:動畫->詳情
模組:遊戲->產品列表
模組:遊戲->評論列表
模組:遊戲->詳情
模組:寫真->產品列表
模組:寫真->評論列表
模組:寫真->詳情
長期緩衝:
模組:專題->往期推薦
模組:我的好友
模組:個人