是否可以更改Picasso用于图像的缓存大小?

时间:2015-06-08 09:22:52

标签: android picasso android-lru-cache

我正在使用Picasso从URL(http://)加载图片。 有时当我试图" preload"使用Picasso fetch()方法的图像,图像不会被缓存。我想这是因为它的尺寸太大了。

阅读this问题的答案,但setCache()似乎没有得到我的认可,我甚至都没有在Picasso文档中找到它。

有没有办法改变Picasso用于位图的缓存大小?

2 个答案:

答案 0 :(得分:4)

你可以这样做:

int maxSize = MAX_CACHE_SIZE;
Picasso picasso = new Picasso.Builder(context)
                              .memoryCache(new LruCache(maxSize))
                              .build();

Picasso使用Cache接口类型来管理缓存。它们提供了默认实现LruCache,其constructor接受最大大小(以字节为单位)作为参数。

似乎其他答案使用了错误的功能。它应该是memoryCache,而不是setCache

答案 1 :(得分:2)

此示例使用OkHttp作为Picasso的http客户端,并设置最大磁盘高速缓存大小和内存高速缓存。

 // Size in bytes (10 MB)
 private static final long PICASSO_DISK_CACHE_SIZE = 1024 * 1024 * 10;

 // Use OkHttp as downloader
 Downloader downloader = new OkHttpDownloader(getApplicationContext(),
                        PICASSO_DISK_CACHE_SIZE);

  // Create memory cache
  Cache memoryCache = new LruCache(maxSize);

  mPicasso = new Picasso.Builder(getApplicationContext())
                        .downloader(downloader).memoryCache(memoryCache).build();