我在我的项目中使用流行的Picasso,但是我已经倾倒了堆,看起来像这样。现在昨天它为Picasso使用的LruCache给了我48M。
我该如何指定其大小?
注意:我的加载图片明显很大。
如果有人提出fit()或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来释放空间。
在进行缓存优化时,请注意这些指南:
Picasso picasso = new Picasso.Builder(this).downloader(new OkHttpDownloader(getCacheDir(), 250000000)).build();
Picasso.setSingletonInstance(picasso);