使用 volley 和 glide 上传的图像未更新

Image not updating which is uploaded using volley and glide

我在我的应用程序中使用 Volley 库来上传图片,并使用 Glide 将图片设置为文本视图。我有更新图像的按钮,可以打开图库并让用户 select 图像。然后文件成功上传到特定文件夹,但图像保持不变。我还尝试注销和登录用户,这会删除 ShredPreferences 中的值,所有数据更新,但图像保持不变。服务器文件夹中的旧图像被新图像替换,但仍显示在应用程序中。它仅在从 Settings 中清除应用数据后更新。为什么会这样? glide 是否存储缓存数据?如何摆脱这个?

Glide 默认从服务器缓存图片。因此,如果您的 URL 没有变化,它将向您显示缓存中的图像。要解决此问题,您可以使用 RequestOptions:

RequestOptions requestOptions = new RequestOptions()
                        .diskCacheStrategy(DiskCacheStrategy.NONE)
                        .skipMemoryCache(true);

 Glide.with(this)
      .load(YOUR_IMAGE_URL)
      .apply(requestOptions)
      .into(YOUR_IMAGEVIEW);

编辑(毕加索)

如果您使用的是 Picasso,同样适用。在这种情况下,您应该使用:

Picasso.with(this)
                .load(YOUR_IMG_URL)
                .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)
                .networkPolicy(NetworkPolicy.NO_CACHE)
                .into(YOUR_IMAGEVIEW);