【问题标题】: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

    【讨论】:

      猜你喜欢
      • 2018-07-10
      • 2020-11-02
      • 2011-04-04
      • 2015-12-29
      • 2019-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多