Библиотека загрузки изображений Picasso, некоторые проблемы

Я создаю небольшое приложение, которое в основном будет каталогом определенных предприятий. Все получено через службу REST. У меня возникли проблемы с изображениями при просмотре списка предприятий.

Изображения, составляющие каждый элемент списка, представляют собой фон (функционируют как «баннер» для бизнеса) и до 5 небольших значков, представляющих наиболее важные услуги, предоставляемые бизнесом.

Я начал использовать Picasso для асинхронной загрузки этих изображений в надежде, что смогу избежать создания собственного кэширования. Однако я столкнулся с парой проблем:

A) Самый большой из них заключается в том, что на более низком телефоне (LG Optimus V под управлением Android 2.2) фон/баннер ВСЕГДА не загружается. Я использую опцию error() Picasso для загрузки заполнителя, который можно нарисовать, когда фон не загружается, но каждый из них не загружается, и я не могу понять, почему. Что я заметил по этому поводу:

  • Маленькие значки загружаются нормально
  • Обратный вызов onImageLoadFailed от Picasso на самом деле не срабатывает. Но заполнитель, который я указываю с помощью error(), загружается.
  • Память, кажется, не является проблемой, так как я прекрасно могу загружать эти баннеры (тот же размер ресурса), если они локальные, а не удаленные.
  • Эта проблема не возникает в Droid X с версией 2.3 и парой устройств более высокого уровня.

B) На всех устройствах ни значки служб, ни баннеры никогда не кэшируются на диск (режим отладки Picasso указывает, что они всегда загружаются сначала из удаленного источника, а затем из памяти), хотя Picasso должен делать это автоматически. Не уверен, что я пропускаю какие-то настройки или что-то в этом роде.

На самом деле, служебные значки были бы лучше, если бы я мог предварительно выбрать их в начале приложения, потому что они часто повторяются между элементами списка (бизнес). Они не могут быть локальными активами, потому что список возможных сервисов может расти в любой момент, и поэтому регулярно будет появляться больше значков. Но было бы здорово, если бы в начале действия я мог запросить свой список сервисов (для этого уже есть точка REST), предварительно загрузить все значки и кэшировать их. Есть простой способ сделать это?

Спасибо за любые рекомендации по этому вопросу.


person RobertoCuba    schedule 08.12.2013    source источник
comment
вы обновились до последней версии? В конце 2013 года возникли проблемы с загрузкой некоторых файлов изображений.   -  person Dori    schedule 06.02.2014


Ответы (1)


Поздно отвечать, но вот:

A) Оказалось, что это проблема с ошибкой реализации SSL в Android 2.2. Мои изображения доступны как через HTTPS, так и через HTTP. Я использовал URL-адреса HTTPS, и запрос не удался. Я просто переключился на URL-адреса HTTP, и все стало нормально работать в версии 2.2.

Б) Я так и не смог точно узнать, так ли это на самом деле, была ли ошибка в режиме отладки Пикассо или что. При большем тестировании я заметил, что хранилище кеша приложения со временем увеличивалось (т.е. по мере того, как к большему количеству изображений обращались чаще), что указывало на то, что было задействовано кэширование. Тем не менее, я думаю, что это могут быть кешированные ответы HTTP вместо кешированных файлов изображений, что объясняет, почему режим отладки Пикассо указывал, что они запрашиваются из источника, но все же появлялись быстро, как если бы они были кэшированы.

person RobertoCuba    schedule 03.08.2014