J'utilise Glide pour charger des images dans mon application, je l'utilise pour montrer quelques images dans RecyclerView articles.Glide, Recyclerview et OOM
ceci est mon adaptateur pour 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;}
}
}
tout fonctionne bien, sauf Bitmap ou Drawable de ImageViews ne supprimera pas de mémoire lorsque des éléments sont détachés de la fenêtre ou mieux dire , lorsque les éléments ne sont pas visibles
et après le défilement pendant 1 minute, j'obtiens l'exception de mémoire.
comme vous pouvez le voir, je suis en utilisant la méthode Glide.clear()
pour ce problème, mais il ne fonctionne pas.
des suggestions sur ce problème?
Êtes-vous par hasard à l'aide d'un '' RecyclerView' dans un ScrollView '? – GVillani82
@ GVillani82 non c'est juste un RecyclerView, btw scrolling imbriqué est désactivé aussi –
Vous avez trouvé une solution à ce problème? –