Android Picasso配置LruCache大小

时间:2013-11-20 07:53:34

标签: android picasso

我在我的项目中使用趋势毕加索,但我已经倾倒了堆,它看起来像这样。现在昨天它给了我48米的毕加索使用的LruCache

我如何指定它的大小?

  

注意:我加载的图像显然很大。

如果有人提出fit()centerCrop(),我会看到这些功能会缩小图像尺寸,对吗?但有时我必须在ListView的全视图中显示小图像。

现在,这些功能是否会缓存缩小的图像?

enter image description here

2 个答案:

答案 0 :(得分:49)

默认情况下,Picasso使用可用堆的1/7作为LRU。这是一个“快乐”的部分,在所有设备上运行得最好。

您可以通过将自定义实例传递给Picasso.Builder来配置内存缓存的大小。它可以是LruCache的一个实例,它采用最大尺寸或Cache的任何其他实例。

Picasso p = new Picasso.Builder(context)
    .memoryCache(new LruCache(24000))
    .build();

然而,在缩小此缓存大小之前,请记住,在RAM中保留Bitmap个实例可以立即显示它们。未使用的RAM是浪费的RAM。内存缓存应尽可能多地使用RAM,而不会导致OOM(显然)或不必要的GC释放空间。

答案 1 :(得分:4)

以下代码会将Picasso缓存大小增加到250 MB。

Picasso picasso =  new Picasso.Builder(this).downloader(new OkHttpDownloader(getCacheDir(), 250000000)).build();
Picasso.setSingletonInstance(picasso);