Picasso在appwidget中使用缓存图像的数据

时间:2016-12-26 03:41:53

标签: android caching picasso okhttp3

我们有一个包含多个ImageView的appwidget,需要每隔一段时间用图像更新一次。图像存储在Web上,url存储在我们旋转的ArrayList中。我们正在使用Picasso和一个具有缓存的OkHttp3 Downloader。即使在所有图片至少显示一次之后,我们的应用仍在使用根据设置应用中的Android内置数据使用选项中的数据。打开飞行模式时,小部件继续工作并显示所有图像,因此必须对其进行高速缓存。为什么即使图像被缓存,毕加索仍在使用数据? (我们已经排除了app / widget所有其他可能的数据消耗来源)

使用的图书馆:

  • 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不起作用是否正常?

1 个答案:

答案 0 :(得分:0)

回答我自己的任务,以防任何人因为类似的问题而遇到问题。

通过设计,HTTP请求被发送到服务器,该服务器以304状态响应,即使cache-age仍然有效,以便能够在服务器上测量图像显示的频率。我们在Android中看到的数据使用情况不是图像,而是很多标题。