我必须使用自定义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);
}
答案 0 :(得分:1)
啊,因为当您更改标题时会发生这种情况,您很可能不会设置Cache-Control标头
根据杰克沃顿(毕加索的开发者之一)的说法
Picasso没有磁盘缓存。它委托任何HTTP 您正在使用该客户端的功能(依赖于HTTP缓存 缓存控制的语义)。因此,你寻求的行为 来免费
取自杰克沃顿的回答here
此外,
如果您从未看到蓝色指示灯,则可能是您的远程图像 不包括适当的缓存标头以启用缓存到磁盘