Android Picasso - 清除缓存但图像仍然存在

时间:2016-05-12 15:37:32

标签: java android caching memory picasso

所以在某些时候我需要在我的应用程序中清除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()方法,那么我还能做什么呢?

2 个答案:

答案 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