android緩存機制


客戶端緩存機制是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.       在設置界面中提供刪除緩存的功能,點擊後刪除本機所有緩存.

 本地客戶端與服務器交互流程圖如下:

   

Android客戶端緩存機制(文字緩存和多媒體文件緩存) - zhou_411424 - 惜世缺麟的博客

 

 附錄1     (需要緩存的模塊)

臨時緩存:

模塊:新品->產品列表

模塊:新品->評論列表

模塊:新品->詳情

模塊:專題->本期

模塊:專題->精彩內容

模塊:漫畫->產品列表

模塊:漫畫->評論列表

模塊:漫畫->詳情

模塊:動畫->產品列表

模塊:動畫->評論列表

模塊:動畫->詳情

模塊:遊戲->產品列表

模塊:遊戲->評論列表

模塊:遊戲->詳情

模塊:寫真->產品列表

模塊:寫真->評論列表

模塊:寫真->詳情

 

 長期緩存:

模塊:專題->往期推薦

模塊:我的好友

模塊:個人

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章