天天看點

Android Bitmaps緩存

Android 開發中,bitmap是引起記憶體洩漏的罪魁禍首,關于bitmap的加載,緩存政策,官方已經給了很詳細的方法:

緩存之Memory Cache:

緩存的政策,是利用應用程式的配置設定的記憶體拿出适當的一部分利用LruCache算法進行緩存。關于用多少記憶體來緩存圖檔,這個要根據不同的圖檔,機型和 螢幕的分辨率來進行綜合考量,比如對于同一個圖檔,Galaxy Nexus 就比Nexus S需要的記憶體多。

以LruCache緩存示例代碼:

  

當加載圖檔的時候,如果緩存裡面有圖檔,就直接從緩存加載,否者就在一個background thread執行加載圖檔的操作:

緩存之Disk Cache:

對于圖檔比較小,圖檔個數比較少的,已經對加載效率比較快的要求,用Memory Cache無疑是最好的選擇,但是當對于,圖檔比較多的場景,比如,Gridview ,ListView加載大量的圖檔,記憶體就吃不消了,這時候,就需要用到磁盤等外部儲存設備來進行緩存。

關于使用Disk Cache的官方示例代碼如下:

memory Cache 在UI線程中執行,Disk Cache則是在Backound thread 中執行。

當螢幕旋轉,或者其他配置改變的時候,比如電話進來,彈出對話框,對Activity進行銷毀,重置的時候,需要對之前緩存進行儲存;

比如在一個Fragment中儲存緩存對象的代碼示例:

From :http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html#config-changes

繼續閱讀