【发布时间】:2017-08-08 03:13:49
【问题描述】:
我正在使用 Glide 在我的应用中加载图像,我正在使用它在 RecyclerView 项目中显示一些图像。
这是我的 recyclerview 适配器:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.Holder>{
private Context context;
private ArrayList<DataImages.DataImage> images;
public MyAdapter (Context context, ArrayList<DataImages.DataImage> images){
this.context = context;
this.images = images;
}
@Override
public Holder onCreateViewHolder(ViewGroup viewGroup, int type){
return new VollipsHolder(LayoutInflater.from(context).inflate(R.layout.m_layout, viewGroup));
}
@Override
public void onBindViewHolder(Holder holder, int position){
DataImages.DataImage dataImage = images.get(position);
Glide.with(context)
.load(dataImage.thumb)
.skipMemoryCache(true)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.placeholder(R.drawable.loading_placeholder)
.dontAnimate()
.into(holder.getImageView());
}
@Override
public void onViewRecycled(Holder holder) {
super.onViewRecycled(holder);
Glide.clear(holder.getImageView());
}
@Override
public int getItemCount(){return images.size();}
class Holder extends RecyclerView.ViewHolder{
private ImageView imageView;
public Holder (View view){
super(view);
imageView = (ImageView) view.findViewById(R.id.m_image);
}
public ImageView getImageView(){return imageView;}
}
}
一切正常,除了 ImageViews 中的 Bitmap 或 Drawable 不会从 memory 中删除,当项目从窗口或更好的说, 当项目不可见时。
滚动 1 分钟后,我得到 内存不足异常。
如您所见,我正在使用Glide.clear() 方法解决此问题,但它不起作用。
对这个问题有什么建议吗?
【问题讨论】:
-
您是否偶然在
ScrollView中使用了RecyclerView? -
@GVillani82 不,它只是一个 RecyclerView,顺便说一句,嵌套滚动也被禁用了
-
你找到解决办法了吗?
-
@Martín 不,我没有:(
-
你的图片尺寸是多少?
标签: android android-recyclerview out-of-memory android-glide