-->

Is it possible to change the size of the cache Pic

2020-02-29 11:33发布

问题:

I'm loading images from URLs (http://) with Picasso. Sometimes when i try to "preload" an image using Picasso's fetch() method, the image doesn't get cached. I guess it's because it's size is too big.

Read the answer for this question, but setCache() doesn't seem to be recognized for me, i don't even find it in the Picasso documentation.

Is there any way to change the cache size Picasso uses for bitmaps?

回答1:

You can do:

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

Picasso uses a Cache interface type to manage the cache. They provide the default implementation, LruCache, which has a constructor that accepts the max size in bytes as an argument.

Seems like the other answer uses the wrong function. It should be memoryCache, not setCache.



回答2:

This example use OkHttp as http client for Picasso and setup max Disk cache size and also memory cache.

 // 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();