前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【译】缓存指示器,日志与状态

【译】缓存指示器,日志与状态

作者头像
小鄧子
发布2018-08-20 15:28:10
3180
发布2018-08-20 15:28:10
举报

缓存指示器

如果阅读了之前的所有文章,那么你一定记得Picasso使用了两种缓存策略:磁盘缓存和内存缓存。最后才就是耗时的网络加载。

对于开发者而言,研究图片的来源是非常重要的。最简单的办法就是通过调用.setIndicatorsEnabled(true);激活缓存指示器。示例如下:

代码语言:javascript
复制
Picasso  
    .with(context)
    .setIndicatorsEnabled(true);

所有图像请求后,都会在左上角显示一个小型指示器。

每一种颜色都代表一种来源:

  • 绿色(来自内存,效率最高)
  • 蓝色(来自磁盘,效率良好)
  • 红色(来自网络,效率最低)

日志

因为颜色指示器能够帮助定位缓存来源,因此可以在一定程度上解决图像加载缓慢的问题。如果问题依然不能得以解决,可以通过在Picasso请求上调用.setLoggingEnabled(true)来打开日志输出(默认情况下关闭日志输出)。

代码语言:javascript
复制
Picasso  
    .with(context)
    .setLoggingEnabled(true);

这会影响到所有的Picasso请求上,并把日志输出到Android logcat上(直到调用.setLoggingEnabled(false))。一旦开始加载图像,便可以通过logcat查看关于Picasso请求的详细信息。Picasso将打印所有相关数据。

比如,强制要求Picasso从网络加载图片:

代码语言:javascript
复制
Picasso  
    .with(context)
    .load(UsageExampleListViewAdapter.eatFoodyImages[2])
    .memoryPolicy(MemoryPolicy.NO_CACHE)
    .networkPolicy(NetworkPolicy.NO_CACHE)
    .into(imageViewFromNetwork);

它将在logcat打印类似的输出:

代码语言:javascript
复制
D/Picasso﹕ Main        created      [R0] Request{http://i.imgur.com/rT5vXE1.jpg}  
D/Picasso﹕ Dispatcher  enqueued     [R0]+21ms  
D/Picasso﹕ Hunter      executing    [R0]+26ms  
D/Picasso﹕ Hunter      decoded      [R0]+575ms  
D/Picasso﹕ Dispatcher  batched      [R0]+576ms for completion  
D/Picasso﹕ Main        completed    [R0]+807ms from NETWORK  
D/Picasso﹕ Dispatcher  delivered    [R0]+809ms  

状态快照

最后,但并非最不重要,你可能需要了解大局情况。通过StatsSnapshot来了解累计和平均值,而不是分析单个请求。

为了访问这些数据,只需调用:

代码语言:javascript
复制
StatsSnapshot picassoStats = Picasso.with(context).getSnapshot();  

返回的对象可以通过Android debugger来分析,也可以打印在logcat中。

代码语言:javascript
复制
Log.d("Picasso Stats", picassoStats.toString());  

输出信息类似于如下示例:

代码语言:javascript
复制
D/Picasso Stats﹕ StatsSnapshot{
maxSize=28760941, 
size=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}]
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.06.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 缓存指示器
  • 日志
  • 状态快照
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档