天天看點

Android 緩存機制與實作

Android開發本質就是手機和網際網路中的web伺服器之間進行通信,就必然要從服務端擷取資料,而反複通過網絡擷取資料比較耗時,特别是通路較多的時候,會極大的影響性能,Android中可通過二級緩存來減少頻繁的網絡操作,減少流量,提高性能。

二級緩存工作機制

當Android端獲得資料時比如擷取網絡中的圖檔,我們首先從記憶體中查找(按鍵Key查找),記憶體中沒有的再從磁盤檔案或者資料庫中去查找,若磁盤中也沒有才通過網絡擷取。當獲得來自網上的資料,就以Key-value對的方式線緩存到記憶體中(一級緩存),同時也緩存到磁盤檔案或者資料庫中(二級緩存)。注意,記憶體緩存會造成堆記憶體洩漏,是以一級緩存通常要嚴格要求控制緩存的大小,一半控制在系統記憶體的1/4.

緩存流程原理圖

主體有三個,分别是UI,緩存子產品和資料源(網絡)。它們之間的關系如下:

Android 緩存機制與實作

1.UI:請求資料,使用唯一的Key值索引Memory Cache中的Bitmap.

2.記憶體緩存:緩存搜尋,如果能找到Key值對應的Bitmap,則傳回資料,否則執行第三步。

3.硬碟存儲:使用唯一的Key值對應的檔案名,檢索SDCard上的檔案。

4.如果有對應檔案,使用BitmapFactory.decode()方法,解碼Bitmap并傳回資料,同時将資料寫入緩存。如果沒有對應的檔案,執行第五步。

5.下載下傳圖檔:啟動異步線程,從資料源下載下傳資料。

6.如下載下傳成功,将資料同時寫到硬碟和緩存,并将Bitmap顯示在UI中。

緩存的實作

Android 緩存機制與實作