我有一个包含许多行的ListView(大约200个)。
在ListView的每个项目中都有一个缩略图。
随着ListView滚动,图片将从互联网上下载。
问题在于,如果我快速滚动ListView,它会变得缓慢而且很快就会出现Out of Memory错误。
请您就如何避免这种做法提出建议?
答案 0 :(得分:2)
答案 1 :(得分:1)
基本流程是使用缓存系统: 将图像下载到缓存目录 - >将其读回内存缓存 - >将其缩小(如果图像大于显示它的图像视图) - >在图像视图中显示它。
官方的Android培训有一个很棒的tutorial以及如何创建这样的东西的完整源代码 它们通过在用户滚动时暂停后台任务来解决滚动延迟的常见问题。
内存不足通过LruCache解决。
或者,您可以使用Universal Image Loader之类的第三方库来解决此问题。
答案 2 :(得分:1)
您必须处理视图回收。这是一个非常重要的性能问题,您应该始终处理它。
请参阅this post,它将指导您完成此过程,处理视图回收并使用查看持有人模式。还see this。
回收意见的原因有很多:
锄头可以帮到你。