天天看點

android icon緩存,Android使用緩存優化ListView

Android使用緩存優化ListView

來源:csdn

作者:furongkang

字型:【小 中 大】

時間:2011-11-26

點選:623

ListView調用Adapter的getView方法擷取每一個Item布局,将這些已經獲得的Item布局放入緩存,不僅可以提高程式的反應速度,而且可以節省許多流量,将資料進行緩存有兩種方法是:一種是将sd卡緩存,另一種是記憶體緩存,在此分别進行示範。

sd卡緩存:

sd卡緩存是将下載下傳的資料儲存到sd卡中,當需要再次使用資料時,就先判斷sd卡中是否存在這些資料,如果存在的話,就直接從sd卡中讀取,如果不存在的話就從網上下載下傳,然後儲存到sd卡中。

記憶體緩存:

記憶體優化是将擷取到的資料存入到Map集合中,如果再次引用此資料,就直接從Map集合中擷取,這樣會導緻一個問題,如果Map集合中的資料特别多,比如

存取了100萬條資料,這樣有可能就會導緻記憶體溢出。這是因為Map集合是強引用的集合,如何不把Map集合置為空的話,這個集合Java虛拟機就不會把

它回收掉,當Map中的資料大小超過了記憶體大小就會導緻記憶體溢出。為了避免這種異常我們要使用軟引用softreference,軟引用和強引用的差別如

下:

1、softreference 他是java虛拟機給我們提供的一個包裝類型。

在包裝類型裡面的對象,一般情況下,java虛拟機會盡量長時間的保留這個對象。

當java虛拟機記憶體不足的時候,java虛拟機就會回收softreference裡面的對象。

2、hardreference 預設new出來的對象都是這種強應用的類型。

隻要一個對象還保留的有引用,他就不會被垃圾回收。

Map map;

核心代碼:

sd卡緩存:

記憶體緩存: