use*_*386 5 android listview android-listview
在Android Developer Developer Blog的Multithreading For Performance一文中,convertView用于Adapter.getItem()显示ImageView通过HttpRequest.Yet下载的列表,我也看到一些不使用的Android教程,convertView只是在中添加一个新视图Adapter.getItem().
我想知道使用的优点是convertView什么?它如何回收使用过的视图?使用的视图缓存在哪里?
我问这个问题,因为我没有convertView在我的项目中使用,我想知道不使用它的成本.下面是我对listView图像的实现.
而不是使用convertView,我膨胀了一个新的视图Adapter.getItem().此外,我创建了一个包装类来保存每个项目中的工作人员listView.下载图像后,它将作为位图存储在每个列表项的包装类中(图像很小).这样,我可以避免重复下载同一图像.这也避免了多线程性能中讨论的竞争条件问题.但是我仍然有点担心,使用我的方法有什么不好的问题吗?
仅供参考:@Carl Anderson推荐的文章提供了有关convertView如何在适配器中工作的详细信息.本文中建议的Romain Guy的Google IO是另一个很好的参考.
总之,使用convertView可以优化空间和时间.此外,我已经放弃了自己的imageDownloader并使用了@CommonsWare推荐的Picasso.它就像一个魅力.
不重复使用的问题convertView在于,正如您所说,View每次用户将一行滚动到视图中时,您都在创建和膨胀新的.与重用现有视图相比,创建和膨胀视图需要花费大量时间,而且您肯定会为其带来性能损失.
我的应用程序做了类似的事情 - 它在ListView中的行内部使用ImageViews,并且这些ImageViews由在后台下载的图像填充.作为我对线程错误的调查的一部分,我关闭了视图的重用,当我这样做时,性能非常糟糕.ListView代码针对视图重用进行了优化,如果您不能坚持这一点,您的帧率和可用性将受到影响.
阅读此链接还有助于我更好地了解ListView的工作方式:http: //lucasr.org/2012/04/05/performance-tips-for-androids-listview/
| 归档时间: |
|
| 查看次数: |
4341 次 |
| 最近记录: |