標籤:
採用緩衝,可以進一步大大緩解資料互動的壓力,又能提供一定的離線瀏覽。
緩衝管理的適用環境:
1. 提供網路服務的應用
2. 資料更新不需要即時更新,哪怕是3-5分鐘的延遲也是可以採用緩衝機制。
3. 緩衝的到期時間是可以接受的(類似網易的新聞閱讀,支援離線離線閱讀)
這樣所帶來的好處:
1. 減小伺服器的壓力
2. 提高用戶端的響應速度(本機資料提取嘛)
3. 一定程度上支援離線瀏覽(可以參考網易的那個新聞應用,個人感覺離線閱讀做得非常棒。)
緩衝管理的原理:通過時間的設定來判斷是否讀取緩衝還是重新下載;斷網下就沒什麼好說的,直接去緩衝即可。
緩衝方法:
1.資料庫緩衝
這種方法是在下載完資料檔案後,把檔案的相關資訊如url,路經,下載時間,到期時間等存放到資料庫,當然我個人建議把url作為唯一的標識。下次下載的時候根據url先從資料庫中查詢,如果查詢到目前時間並未到期,就根據路徑讀取本地檔案,從而實現緩衝的效果。
緩衝的資料庫是存放在/data/data/<package>/databases/目錄下,是佔用記憶體空間的,如果緩衝累計,容易浪費記憶體,需要及時清理緩衝。
2.檔案法緩衝
使用File.lastModified()方法得到檔案的最後修改時間,與目前時間判斷是否到期,從而實現緩衝效果。實現上只能使用這一個屬性,沒有為其它的功能提供支援人員的可能。操作上倒是簡單,比較時間即可,而且取的資料也就是檔案裡的JSON資料而已。
檔案快取兩點說明:
1. 不同類型的檔案的緩衝時間不一樣。
籠統的說,不變檔案的緩衝時間是永久,變化檔案的緩衝時間是最大忍受不變時間。說白點,圖片檔案內容是不變的,一般存在SD卡上直到被清理,我們是可以永遠讀取緩衝的。設定檔內容是可能更新的,需要設定一個可接受的緩衝時間。
2. 不同環境下的緩衝時間標準不一樣。
無網路環境下,我們只能讀取快取檔案,為了應用有東西顯示,沒有什麼到期之說了。
WiFi網路環境下,緩衝時間可以設定短一點,一是網速較快,而是流量不要錢。
3G流量環境下,緩衝時間可以設定長一點,節省流量,就是節省金錢,而且使用者體驗也更好。
GPS就別說更新什麼的,已經夠慢的了。緩衝時間能多長就多長把。
當然,作為一款好的應用,不會死定一種情況,針對於不同網路變換不同形式的緩衝功能是必須有的。而且這個時間根據自己的實際情況來設定:資料的更新頻率,資料的重要性等。
-------------------------------圖片緩衝--------------------------
在Android中,有一個叫做LruCache類專門用來做圖片緩衝處理的。
它有一個特點,當緩衝的圖片達到了預先設定的值的時候,那麼近期使用次數最少的圖片就會被回收掉。步驟:
(1)要先設定緩衝圖片的記憶體大小,我這裡設定為手機記憶體的1/8,
手機記憶體的擷取方式:int MAXMEMONRY = (int) (Runtime.getRuntime() .maxMemory() / 1024);
(2)LruCache裡面的索引值對分別是URL和對應的圖片
(3)重寫了一個叫做sizeOf的方法,返回的是圖片數量。
(4)下面的方法分別是清空緩衝、添加圖片到緩衝、從緩衝中取得圖片、從緩衝中移除。
移除和清除緩衝是必須要做的事,因為圖片緩衝處理不當就會報記憶體溢出,所以一定要引起注意。
Android緩衝處理-->