【发布时间】:2016-04-12 11:24:39
【问题描述】:
我有一个显示 CardView 的 RecyclerView。 在 CardView 中有两个项目:
- 文本视图
- 我的带有底层位图的自定义视图
位图是动态创建的。
在上下滚动之后,我得到了 OutOfMemoryException。
我不知道如何处理它? 我应该使用 LRUCache 吗? 或者像 Picasso 这样的第三方库——它似乎只适用于 url 和 id?
任何帮助表示赞赏
更新:
public class ManageProfileAdapter : RecyclerView.Adapter
{
public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
{
ManageProfileViewHolder vh = holder as ManageProfileViewHolder;
vh.Caption.Text = profiles[position].Name;
vh.Thumbnail.SetProfile(profiles[position].Profile);
}
}
缩略图类是从 View 派生的自定义类(包括位图):
public class ThumbnailView : View
{
private Canvas DrawCanvas;
private Bitmap CanvasBitmap;
}
位图绘制在画布上。
【问题讨论】:
-
能否请您至少向我们提供 RecyclerView 的 ViewAdapter 代码?可能是您在该适配器中处理了卡视图,在视图之外时保留了许多位图而不是再次释放内存。
-
Picasso 还可以处理本地图像,无论是来自资产目录还是本地设备存储
标签: android bitmap android-recyclerview android-custom-view