Picasso不会将图像缓存在磁盘

时间:2016-03-04 21:42:12

标签: android caching picasso disk

我必须使用自定义OkHttpClient,以便我可以为图像请求添加标头。问题是Picasso不会因此而在磁盘上缓存任何图像。我使用setIndicatorsEnabled(true)来检查缓存,我只看到红色指标。当我使用默认的OkHttpDownloader时,一切正常。下面是我的Picasso初始化代码。那么有人遇到同样的问题吗?

 public static void init(Context context) {
        Picasso.Builder builder = new Picasso.Builder(context);
        OkHttpClient client = new OkHttpClient();
        client.interceptors().add(new AuthInterceptor());
        Downloader downloader = new OkHttpDownloader(client);
        Picasso.setSingletonInstance(builder.downloader(downloader).build());
        Picasso.with(context).setIndicatorsEnabled(true);
    }

我的图片下载代码

 public static void load(final ImageView imageView, final Image image) {
            Picasso.with(imageView.getContext())
                    .load(image.getUrl())
                    .resize(400, 0)
                    .memoryPolicy(MemoryPolicy.NO_CACHE)
                    .into(imageView);
    }

1 个答案:

答案 0 :(得分:1)

啊,因为当您更改标题时会发生这种情况,您很可能不会设置Cache-Control标头

根据杰克沃顿(毕加索的开发者之一)的说法

  

Picasso没有磁盘缓存。它委托任何HTTP   您正在使用该客户端的功能(依赖于HTTP缓存   缓存控制的语义)。因此,你寻求的行为   来免费

取自杰克沃顿的回答here

此外,

  

如果您从未看到蓝色指示灯,则可能是您的远程图像   不包括适当的缓存标头以启用缓存到磁盘