我在我的项目中使用了流行的毕加索,但我已经倾倒了堆,它看起来像这样。现在昨天它给了我 48MLruCache
用于毕加索。
我怎么能指定它的大小?
注意:我加载的图像显然很大。
如果有人提出fit()
or centerCrop()
,我已经读到这些功能会减小图像大小,对吗?但有时我必须ListView
在全视图中显示小图像。
现在,这些函数会缓存缩小的图像吗?
默认情况下,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 来释放空间。
下面的代码将毕加索缓存大小增加到 250 MB。
Picasso picasso = new Picasso.Builder(this).downloader(new OkHttpDownloader(getCacheDir(), 250000000)).build();
Picasso.setSingletonInstance(picasso);