java – 何时在android项目中回收位图?

我已成功实现
Android列表视图中列表图像和列表项的延迟加载.我使用的是Android 4.0和Java 7.

我遵循的算法是:

>当用户滚动列表时,列表数据(包括图像URL)从因特网下载.
>当滚动状态空闲时,将加载列表图像.
>在后台线程中,首先在缓存中检查图像.如果不存在于缓存中,则将它们下载并存储到缓存中.
>最后在listview中将图像设置为imageview,并通知适配器.

唯一的问题是我不清楚何时回收位图.我尝试在很多地方使用bitmap.recyle(),但是我收到以下错误:

java.lang.IllegalArgumentException:无法绘制回收的位图

在这里添加大量代码是不可能的.还有一些隐私问题.有人可以帮我这个吗?

编辑

我的应用程序大小从727 KB(安装时)增加到14 MB.
在我回收我的位图之后,在适配器的getView()中我得到“无法从位图生成纹理”.
任何人都可以建议如何摆脱它?

最佳答案 回收位图使其无法使用.只有在完成后才能回收.在您的情况下,这意味着它从缓存中被逐出.您还需要确保没有任何现有视图引用它.

点赞