Ich verwende Glide, um Bilder in meiner App zu laden, ich verwende es, um einige Bilder in RecyclerView Elemente anzuzeigen.Glide, Recyclerview und OOM
das ist mein Adapter für 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;}
}
}
alles funktioniert gut, außer Bitmap oder Drawable von ImageViews nicht aus Speicher entfernen, wenn Elemente aus dem Fenster oder besser sagen abgelöst werden , wenn Elemente nicht sichtbar sind.
und nach dem Scrollen für wie 1 Minute bekomme ich out of memory Ausnahme.
Wie Sie sehen können, verwende ich Glide.clear()
Methode für dieses Problem, aber es funktioniert nicht.
irgendwelche Vorschläge zu diesem Problem?
Sind Sie zufällig einen 'RecyclerView' in einem' Scroll mit '? – GVillani82
@ GVillani82 nein, es ist nur ein RecyclerView, btw verschachtelt Scrollen ist auch deaktiviert –
Sie haben eine Lösung gefunden? –