Glide NoResultEncoderAvailableException异常解决
首先将解决方法提出来:缓存策略DiskCacheStrategy.DATA。
使用Glide加载图片,版本是4.15.0,有天发现无法显示gif图片,原始代码如下:
Glide.with(context).load(本地资源路径).diskCacheStrategy(DiskCacheStrategy.ALL).into(imageView)
报错代码 DecodeJob.onResourceDecoded方法:
断点跟结果如下
从这里可以判断出,是进入了diskCacheStrategy.isResourceCacheable(isFromAlternateCacheKey, dataSource, encodeStrategy) 这个分支导致出错,继续跟,实现代码如下:DiskCacheStrategy.ALL的isResourceCacheable实现,此时dataSource=DataSource.LOCAL,故该方法返回true。
至此,错误原因找到了,加载gif的devoded没有使用Glide默认的解码工具,而是ByteBufferAnimationDecoder(https://github.com/penfeizhou/APNG4Android/tree/master 项目下的gif库),导致找不到正确的encoder,解决方案就是更换缓存策略DiskCacheStrategy.DATA。