14

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

我怎么能指定它的大小?

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

如果有人提出fit()or centerCrop(),我已经读到这些功能会减小图像大小,对吗?但有时我必须ListView在全视图中显示小图像。

现在,这些函数会缓存缩小的图像吗?

在此处输入图像描述

4

2 回答 2

51

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

您可以通过将自定义实例传递给Picasso.Builder. 它可以是LruCache具有最大大小的 的实例,也可以是 的任何其他实例Cache

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

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

于 2013-11-20T20:04:09.703 回答
4

下面的代码将毕加索缓存大小增加到 250 MB。

Picasso picasso =  new Picasso.Builder(this).downloader(new OkHttpDownloader(getCacheDir(), 250000000)).build();
Picasso.setSingletonInstance(picasso);
于 2016-04-08T05:44:18.283 回答