如何获得Picasso使用的缓存大小并清空它

时间:2015-12-13 20:26:14

标签: android android-volley picasso

我使用Picasso从服务器和Volley加载图像来执行请求。

示例:

Picasso.with(getContext()).load(article.getImagePath()).error(R.drawable.placeholder_blue_sd).placeholder(R.drawable.placeholder_blue_sd).into(image);
  1. 如何获取缓存大小?
  2. 如何清空缓存?

2 个答案:

答案 0 :(得分:0)

使用此方法而不是现有的方法:

Picasso.with(getContext()).load(data.get(position).getFeed_thumb_image()).memoryPolicy(MemoryPolicy.NO_CACHE).into(image);

另请阅读:

Clear Cache memory of Picasso

android picasso clear cache

编辑:我忘记了检查Picasso的缓存大小,所以这里有一些有用的链接

Is it possible to change the size of the cache Picasso uses for images?

Android Imge Picasso Square Cache Size

另请阅读本文:https://futurestud.io/blog/picasso-influencing-image-caching

答案 1 :(得分:0)

1。如何获取缓存大小

嗯,你可以这样做:

StatsSnapshot picassoStats = Picasso.with(context).getSnapshot();

statsSnapshot对象包含以下参数:

  

StatsSnapshot {
  MAXSIZE = 28760941,
  大小= 26567204,
  cacheHits = 30,
  cacheMisses = 58,
  downloadCount = 0,
  totalDownloadSize = 0,
  averageDownloadSize = 0,
  totalOriginalBitmapSize = 118399432,
  totalTransformedBitmapSize = 96928004,
  averageOriginalBitmapSize = 2466654,
  averageTransformedBitmapSize = 2019333,
  originalBitmapCount = 48,
  transformedBitmapCount = 41,
  timeStamp = 1432576918067}

了解更多here

2。如何清除缓存

没有直接的方法(在Picasso中)清除整个缓存,因为:

  

Picasso没有磁盘缓存,HTTP客户端负责它。您可以将自己的磁盘缓存安装到HTTP客户端,并删除文件夹的内容以清除它。

来源:Picasso Issue#1543Picasso Issue#1521

但如果您想要强制刷新单个图片,则可以为NO_CACHEmemoryPolicy指定diskPolicy以跳过缓存并强制刷新。

Picasso.with(context)
       .load(newUri)
       .memoryPolicy(MemoryPolicy.NO_CACHE)
       .diskPolicy(MemoryPolicy.NO_CACHE)
       .into(imageView);

你可以在网址上调用invalidate

Picasso.with(context).invalidate(uri.toString());