我正在用Picasso从URL(http://(加载图像。有时,当我尝试使用Picasso的fetch()
方法"预加载"图像时,图像不会被缓存。我想是因为它的尺寸太大了。
阅读这个问题的答案,但setCache()
似乎没有被我识别,我甚至在毕加索的文献中都找不到它。
有什么方法可以改变Picasso用于位图的缓存大小吗?
你可以做:
int maxSize = MAX_CACHE_SIZE;
Picasso picasso = new Picasso.Builder(context)
.memoryCache(new LruCache(maxSize))
.build();
Picasso
使用Cache
接口类型来管理高速缓存。它们提供了默认的实现LruCache
,它有一个构造函数,它接受以字节为单位的最大大小作为参数。
似乎另一个答案使用了错误的函数。它应该是memoryCache
,而不是setCache
。
此示例使用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();