Glide clear()方法无法解析求助:Android RecyclerView修复OOM时报错
解决Glide 4.x中
cannot find symbol method clear(ImageView)的问题 嘿,这个问题我之前刚好碰到过!你遇到的报错是因为Glide 4.x的API和旧版本(比如3.x)做了不少调整,直接调用Glide.clear(ImageView)的方式已经被移除啦。
原因分析
在Glide 4.x中,所有和请求相关的操作(包括清除请求)都需要通过RequestManager来完成,不再支持直接调用Glide类的静态clear方法。
正确的代码实现
你只需要修改onViewRecycled方法的代码,通过Glide.with()获取对应的RequestManager,再调用它的clear()方法即可:
@Override public void onViewRecycled(final ViewHolder viewHolder) { ImageView imageView = viewHolder.getImageView(); // 获取当前ImageView上下文对应的RequestManager,然后清除请求 Glide.with(imageView.getContext()).clear(imageView); }
如果你项目中使用了Glide注解处理器生成的GlideApp(这也是Glide 4推荐的用法),也可以写成:
@Override public void onViewRecycled(final ViewHolder viewHolder) { ImageView imageView = viewHolder.getImageView(); GlideApp.with(imageView.getContext()).clear(imageView); }
补充说明
这样修改后,就能在RecyclerView回收Item视图时,正确取消ImageView的图片加载请求并释放相关内存资源,刚好能帮你缓解OutOfMemoryException的问题哦。
内容的提问来源于stack exchange,提问作者EllieBubbles
相关产品推荐
相关产品推荐

