天天看點

android離線緩存技術

離線緩存是指在有網絡的狀态下将從伺服器擷取的網絡資料,如json 資料緩存到本地,在斷網的狀态下啟動app時讀取本地緩存資料顯示在界面上,常用的app(網易新聞、知乎等等)都是支援離線緩存的,這樣帶來了更好的使用者體驗。

如果能夠在調用網絡接口後自動緩存傳回的json資料,下次在斷網狀态下調用這個接口擷取到緩存的json資料的話,那該多好呢?volley做到了這一點。

是以,今天這篇文章介紹的就是使用volley自帶的資料緩存,配合universal-imageloader的圖檔緩存,實作斷網狀态下的圖文顯示。

android離線緩存技術

1.使用volley通路網絡接口

當接口通路成功以後,volley會自動緩存此次紀錄在/data/data/{package name}/cache/volley檔案夾中。 

android離線緩存技術

打開上面的檔案,可以發現接口的路徑和傳回值都被儲存在該檔案裡面了。 

android離線緩存技術

當在斷網狀态時,如何擷取到該接口的緩存的傳回值呢? 

使用requestqueue提供的getcache()方法查詢該接口的緩存資料

2.使用universal-imageloader加載圖檔

1.觀察上面的緩存檔案可以發現,volley隻緩存了接口路徑,并沒有緩存接口的傳入參數,是以如果做分頁查詢的話,使用此方法是不妥的。 

2.在測試過程中,依然發現有的時候擷取不到緩存資料,有的時候卻可以擷取到。對擷取緩存的代碼延遲加載能夠有效解決這個問題。 

3.如果考慮到緩存的過期政策,可以使用更好的asimplecache架構輔助開發。對緩存有更高要求的app,依然應該使用檔案緩存或資料庫緩存。

<a target="_blank" href="https://github.com/leoleohan/netcache-example">源代碼下載下傳</a>