Android的convertView,用还是不用?

2024-03-06

文章中多线程提高性能 http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html来自 Android 开发者博客,convertView用于Adapter.getItem()显示列表ImageView,这是通过HttpRequest下载的。然而,我也看到一些Android教程不使用convertView,然后在中膨胀一个新视图Adapter.getItem().

我想知道使用有什么好处convertView?它如何回收使用过的视图?使用的视图缓存在哪里?

我问这个问题是因为我没有使用过convertView在我的项目中,我想知道不使用它的成本。下面是我对图像列表视图的实现。

而不是使用convertView,我在中增加了一个新视图Adapter.getItem()。此外,我创建了一个包装类来保存每个项目中的人员listView。下载图像后,它将作为位图存储在每个列表项的包装类中(图像很小)。这样,我就可以避免重复下载同一张图片。这也避免了讨论中的竞争条件问题多线程提高性能 http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html。但我还是有点担心,用我的方法有没有什么不好的地方?


仅供参考:@Carl Anderson推荐的文章详细介绍了convertView如何在适配器中工作。本文建议的 Romain Guy 的 Google IO 是另一个很好的参考。

总之,使用convertView在空间和时间上都得到了优化。此外,我已经放弃了自己的imageDownloader并使用@CommonsWare推荐的Picasso。它就像一个魅力。


不重复使用的问题convertView正如你所说,你正在创造并膨胀一个新的View每次用户将一行滚动到视图中时。与重用现有视图相比,创建和扩充视图需要花费大量时间,而且您肯定会为此付出性能损失。

我的应用程序执行类似的操作 - 它在 ListView 中的行内使用 ImageView,并且这些 ImageView 由在后台下载的图像填充。作为对线程错误的调查的一部分,我关闭了视图的重用,当我这样做时,性能绝对是糟糕的。 ListView 代码针对视图重用进行了优化,如果您不坚持这一点,您的帧速率和可用性将会受到影响。

阅读此链接还帮助我更好地理解 ListViews 的工作原理:http://lucasr.org/2012/04/05/performance-tips-for-androids-listview/ http://lucasr.org/2012/04/05/performance-tips-for-androids-listview/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android的convertView,用还是不用? 的相关文章

随机推荐