![](/img/trans.png)
[英]Why in ViewHolder pattern should the ViewHolder class be static?
[英]ViewHolder Class and OOM Management
使用ViewHolder类是否可以防止泄漏和大堆保留?
class holder
{
WeakReference<ImageView> img;
}
holder holdr = new holder();
holder.img = ...
displayImage(holder.img);
我应该只是将其作为参数传递,而不是将其声明为全局参数吗?
之所以开发ViewHolder-Pattern,主要是因为当您使用ListAdapter时,由于性能问题,ListAdapter会为每个列表项反复显示一些具有相同结构的View元素。
您的代码可能在滚动ListView期间频繁调用findViewById(),这可能会降低性能。 即使适配器返回膨胀视图以进行回收,您仍然需要查找元素并进行更新。 重复使用findViewById()的一种方法是使用“视图持有者”设计模式。
您还应该将ViewHolder类设为静态
您可以在Googles Dev Page上了解更多信息。
我还建议您观看此Google IO视频
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.