【譯】緩存指示器,日志與狀態(tài)

緩存指示器

如果閱讀了之前的所有文章,那么你一定記得Picasso使用了兩種緩存策略:磁盤緩存和內(nèi)存緩存。最后才就是耗時的網(wǎng)絡加載。

對于開發(fā)者而言,研究圖片的來源是非常重要的。最簡單的辦法就是通過調(diào)用.setIndicatorsEnabled(true);激活緩存指示器。示例如下:

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

所有圖像請求后,都會在左上角顯示一個小型指示器。

每一種顏色都代表一種來源:

  • 綠色(來自內(nèi)存,效率最高)
  • 藍色(來自磁盤,效率良好)
  • 紅色(來自網(wǎng)絡,效率最低)

日志

因為顏色指示器能夠幫助定位緩存來源,因此可以在一定程度上解決圖像加載緩慢的問題。如果問題依然不能得以解決,可以通過在Picasso請求上調(diào)用.setLoggingEnabled(true)來打開日志輸出(默認情況下關閉日志輸出)。

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

這會影響到所有的Picasso請求上,并把日志輸出到Android logcat上(直到調(diào)用.setLoggingEnabled(false))。一旦開始加載圖像,便可以通過logcat查看關于Picasso請求的詳細信息。Picasso將打印所有相關數(shù)據(jù)。

比如,強制要求Picasso從網(wǎng)絡加載圖片:

Picasso  
    .with(context)
    .load(UsageExampleListViewAdapter.eatFoodyImages[2])
    .memoryPolicy(MemoryPolicy.NO_CACHE)
    .networkPolicy(NetworkPolicy.NO_CACHE)
    .into(imageViewFromNetwork);

它將在logcat打印類似的輸出:

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  

狀態(tài)快照

最后,但并非最不重要,你可能需要了解大局情況。通過StatsSnapshot來了解累計和平均值,而不是分析單個請求。

為了訪問這些數(shù)據(jù),只需調(diào)用:

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

返回的對象可以通過Android debugger來分析,也可以打印在logcat中。

Log.d("Picasso Stats", picassoStats.toString());  

輸出信息類似于如下示例:

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}]
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容