问题描述:今天编写设置头像代码时发现裁剪之后的照片使用setImageURI加载图片时,第一次能够加载成功,第二次之后无法正常加载成功,退出App重新进入又能正常加载,第二次又不行。
原因分析:经过多方排查之后发现,是因为ImageView.setImageURI会对传入的uri进行缓存,如果两次传入的uri是一样的,即两次传入图片地址一样的话,setImageURI会判断为同一图片加载两次,会直接加载之前上一次的缓存,结果就出现第一次加载成功,第二次却失败的情况。
解决方案:
方案一:确保每次传入的图片地址不一样,用日期命名图片等,避免setImageURI判定为同一张图片。
方案二:使用setIamgeURI之前先加载一个null,清除原先的缓存,之后再加载图片就不会有缓存了。
APP 代码:
image.setImageURI(null)
image.setImageURI(Uri.fromFile(File(path)))
方案三:不适用setIamgeURI,用别的图片加载方式代替。(如果使用setImageBitmap的话需要注意图片的recycle问题)

本文介绍了在Android开发中遇到的ImageView加载图片异常情况,问题出现在setImageURI对相同URI的图片进行缓存导致的。通过分析,提出了三种解决方案:更改图片文件名以避免URI相同、设置null清除缓存后再加载、以及考虑使用其他图片加载方式。这些方法可以帮助开发者避免图片加载错误,提高应用的用户体验。
7622

被折叠的 条评论
为什么被折叠?



