2016-12-26 112 views
0

我們有一個appwidget,其中包含多個ImageView,需要每隔一段時間更新一次圖像。圖像存儲在網絡上,網址存儲在我們旋轉的ArrayList中。我們使用帶有緩存的OkHttp3 Downloader的畢加索。即使在所有圖像顯示至少一次我們的應用程序仍在使用設置應用程序中的Android數據使用情況選項中的數據。打開飛行模式時,小部件將繼續工作並顯示所有圖像,以便它們必須被緩存。即使圖像被緩存,爲什麼畢加索仍在使用數據? (我們已經通過應用程序/小工具排除數據消費的所有其他可能的來源)使用畢加索在appwidget中使用緩存圖像的數據

庫:

  • com.squareup.okhttp3:okhttp:3.2.0
  • com.squareup .picasso:畢加索:2.5.2
  • com.jakewharton.picasso:picasso2-okhttp3-下載:1.1.0

畢加索初始化在應用程序對象的onCreate():

Picasso.Builder picassoBuilder = new Picasso.Builder(this) 
     .downloader(new OkHttp3Downloader(this)) 
     .indicatorsEnabled(true) 
     .loggingEnabled(true); 
    Picasso picasso = picassoBuilder.build(); 
    try { 
     Picasso.setSingletonInstance(picasso); 
    } catch(IllegalStateException e) { 
     UsageTracker.handleException(e); 
    } 

從服務加載圖像:

public static void updateImage(Context context, RemoteViews remoteViews, int resourceId, String url) { 
    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); 
    int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, WidgetProvider.class)); 
    Picasso.with(context).load(url).into(remoteViews, resourceId, appWidgetIds); 
} 

而且,沒有人知道它是否正常的指標和採伐沒有爲RemoteViews工作?

+0

您是否嘗試過使用Picasso的'setIndicatorsEnabled'來驗證圖像沒有從緩存中加載? – akash93

+0

是的,但appwidget中沒有指示符。他們在應用程序本身工作。他們是否應該在RemoteViews中使用appwidgets? – Sander

+0

我沒有看到任何理由,爲什麼他們不應該..這是說我沒有測試過自己。如果不是這樣,也許值得開個問題 – akash93

回答

0

回答我自己的問題,以防有人在類似問題上絆倒了問題。

通過設計,HTTP請求被髮送到以304狀態響應的服務器,即使緩存時限仍然有效,以便能夠在服務器上測量圖像的顯示頻率。我們在Android中看到的數據使用情況不是圖像,而是很多標題。