Android Picasso - 如何获取缓存命中和下载的统计信息

时间:2013-09-06 14:24:45

标签: android picasso

我目前正在使用Picasso 2.0.1(之前也尝试过1.0.2)并从网络上的图片中获取位图。

一切都很好,我已经看到加载图片的改进......至少看起来更快。

我的问题是,如何从PICASSO的活动中获取统计数据?我想知道图片是从缓存中获取还是下载...

我试图通过com.squareup.picasso.StatsSnapshot获取信息,但它似乎没有更新......或者我没有正确使用它。

Picasso pi = Picasso.with(getActivity().getApplicationContext());
Bitmap bitmap = pi.load(url.toString()).get();
Log.d(this.getClass().getSimpleName(),"Cache hits:" + pi.getSnapshot().cacheHits + " Cache misses:" + pi.getSnapshot().cacheMisses);

在加载调用之前和/或之后添加日志始终返回相同的结果

  

缓存命中:0缓存未命中:0

我做错了什么或如何获取此信息?

提前致谢!

马克

4 个答案:

答案 0 :(得分:5)

要获得David Hewitt描述的彩色三角形,你实际上必须像这样使用setIndicatorsEnabled

Picasso.with(mContext).setIndicatorsEnabled(true);

您可以使用setLoggingEnabled在日志中获取Picasso的统计信息

Picasso.with(mContext).setLoggingEnabled(true);

您可以使用“Picasso”过滤器搜索日志,并查看Picasso获取图像的位置以及所需的时间。非常方便!

答案 1 :(得分:0)

根据这里的网站: http://square.github.io/picasso/

您可以执行setDebugging(true),它会在角落或每个图像中放置彩色三角形,以指示它们是从网络,磁盘还是内存加载的。我找不到您在网站上使用的功能的具体参考,但这可能会满足您的需求。

答案 2 :(得分:0)

您可以从onStop()或onPause of Activity或Fragment

调用此方法
StatsSnapshot picassoStats = Picasso.with(context).getSnapshot();
Log.d("Picasso stats ", picasspStats.toString());

然后从Android logcat选择verbose并通过Picasso过滤。

您将获得如下所示的日志:

Picasso stats: [main] StatsSnapshot{maxSize=76695844, size=75737296, cacheHits=656, cacheMisses=1091, downloadCount=8, totalDownloadSize=213376, averageDownloadSize=26672, totalOriginalBitmapSize=437547196, totalTransformedBitmapSize=609434304, averageOriginalBitmapSize=527801, averageTransformedBitmapSize=735143, originalBitmapCount=829, transformedBitmapCount=826, timeStamp=1484426664382}

答案 3 :(得分:-1)

'get()'是同步的并跳过缓存。使用'load()'方法之一来利用毕加索的全部权力。