【问题标题】:Android Picasso - How to obtain stats on cache hits and downloadsAndroid Picasso - 如何获取缓存命中和下载的统计信息
【发布时间】:2017-01-13 03:48:54
【问题描述】:

我目前正在使用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

我做错了什么或如何获得这些信息?

提前致谢!

马克

【问题讨论】:

  • 不要多次调用getSnapshot()。只需在您的方法中调用一次,然后使用该实例即可。看来您正在使用get(),这是一个同步后台加载,我认为这不会影响缓存统计信息。尝试使用load(url).into(imageView),然后获取快照...查看此线程github.com/square/picasso/issues/215

标签: android picasso


【解决方案1】:

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

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

您可以像这样使用 setLoggingEnabled 在您的毕加索日志中获取统计信息

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

您可以使用“毕加索”过滤器搜索日志,并查看毕加索从哪里获取图像以及需要多长时间。很方便!

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我实际上已经添加了 pi.setDebugging(true),即使没有正确了解它的影响以查看 statssnapshot 是否已更新。我没有看到“彩色丝带”,因为他们在我得到的位图上调用它......也许是因为我没有执行 .into(imageView1),但是在对位图进行一些处理后放置位图没有得到覆盖?无论哪种方式,这都无法帮助我在应用程序中了解图像是否是下载的……肯定有办法吗?如果不是这样的事情,StatsSnapshot 有什么用?
    【解决方案3】:

    您可以从 Activity 或 Fragment 的 onStop() 或 onPause 调用它

    StatsSnapshot picassoStats = Picasso.with(context).getSnapshot();
    Log.d("Picasso stats ", picasspStats.toString());
    

    然后从 Android logcat 中选择详细并按毕加索过滤。

    你会得到一个类似下面的日志:

    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}
    

    【讨论】:

      【解决方案4】:

      'get()' 是同步的,会跳过缓存。使用“load()”方法之一来发挥毕加索的全部力量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-12
        • 2012-07-22
        • 2023-01-04
        • 1970-01-01
        • 2016-08-16
        • 1970-01-01
        • 1970-01-01
        • 2016-05-16
        相关资源
        最近更新 更多