问题:在一个项目中使用了Glide加载本地图片,比如这里我选择保存的图片是:
//保存图片的地址
private String imgSave = "/" + Environment.getExternalStorageDirectory().getPath()
+ "/fitness/" + "addpublic.png";
然后我加载这张图片,ok成功了,之后我改变这张图片的内容,但是还是原来的地址,由于glide的缓存机制,相同地址的内容没有更新。
Glide的缓存机制分为两级,第一级是内存缓存,然后第二级是硬盘缓存。缓存的过程首先是在内存中缓存,然后将加载的图片资源缓存到硬盘,这样就可以在随后的再次加载中使用缓存了,Glide使用缓存时候首先要检查内存这一层级是否缓存了相应的缓存,如果有,则直接使用,如果没有,则深入到硬盘缓存中检查是否有,如果有,则加载之,如果到这一步骤还没有,那么就只能作为一个全新的资源加载了。
即Glide先从内存缓存中查找,再从硬盘缓存中查找,只有这两个其中一个有缓存,都不会重新去本地再次获取。
解决方案:
Glide.with(AddComActivity.this)
.load(imgSave)
.skipMemoryCache(true)//跳过内存缓存
.diskCacheStrategy(DiskCacheStrategy.NONE)//不要在disk硬盘缓存
.into(imgAddCom);
加载图片的时候,添加了2行,跳过内存缓存和不在硬盘缓存,让他重新去本地获取图片~这样就阔以啦~。