Picasso по умолчанию не изменяет размер изображения. Если вы делаете простой вызов, как на следующем ...
Picasso.with(context).load("https://goo.gl/v9EkbF").into(imageView);
... Пикассо кэширование изображения полноразмерного. С этого момента каждый раз, когда вы вызываете один и тот же URL-адрес, Picasso будет повторно использовать полноразмерное изображение и позволить графическому процессору изменять размер в представлении.
Используйте метод resize(), вы используете только кеширование измененного размера изображения, а Picasso нужно будет снова загрузить изображение, если вы используете другой размер.
Не используйте параметр resize(), и вы получите лучшее использование полосы пропускания, но будьте осторожны с использованием памяти.
Значение по умолчанию в Пикассо
Пикассо действительно имеет автоматическую память и диска кэширования. Любое изображение, которое было запрошено в последнее время, будет в кеше памяти. Если это не так, Picasso проверит кеш диска. Если он недоступен на диске, только тогда Picasso запустит сетевой запрос.
Все запрошенные изображения хранятся в обоих кэшах, пока их не нужно будет удалить, чтобы освободить место.
По умолчанию в 2.5.2 являются:
- LRU кэш-памяти 15% имеющихся приложений RAM
- кэш Диск 2% дискового пространства до 50Мб, но не менее 5 МБ.
- Picasso будет использовать OkHttp как клиент Http, если он включен как зависимость Gradle. В противном случае Picasso вернется к HttpUrlConnection.
Вы можете увеличить кэш диска, как это (например, для 100MB):
Picasso picasso = new Picasso
.Builder(this)
.downloader(new OkHttpDownloader(getCacheDir(), 100000000))
.build();
Picasso.setSingletonInstance(picasso);
Изменение размера кэша диска не делает изменения политики кэширования.
Политика памяти
- MemoryPolicy.NO_CACHE: Изображение не будет обслуживаться из памяти. Это не позволяет использовать изображения с диска. Чтобы избежать просмотра диска на Сетевые политики.
- MemoryPolicy.NO_STORE: изображение не будет сохранено в памяти. Используйте это для изображений, которые будут загружены только один раз.
Пример
Picasso
.with(context)
.load(https://goo.gl/v9EkbF)
.memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)
.into(imageView);
Сетевые политики
- NetworkPolicy.NO_CACHE: Изображение не будет обслуживаться из дискового кэша.
- NetworkPolicy.OFFLINE: изображение будет (если возможно) подаваться только из кеша (памяти или диска), но никогда из сети.
Пример:
Picasso
.with(context)
.load(https://goo.gl/v9EkbF)
.networkPolicy(NetworkPolicy.NO_CACHE)
.into(imageView);
память и кэширование соображение
- Скольжение использует по умолчанию RGB565 и кэшировать изображение измененного размера в память .
- Picasso использует по умолчанию RGB888 и кэширует полноразмерное изображение в память и позволяет графическому процессору в реальном времени изменять размер при рисовании.
RGB565 составляет половину от размера RGB888. Результатом использования RGB565 и меньших изображений является то, что площадь памяти Пикассо выше (может быть 3x/4x), чем у Glide.
Это только значения по умолчанию. Glide можно настроить для использования RGB888 и Picasso для использования RGB565. Picasso может быть сконфигурирован так, чтобы вбрасывать в память только измененные изображения, такие как Glide.
При тех же настройках объем памяти почти одинаковый.
Bandwidth соображения
- Glide кэширует отдельный файл для каждого размера. Если вы загрузите другой размер на то же изображение, оно будет загружено снова до, изменено, а затем кэшировано.
- Picasso всегда берет полноразмерное изображение из кеша, а затем позволяет графическому процессору изменять размер изображения в представлении.
Вы можете попросить Glide кэшировать все, полноразмерные изображения и измененные размеры изображений, но по умолчанию потребление пропускной способности Glide выше.
Примечание
Picasso 2.6 приходит, и я понятия не имею о том, что по-другому/новый.
Источники
Проверьте этот ответ http://stackoverflow.com/a/28964219/1384010 .HOpe это поможет вам! –
Не могли бы вы вставить свой код, связанный с Пикассо? Вы используете параметр изменения размера? – Sotti
@Scotti plz проверить мой код. Я использую resize op. – Stella