在我的Android应用程序中,用户可以上传他们的个人资料图片。它成功地在服务器上上传了新图像,但它仍然在应用程序中显示旧图像。当然,我在应用程序中通过HTTP重新加载图像,但它仍然显示旧图像。
关闭应用程序并重新启动后,它会在Android应用程序中显示上传的图像。所以,我认为它应该是像网站一样的缓存问题。我上传图片后尝试删除缓存,但仍然无法正常工作。
我已经搜索过来解决这个问题,但我找不到解决方案。
新图像是否保存在Android内存中?有人有想法吗?谢谢。
以下是代码。
public static void download(String url, ImageView imageView)
{
Bitmap cachedImage = mImageCache.get(url);
if(cachedImage != null)
{
imageView.setImageBitmap(cachedImage);
}
else if(cancelPotentialDownload(url, imageView))
{
mImageCache.clear();
ImageDownloaderTask task = new ImageDownloaderTask(url, imageView);
DownloadedDrawable downloadedDrawable = new DownloadedDrawable(task);
imageView.setImageDrawable(downloadedDrawable);
task.execute(url);
}
}
答案 0 :(得分:2)
检查您的应用程序正在使用的http客户端是否具有禁用缓存的选项。
如果您正在使用HttpURLConnection
,请参阅此博客文章 - http://android-developers.blogspot.sg/2011/09/androids-http-clients.html
在冰淇淋三明治中,我们正在添加一个响应缓存。安装缓存后,将通过以下三种方式之一满足HTTP请求:
完全缓存的响应直接从本地存储提供。由于不需要进行网络连接,因此可立即获得此类响应。
有条件地缓存的响应必须由Web服务器验证其新鲜度。客户端发送一个请求,例如“如果自昨天以来它已改变则给我/foo.png”,并且服务器回复更新的内容或304 Not Modified状态。如果内容未更改,则不会下载!
从网络上提供未缓存的回复。这些响应将存储在响应缓存中以供日后使用。
答案 1 :(得分:1)
当服务器上传完成并且应用程序返回上一个活动时重新加载图像,所以@Ravind是对的,你必须在onResume()中重置ImageView,
imageView.setImage(yourImage);
答案 2 :(得分:0)
将此调用添加到您的http .enableHttpResponseCache