是否可以更改毕加索用于图像的缓存大小?
Is it possible to change the size of the cache Picasso uses for images?
我正在使用 Picasso 从 URL (http://) 加载图像。
有时,当我尝试使用 Picasso 的 fetch()
方法 "preload" 图像时,图像不会被缓存。我猜是因为它的尺寸太大了。
阅读 this 问题的答案,但 setCache()
似乎没有被我识别出来,我什至没有在 Picasso 文档中找到它。
有什么方法可以更改 Picasso 用于位图的缓存大小吗?
你可以这样做:
int maxSize = MAX_CACHE_SIZE;
Picasso picasso = new Picasso.Builder(context)
.memoryCache(new LruCache(maxSize))
.build();
Picasso
使用 Cache
interface type to manage the cache. They provide the default implementation, LruCache
, which has a constructor 接受最大字节数作为参数。
似乎其他答案使用了错误的功能。应该是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();
我正在使用 Picasso 从 URL (http://) 加载图像。
有时,当我尝试使用 Picasso 的 fetch()
方法 "preload" 图像时,图像不会被缓存。我猜是因为它的尺寸太大了。
阅读 this 问题的答案,但 setCache()
似乎没有被我识别出来,我什至没有在 Picasso 文档中找到它。
有什么方法可以更改 Picasso 用于位图的缓存大小吗?
你可以这样做:
int maxSize = MAX_CACHE_SIZE;
Picasso picasso = new Picasso.Builder(context)
.memoryCache(new LruCache(maxSize))
.build();
Picasso
使用 Cache
interface type to manage the cache. They provide the default implementation, LruCache
, which has a constructor 接受最大字节数作为参数。
似乎其他答案使用了错误的功能。应该是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();