Android Picasso Настройка размера LruCache
Я использую трендовый Picasso в своем проекте, но я сбросил кучу, и это выглядит так. Сейчас вчера это дает мне 48M для LruCache
, используемого в Picasso.
Как я могу указать его размер?
Примечание. Мои загруженные изображения, по-видимому, большие.
Если кто-то придумал fit()
или centerCrop()
, я прочитал, что эти функции уменьшают размер изображения, не так ли? Но иногда мне приходится отображать небольшие изображения в ListView
на полном экране.
Теперь, выполняют ли эти функции кеширование уменьшенного изображения?
![enter image description here]()
Ответы
Ответ 1
По умолчанию Picasso использует 1/7-ю из доступной кучи для LRU. Это "счастливая" фракция, которая наилучшим образом подходит для всех устройств.
Вы можете настроить размер кэша памяти, передав собственный экземпляр Picasso.Builder
. Это может быть экземпляр LruCache
, который принимает максимальный размер или любой другой экземпляр Cache
.
Picasso p = new Picasso.Builder(context)
.memoryCache(new LruCache(24000))
.build();
Прежде чем вы уменьшите размер этого кеша, помните, что сохранение экземпляров Bitmap
в ОЗУ позволяет им мгновенно отображаться. Неиспользуемая ОЗУ - это потерянное ОЗУ. Кэш памяти должен использовать как можно больше ОЗУ, не вызывая OOM (очевидно) или ненужный GC для свободного пространства.
Ответ 2
Ниже код увеличит размер кэша Picasso до 250 МБ.
Picasso picasso = new Picasso.Builder(this).downloader(new OkHttpDownloader(getCacheDir(), 250000000)).build();
Picasso.setSingletonInstance(picasso);