概述
今天和后台对接图片验证码的时候,发现用Glide加载图片时无法更新。
原因:在使用Glide加载图片时,如果设置了缓存,那么无论图片是否有了更新,只要URL不变,那么就会使用内存缓存或者磁盘缓存的图片,导致加载出来的图片没有更新的问题。
解决方法一:和后台商量加一个时间搓,从而改变URL。
private String urlGetPic = SmallUtil.getUrl() + "/cyxmweb/appKaptcha/kaptcha.jpg";//获取验证码图片URL
/* 获取图片验证码信息*/ private void getPicData() { String url = urlGetPic + "?" + System.currentTimeMillis();//添加时间搓防止URL相同,调用缓存数据 RequestOptions requestOptions = new RequestOptions().placeholder(R.mipmap.loading).error(R.mipmap.default_pic); Glide.with(this).load(url).apply(requestOptions).into(iv); }
解决方法二:采取取消缓存的方式,这样是比较简单的操作
RequestOptions requestOptions = new RequestOptions().placeholder(R.mipmap.loading).error(R.mipmap.default_pic) .skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE);//不使用内存缓存,磁盘缓存 Glide.with(this).load(urlGetPic).apply(requestOptions).into(iv);
解决方法三:无论本地图片网络图片,都可以使用另一个方法,就是使用Glide的方法.signature(Key signature),通过创建一个签名,然后在图片更新的时候,更改签名,达到重新加载的效果。该签名可以是个String,可以是图片更新的时间
RequestOptions requestOptions = new RequestOptions().placeholder(R.mipmap.loading).error(R.mipmap.default_pic) .signature(new ObjectKey(System.currentTimeMillis()));//通过签名的改变刷新 Glide.with(this).load(urlGetPic).apply(requestOptions).into(iv);
最后
以上就是专一硬币为你收集整理的Glide加载相同URL图片无法更新的全部内容,希望文章能够帮你解决Glide加载相同URL图片无法更新所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复