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

时间:2015-05-06 20:41:34

标签: android picasso

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

所以...类似:

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

与:

合并
Picasso.with(context).load(someurl).fit().placeholder(someplaceholder).into(sometarget)..

4 个答案:

答案 0 :(得分: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 :(得分: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 :(得分:0)

毕加索2.5.0

如果使用Picasso从Internet加载图像,则必须使用NetworkPolicy属性。

For ( i in seq(1,length( DATAFRAME ),1) ) plot(DATAFRAME[,i],ylab=names(DATAFRAME[i]),type="l")

但实时内存缓存(而非磁盘缓存)很有用,您可能希望保留它。

答案 3 :(得分:-1)

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

"?=" + System.currentTimeMillis();