Android:在Adapter(RecyclerView)中手动清除Glide是一个好习惯吗?

ant*_*ony 2 android adapter android-recyclerview android-glide

我有一个Recyclerview管理新闻源.有很多图像.使用Android监视器,当我滚动此列表时,分配的内存总是增加!所以我添加了这两个覆盖方法(在我的适配器中):

@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);
    ...
}
Run Code Online (Sandbox Code Playgroud)

分配内存的结果更好(但不完美!).现在我有一个新问题,因为有时一些图像没有加载到我的新闻源中(它是完全随机的!)

谢谢你的帮助!

Sam*_*udd 6

打电话说清楚onViewRecycled应该没问题.如果在循环视图池中有许多视图(您几乎总是这样做),它可以节省内存并改善位图重用.

但是,要求明确onViewDetachedFromWindow表示可能并不理想.视图可能会被分离,然后重新连接而不会被重新绑定.如果发生这种情况,视图可能显示为空.

尝试删除对clearAdapterin 的调用onViewDetachedFromWindow,看看是否有帮助.