2

我正在使用 Picasso 从 URL (http://) 加载图像。有时当我尝试使用毕加索的fetch()方法“预加载”图像时,图像不会被缓存。我猜是因为它的尺寸太大了。

阅读这个问题的答案,但setCache()我似乎无法识别,我什至在毕加索文档中都找不到。

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

4

2 回答 2

4

你可以做:

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

Picasso使用Cache接口类型来管理缓存。它们提供了默认实现,LruCache它有一个构造函数,它接受以字节为单位的最大大小作为参数。

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

于 2015-06-08T09:27:17.693 回答
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();
于 2015-06-08T10:54:40.733 回答