毕加索 - 仅访问内存缓存

时间:2015-03-29 22:34:06

标签: android picasso

我正在写一个画廊视图,我有两组图像;低质量和高品质。

在图库活动中,图像一次显示一个。我先显示低质量图像,然后显示高质量图像(就地)。

在之前的屏幕中已经访问了低质量图像,并且应该在内存中预先缓存。我想要做的只是访问内存缓存 - 然后移动到高质量的图像(无论是否加载低质量的图像)。

然后就像往常一样,毕加索可以在必要时下载高质量的图像。

我可以一起使用NetworkPolicy.NO_CACHENetworkPolicy.NO_STORENetworkPolicy.OFFLINE来实现我的目标吗?

1 个答案:

答案 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阻止检查磁盘缓存(来自OkHttpHttpUrlConnection的网络缓存,具体取决于你用)。

我还建议将Picasso留给后者,因为它通常与内存缓存一样快。