所以在某些时候我需要在我的应用程序中清除Picasso缓存,但是当我清除它时,图像是相同的。如果图像URL发生变化,则会拉出新图像,但如果图像网址相同,则旧图像会保留。
有人可以帮我清除缓存,以便删除图像吗?
这就是我设置毕加索的方式:
Cache picassoCache = new LruCache(MEMORY_CACHE_SIZE);
picassoCacheClearer = new PicassoCacheClearerImpl(picassoCache);
picasso = new Picasso.Builder(context)
.downloader(new OkHttpDownloader(context.getCacheDir(), IMAGE_CACHE_SIZE))
.memoryCache(picassoCache)
.build();
然后尝试通过以下方式清除它:
cache.clear();
下面是实际加载图片的代码:
picasso.load(carouselAction.getImageUrl())
.placeholder(R.drawable.ic_placeholder)
.into(viewHolder.plistImageView);
我可以看到现在不推荐使用Invalidate()方法,那么我还能做什么呢?
答案 0 :(得分:1)
我遇到了同样的问题,我用这种hacky方法解决了这个问题。要强制它刷新我只会更改为其添加版本标记的URL。这通常用于Web开发,以确保不从缓存中使用内容。
例如,我将从example.com/mypic.png?version=1234中加载图像 并且由于url不同,因此不会从缓存中加载它。
String versionTag = "?version=" + new Date().getTime();
picasso.load(carouselAction.getImageUrl() + versionTag)
.placeholder(R.drawable.ic_placeholder)
.into(viewHolder.plistImageView);
答案 1 :(得分:0)
因此找出了问题所在。事实证明,这个旋转木马正在使用不同的毕加索实例。
我还必须扩展OkHttpDownloader以公开getClient()方法,以便删除缓存。
通过在构建器中设置以下内容来启用指标,我意识到这是Picasso的另一个实例
ERROR: could not load library "/opt/Postgresql/9.3/lib/postgresql/rtpostgis-2.1.so":libpng12.so.0:cannot open shared object file : No such file or directory sql state 58p01