Android 開發優化 知識點
阿新 • • 發佈:2019-01-28
③ 硬引用 LruCache: Android DiskLruCache完全解析,硬碟快取的最佳方案
DiskLruCache
原理-- 獲取程序最大執行記憶體,給快取設定一個最大佔用記憶體值,超過這個記憶體則把最少使用的圖片移除掉。
實現:
寫入
① 檔案儲存路徑
/sdcard/Android/data/<application package>/cache 或者是 /data/data/<application package>/cache
② 儲存快取檔案的檔名 Url對應的MD5值
③ 得到 DiskLruCache 物件,通過
DiskLruCache.open(File directory, int appVersion, int valueCount, long maxSize)返回
④ 以檔名為引數得到Editor 物件 mDiskLruCache.edit(key);
⑤ 以 editor.newOutputStream(0) 得到輸出流,以imageUrl、outputStream為引數 通過Http下載圖片寫入到快取中。在子執行緒中進行
讀取
① 通過 url 得到MD5值,通過mDiskLruCache.get(key) 得到 Snapshot 物件,通過snapShot.getInputStream(0);得到輸入流,然後的事情就是 轉換成 Bitmap 顯示。
移除快取: mDiskLruCache.remove(key);
2. 優化工具
① Android程式碼優化——使用Android lint工具
在Android Studio要執行Lint工具:“Analyze”選單中選擇“Inspect Code…”。
5. Android App定位和規避記憶體洩露方法研究
如何定位和解決Andorid的記憶體溢位問題(大總結)
DiskLruCache
原理-- 獲取程序最大執行記憶體,給快取設定一個最大佔用記憶體值,超過這個記憶體則把最少使用的圖片移除掉。
實現:
寫入
① 檔案儲存路徑
/sdcard/Android/data/<application package>/cache 或者是 /data/data/<application package>/cache
② 儲存快取檔案的檔名 Url對應的MD5值
③ 得到 DiskLruCache 物件,通過
DiskLruCache.open(File directory, int appVersion, int valueCount, long maxSize)返回
④ 以檔名為引數得到Editor 物件 mDiskLruCache.edit(key);
⑤ 以 editor.newOutputStream(0) 得到輸出流,以imageUrl、outputStream為引數 通過Http下載圖片寫入到快取中。在子執行緒中進行
讀取
① 通過 url 得到MD5值,通過mDiskLruCache.get(key) 得到 Snapshot 物件,通過snapShot.getInputStream(0);得到輸入流,然後的事情就是 轉換成 Bitmap 顯示。
移除快取: mDiskLruCache.remove(key);
2. 優化工具
① Android程式碼優化——使用Android lint工具
在Android Studio要執行Lint工具:“Analyze”選單中選擇“Inspect Code…”。
5. Android App定位和規避記憶體洩露方法研究
如何定位和解決Andorid的記憶體溢位問題(大總結)