2014-01-24 56 views
0

使用ViewHolder類可以防止泄漏和大堆保留?ViewHolder類和OOM管理

class holder 
    { 
     WeakReference<ImageView> img; 

    } 

holder holdr = new holder(); 
holder.img = ... 

displayImage(holder.img); 

我應該只是將它作爲參數傳遞,而不是將其聲明爲全局?

回答

0

ViewHolder-Pattern的開發主要是由於性能問題,因爲當您使用ListAdapter時,顯示一些具有相同結構並且每個列表項的結構都相同的View元素。

您的代碼可能會在滾動ListView時頻繁地調用findViewById(),這會降低性能。即使適配器返回回收的充氣視圖,您仍然需要查找元素並進行更新。圍繞重複使用findViewById()的方法是使用「視圖持有者」設計模式。

你也應該讓你ViewHolder級靜態

你可以閱讀更多關於它的Googles Dev Page。我也推薦看this Google IO video