【问题标题】:ViewHolder Class and OOM ManagementViewHolder 类和 OOM 管理
【发布时间】:2014-01-24 12:03:48
【问题描述】:
使用 ViewHolder 类是否可以防止泄漏和大堆保留?
class holder
{
WeakReference<ImageView> img;
}
holder holdr = new holder();
holder.img = ...
displayImage(holder.img);
我应该将它作为参数传递,而不是声明为全局吗?
【问题讨论】:
标签:
java
android
memory-management
out-of-memory
【解决方案1】:
ViewHolder-Pattern 的开发主要是由于使用 ListAdapter 时的性能问题,该 ListAdapter 会为每个列表项反复显示一些具有相同结构的视图元素。
您的代码可能会在 ListView 滚动期间频繁调用 findViewById(),这会降低性能。即使适配器返回一个膨胀的视图进行回收,您仍然需要查找元素并更新它们。避免重复使用 findViewById() 的一种方法是使用“视图持有者”设计模式。
您还应该使您的 ViewHolder 类静态
您可以在Googles Dev Page 上阅读更多相关信息。
我也推荐看this Google IO video