我正在写一个画廊视图,我有两组图像:低质量和高质量。
在图库活动中,图像一次显示一个。我首先显示低质量的图像,然后显示高质量的图像(就地)。
低质量的图像已经在前一个屏幕中被访问过,并且应该在内存中预先缓存。我想要做的是只访问内存中的缓存-然后转移到高质量的图像上(不管是否加载了低质量的图像)。
然后一切照常进行,如果需要的话,毕加索可以下载高质量的图片。
同时使用NetworkPolicy.NO_CACHE、NetworkPolicy.NO_STORE和NetworkPolicy.OFFLINE能实现我想要的效果吗?
发布于 2015-07-15 15:59:55
你现在可能已经弄明白了,但对于其他登陆这里的人来说-是的,你当然可以。
Picasso.with(context)
.load(smallImageUrl)
.networkPolicy(NetworkPolicy.OFFLINE, NetworkPolicy.NO_CACHE)
.into(imageView, new Callback() {
@Override
public void onSuccess() {
Picasso.with(context).load(largeImageUrl).into(imageView);
}
@Override
public void onError() {
Picasso.with(context).load(largeImageUrl).into(imageView);
}
});(为简洁起见,请原谅不遵守DRY原则)
因此,NetworkPolicy.OFFLINE会阻止它尝试从网络获取数据,而NetworkPolicy.NO_CACHE则会阻止检查磁盘缓存(这是来自OkHttp或HttpUrlConnection的网络缓存,具体取决于您使用的是什么)。
我也推荐毕加索使用后者,因为它通常和内存缓存一样快。
https://stackoverflow.com/questions/29335743
复制相似问题