Android:在Adapter(RecyclerView)中手动清除Glide是一种好的做法吗?
我有一个管理新闻提要的Recyclerview。有很多图像。有了Android monitor,当我在这个列表中滚动时,分配的内存总是在增加!因此,我添加了以下两种覆盖方法(在我的适配器中): 内存分配的结果更好(但不是完美的!)。现在我有了一个新问题,因为有时一些图片没有加载到我的新闻提要中(这是完全随机的!)Android:在Adapter(RecyclerView)中手动清除Glide是一种好的做法吗?,android,android-recyclerview,adapter,android-glide,Android,Android Recyclerview,Adapter,Android Glide,我有一个管理新闻提要的Recyclerview。有很多图像。有了Android monitor,当我在这个列表中滚动时,分配的内存总是在增加!因此,我添加了以下两种覆盖方法(在我的适配器中): 内存分配的结果更好(但不是完美的!)。现在我有了一个新问题,因为有时一些图片没有加载到我的新闻提要中(这是完全随机的!) 谢谢你们的帮助,伙计们 在onViewRecycled中调用clear应该可以。如果您在回收的视图池中有许多视图(您几乎总是这样做),它可以节省内存并改进位图重用 但是,在onview
谢谢你们的帮助,伙计们 在
onViewRecycled
中调用clear应该可以。如果您在回收的视图池中有许多视图(您几乎总是这样做),它可以节省内存并改进位图重用
但是,在onviewsdetachedFromWindow
中调用clear可能并不合适。可以分离视图,然后在不重新绑定的情况下重新附着。如果发生这种情况,视图可能会显示为空
尝试删除对
onViewDetachedFromWindow
中的clearAdapter
的调用,看看这是否有帮助。我同意,在onViewDetachedFromWindow
中清除视图是不安全的,因为如果支架尚未回收,可能无法重新绑定。
@Override
public void onViewDetachedFromWindow(RecyclerView.ViewHolder holder) {
super.onViewDetachedFromWindow(holder);
clearAdapter(holder);
}
@Override
public void onViewRecycled(RecyclerView.ViewHolder holder) {
super.onViewRecycled(holder);
clearAdapter(holder);
}
protected void clearAdapter(RecyclerView.ViewHolder holder) {
Glide.clear(holder.mImageView);
...
}