安卓硬碟快取最佳方案

2021-07-09 23:09:28 字數 1965 閱讀 1294

部落格:郭神

簡單些一寫要記得東西。

開啟快取

呼叫dislrucache 中的open方法

public
獲取快取位址的方法

public file getdiskcachedir(context context, string uniquename)  else 

return new file(cachepath + file.separator + uniquename);

}

uniquename 是為了針對不同型別的資料進行區分而設定的乙個唯一值,比如網易快取路徑下看到的bitmap,object等資料夾。

獲取當前應用程式版本號,disklrucache 認為當應用程式有版本更新的時候,所有的資料都應該從網上重新獲取。

標準的open()方法這樣寫

disklrucache mdisklrucache = null;

try

} catch (ioexception e)

寫入快取

private boolean downloadurltostream(string urlstring, outputstream outputstream) 

return

true;

} catch (final ioexception e) finally

try

if (in != null)

} catch (final ioexception e)

}return

false;

}

new thread(new runnable()  else 

}mdisklrucache.flush();

} catch (ioexception e)

}}).start();

讀取快取

try 

} catch (ioexception e)

移除快取

try  catch (ioexception e)
其他api

除了寫入快取、讀取快取、移除快取之外,disklrucache還提供了另外一些比較常用的api,我們簡單學習一下。

1. size()

這個方法會返回當前快取路徑下所有快取資料的總位元組數,以byte為單位,如果應用程式中需要在介面上顯示當前快取資料的總大小,就可以通過呼叫這個方法計算出來。比如網易新聞中就有這樣乙個功能,如下圖所示:

2.flush()

這個方法用於將記憶體中的操作記錄同步到日誌檔案(也就是journal檔案)當中。這個方法非常重要,因為disklrucache能夠正常工作的前提就是要依賴於journal檔案中的內容。前面在講解寫入快取操作的時候我有呼叫過一次這個方法,但其實並不是每次寫入快取都要呼叫一次flush()方法的,頻繁地呼叫並不會帶來任何好處,只會額外增加同步journal檔案的時間。比較標準的做法就是在activity的onpause()方法中去呼叫一次flush()方法就可以了。

3.close()

這個方法用於將disklrucache關閉掉,是和open()方法對應的乙個方法。關閉掉了之後就不能再呼叫disklrucache中任何操作快取資料的方法,通常只應該在activity的ondestroy()方法中去呼叫close()方法。

4.delete()

這個方法用於將所有的快取資料全部刪除,比如說網易新聞中的那個手動清理快取功能,其實只需要呼叫一下disklrucache的delete()方法就可以實現了。

安卓快取檔案

首先我們要弄清楚幾個概念 getcachedir data data getfilesdir data data 一般來說,上面這兩個目錄是使用者不可見的,屬於應用內部,比如webview等一些快取就存放於getcachedir 我是分割線 getexternalfilesdir sdcard an...

安卓推送方案及比較

經常有朋友讓我推薦下 android 上面的推送方案,比較下各種方案的優缺點 效能 開發難度等,特意寫了這篇文章,這樣以後就不用一一回答了。方案一 google 官方的服務 但,通過對比研究發現 c2dm 機制存在以下缺點 1 gcm 要求android 系統必須是2.2以上的版本,所以對於不少2....

安卓客戶端快取機制

在手機客戶端的應用中,如果經常訪問伺服器,那麼不僅伺服器的壓力就會比較大,而且載入慢導致使用者體驗不是很好,現在快取可以解決這一問題,靈活的快取可以說不僅大大減輕了伺服器的壓力,而且因為更快速的使用者體驗而方便了使用者。採用快取,可以進一步大大緩解資料互動的壓力,我們簡略列舉一下快取管理的適用環境 ...