我已经成功实现了 Android listview 中列表图像和列表项的延迟加载。我正在使用 Android 4.0+ 和 Java 7。
我遵循的算法是:
列表数据(包括图像 URL)在用户滚动列表时从 Internet 下载。
当滚动状态为空闲时,加载列表图像。
在后台线程中,首先在缓存中检查图像。如果缓存中不存在,则将它们下载并存储到缓存中。
最后在 listview 中将 image 设置为 imageview 并通知适配器。
唯一的问题是我不清楚何时回收位图。我尝试在很多地方使用 bitmap.recyle() 但出现以下错误:
java.lang.IllegalArgumentException:无法绘制回收位图
无法在此处添加大量代码。还有一些隐私问题。有人可以帮我解决这个问题吗?
编辑
我的应用程序大小从 727 KB(安装时)增加到 14 MB。回收位图后,在适配器的 getView() 中,我得到“无法从位图生成纹理”。谁能建议如何摆脱它?