我正在使用一个应用程序,用户可以更改他的个人资料图片,这个图片实际上存储在服务器中,如下所示:http://serveraddress.com/user-pictures/user_id,问题是因为volley使用了图像缓存用户已更改配置文件图像(其上传到服务器),正在显示缓存的图像而不是"更新的"图像。
我尝试从缓存中删除图片,并使图片网址无效(因为它相同),但它无效。
getRequestQueue().getCache().invalidate("http://serveraddress.com/user-pictures/122432", true); //invalidate
mLRUCache.remove("http://serveraddress.com/user-pictures/122432");
我很感激任何建议。 提前谢谢。
答案 0 :(得分:0)
我遇到了同样的问题。经过大量的研究,我发现volley在磁盘上缓存图像的方式是根据HTTP缓存头。如果缓存标头说图像仍然有效,则不会再次从服务器请求它。由于您存储的新图像具有相同的名称,因此凌空将不会从服务器请求图像。所以,我应用了这个简单的逻辑:
让我们说,最初你的照片路径是xxx.pic.jpg。
从任意随机数生成器函数中获取一个随机数,即x。只需将x附加到您的个人资料图片路径,即图像的新路径为:xxx.pic.x.jpg。它应该解决问题:)