close

相信在開發的過程中
大多數人都遇到了java.lang.OutOfMemory的情況吧
尤其是在處理大量圖片的時候更容易發生

 

這個情況是內存不足所引發的
當大量的圖片被cache住了
內存大量的被使用,app就會shotdown

 

以前我們都會用軟引用or弱引用來防止OOM的發生
但現在已不推薦用這種方式了
因為從Android 2.3 API9 開始 GC 的對象會更傾於軟引用和弱引用
這使得軟引用和弱引用變得不可靠
使用上要更加小心

 

而今天我們要介紹的LruCache---
就相當適合做cache的控管
他在Android-support-v4的包裡
而用法其實在Map<key,object>很像
差別就在於其可限定cache的大小
並且把最少使用的cache清除掉
自動的GC內部資料

 

建立方式也很簡單

new LruCache<Integer,Bitmap>(4*1024*1024); //4MB

由我們的需求來決定key and object要用什麼
最後再設定catch的size就可以了
如範例我們創立了一個4MB的LruCache

 

點我看LruCache的methods有哪些

 

這裡有一個方法可以得知最大內存空間

Runtime.getRuntime().maxMemory() / 1024 / 8

利用Runtime.getRuntime().maxMemory()
可以得到最大的內存空間
在除1024之後的單位為kb
上方的code意思是我們指定的大小為總內存的1/8

 

創立好LruCache後
接下來就看我們要怎樣利用他
其實不止圖片
因為vaule是object的型態
所以LruCache也可以用在其它我們有需要的方法喔

 

 

參考資料:
https://developer.android.com/reference/android/util/LruCache.html
http://blog.csdn.net/geekpark/article/details/9380933


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 顏澤偉 的頭像
    顏澤偉

    Willy's Fish教學筆記』

    顏澤偉 發表在 痞客邦 留言(0) 人氣()