Java 如何清除毕加索的缓存?

Java 如何清除毕加索的缓存?,java,android,caching,memory,picasso,Java,Android,Caching,Memory,Picasso,我正在开发一个android应用程序。在该应用程序中,服务器存储将在listview的imageView中显示的图像。我使用毕加索从服务器获取图像并显示在imageview中。虽然我在服务器上上传了新的图像,但只有旧的图像会再次显示。我怀疑这是由于毕加索的藏书。 我使用了3种方法来防止缓存: Picasso.with(getActivity()).load(data.get(pos).getFeed_thumb_image()).skipMemoryCache().into(image); P

我正在开发一个android应用程序。在该应用程序中,服务器存储将在listview的imageView中显示的图像。我使用毕加索从服务器获取图像并显示在imageview中。虽然我在服务器上上传了新的图像,但只有旧的图像会再次显示。我怀疑这是由于毕加索的藏书。 我使用了3种方法来防止缓存:

Picasso.with(getActivity()).load(data.get(pos).getFeed_thumb_image()).skipMemoryCache().into(image);

Picasso.with(getActivity()).load(data.get(pos).getFeed_thumb_image()).memoryPolicy(MemoryPolicy.NO_CACHE).into(image);

Picasso.with(context).invalidate(imagePath);

但没有结果。如何清除毕加索中特定url的缓存?

这将在将来实现,但请参见:

JakeWharton于2014年12月11日评论了当前最佳候选人:

除非有人有其他想法,否则这将是实现的


尝试使用变量加载url,如“现在时间”: Calendar urlvar=Calendar.getInstance(); int seconds=urlvar.get(Calendar.SECOND)


然后通过添加到字符串来加载url:?urlvar,这样最终加载的url将是例如.com/m.png?日期,它将被兑现,但下一次加载日期会更改,所以url会更改,所以不会从现金加载。Hope ot work

当你说旧图像会再次显示时,你是说在你从内存中完全清除应用程序并返回到它之后吗?理想情况下,如果缓存头允许的时间太长,他的服务器应该更正缓存头。他使用的
invalidate
让我怀疑他是在谈论内存还是HTTP客户端文件缓存。
picasso.load('http://example.com/')
  .cachePolicy(NO_CACHE, NO_STORE)
  .networkPolicy(NO_CACHE, NO_STORE, OFFLINE)
  .into(imageView);

enum MemoryPolicy {
  NO_CACHE, NO_STORE
}
enum NetworkPolicy {
  NO_CACHE, NO_STORE, OFFLINE
}