Android - 使用picasso加载图像而不将其存储在缓存中

问题描述 投票:21回答:3

我想使用picasso将图像从url加载到占位符中,但不将该图像存储在缓存中 - 换句话说,我希望将图像从网络直接下载到磁盘,然后在需要时从磁盘加载。我知道有一个名为RequestCreator的类,你可以在其中指定内存策略 - 有没有人有一个使用picasso / requestcreator做这样的事情的例子?

所以...类似于:

RequestCreator requestCreator = new RequestCreator();
requestCreator.memoryPolicy(MemoryPolicy.NO_CACHE);
....

合并:

Picasso.with(context).load(someurl).fit().placeholder(someplaceholder).into(sometarget)..
android picasso
3个回答
51
投票

毕加索通过毕加索建造者的skipMemoryCache()来支持这一点。一个例子如下所示。

Picasso.with(context).load(imageUrl)
                .error(R.drawable.error)
                .placeholder(R.drawable.placeholder)
                .skipMemoryCache()
                .into(imageView);

使用新API,您应该像这样使用它,以便它跳过查找它并将其存储在缓存中:

Picasso.with(context).load(imageUrl)
            .error(R.drawable.error)
            .placeholder(R.drawable.placeholder)
            .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)
            .into(imageView);

NO_CACHE

处理请求时跳过内存缓存查找。

NO_STORE

跳过将最终结果存储到内存缓存中。对于一次性请求很有用,可以避免从缓存中驱逐其他位图。


1
投票

对于picasso:2.71828或更高版本,使用以下内容跳过使用磁盘缓存networkPolicy(NetworkPolicy.NO_CACHE)

  Picasso.get()
            .load(camera_url)
            .placeholder(R.drawable.loader2)
            .networkPolicy(NetworkPolicy.NO_CACHE, NetworkPolicy.NO_STORE)
            .into(img_cam_view);

-2
投票

只需将其附加到网址的末尾即可。

"?=" + System.currentTimeMillis();
© www.soinside.com 2019 - 2024. All rights reserved.