我正在写一个画廊视图,我有两组图像;低质量和高品质。
在图库活动中,图像一次显示一个。我先显示低质量图像,然后显示高质量图像(就地)。
在之前的屏幕中已经访问了低质量图像,并且应该在内存中预先缓存。我想要做的只是访问内存缓存 - 然后移动到高质量的图像(无论是否加载低质量的图像)。
然后就像往常一样,毕加索可以在必要时下载高质量的图像。
我可以一起使用NetworkPolicy.NO_CACHE
,NetworkPolicy.NO_STORE
和NetworkPolicy.OFFLINE
来实现我的目标吗?
答案 0 :(得分:1)
你可能现在已经知道了,但对于其他人来说 - 是的,你当然可以。
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
的网络缓存,具体取决于你用)。
我还建议将Picasso留给后者,因为它通常与内存缓存一样快。