2015-11-10 8 views
-5

Ну, до сих пор я заметил, что два варианта для реального приложения, которое хочет показать фото галерею, состоящую из изображений, которые существуют на сервере являются: залп и Picasso. Есть много полезных уроков о них, таких как this, доступных в Интернете. Но, моя проблема в том, почему я должен использовать их вообще? Что-то не так, просто используя URL-адреса изображений в наших ImageView?почему использовать залп или Picasso

Редактировать: в соответствии с комментарием CommonsWare мой вопрос заключается в том, почему мы не просто используем ImageView.setImageURI или такие методы?

+1

Из-за причин, в которых вы ссылаетесь? –

+0

Если вы попробуете это, вы быстро поймете, почему –

+0

О, мне действительно интересно, почему вы не инструкторы в MIT ?! это ответ? – mok

ответ

2

Нет прямых ссылок на адрес ImageView. Ближайший вещь setImageURI(), и что есть три проблемы:

  1. Я не думаю, что он обрабатывает HTTP на всех

  2. Даже если он сделал, так как документы для этого метода показывают, она делает это на главном потоке приложения, в результате чего вы врезаться с NetworkOnMainThreadException

  3. Даже если вы используете несколько сценариев деточки подходы блокировать это исключение, ваш UI будет заморожен в то время как загрузка идет

Причина №1 для использования an image loading library заключается в том, чтобы получить работу по загрузке изображений по фоновым потокам, обновив ImageView (или NetworkImageView в футляре Волейлиста), когда изображение будет готово. Многие из этих библиотек предлагают дополнительные полезные функции, описанные в сообщении в блоге, в котором вы были связаны и в других ответах здесь.

+0

Всеобъемлющее, как всегда. Действительно, я искал основные причины. Я уже знал, что они (особенно пикассо в этом случае) предоставляют вам некоторые другие утилиты. – mok

2

Я не использовал залп, но я использовал пикассо. Некоторые из преимуществ по сравнению с сырой URL, включает в себя:

  • автоматических передискретизации данных необработанных изображений, чтобы соответствовать области, которую нужно (экономит RAM)
  • автоматической отмену загрузки/рендеринг, если ваши взгляды переработаны, как когда ListView свитки из точки зрения
  • локального кэширования изображений, так что они не должны быть повторно загружены все время,
  • позволяет настроить обратные вызовы, когда изображение не загружается и/или нагрузки успешно
  • , вероятно, больше, чем просто не приходит в голову на данный момент
+0

Спасибо. Вы имеете в виду, что он дает вам возможность повторить попытку, если он не сможет загрузить изображение? – mok

+0

Если я помню, количество попыток можно настроить намного проще, чем использовать обратный вызов. Одна из вещей, которые я использую для обратного вызова, - это бросить изображение по умолчанию из папки с ресурсами, если picasso не загружает сетевой файл. Что напоминает мне, picasso также может загружать изображения из папки с ресурсами (я не знаю, могут ли собственные URL-адреса сделать это - никогда не пробовали) –

Смежные вопросы