Подтвердить что ты не робот

Android Picasso Настройка размера LruCache

Я использую трендовый Picasso в своем проекте, но я сбросил кучу, и это выглядит так. Сейчас вчера это дает мне 48M для LruCache, используемого в Picasso.

Как я могу указать его размер?

Примечание. Мои загруженные изображения, по-видимому, большие.

Если кто-то придумал fit() или centerCrop(), я прочитал, что эти функции уменьшают размер изображения, не так ли? Но иногда мне приходится отображать небольшие изображения в ListView на полном экране.

Теперь, выполняют ли эти функции кеширование уменьшенного изображения?

enter image description here

4b9b3361

Ответ 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);