Ответ 1
volley 'Запросить класс со всеми сетевыми запросами. Я не могу найти ресурс загрузки классов с диска.
Я ищу решение для загрузки/кэширования изображений с открытым исходным кодом.
Я ищу:
Универсальный загрузчик изображений
Я хочу иметь возможность обрабатывать загрузки асинхронного изображения с диска, а также через сеть, однако я не уверен, что Google volley обрабатывает загрузку с диска.
Волейбол разрешает загрузку ресурсов с диска?
Пример того, что я хотел бы сделать, доступен с помощью AQuery.
volley 'Запросить класс со всеми сетевыми запросами. Я не могу найти ресурс загрузки классов с диска.
Если вы в порядке с более новым/менее стабильным программным обеспечением, я только что выпустил библиотеку с открытым исходным кодом под названием Glide: https://github.com/bumptech/glide
Он предназначен для эффективной загрузки любого изображения, к которому вы можете получить InputStream. Он включает в себя некоторые базовые реализации загрузки файлов в формате http/file, но также позволяет подключать свои собственные или использовать внешнюю библиотеку (например, Volley) через обратные вызовы.
Он включает в себя кеширование памяти и дисков, а также переработку растровых изображений на новых устройствах. Все, что вам нужно сделать, это реализовать интерфейс для получения входного потока для вашей модели данных (путь/url/uri и т.д.) И передать его вместе с любыми преобразованиями, заполнителями или анимациями, которые вы хотите использовать для одноэлементности Glide.
С удовольствием поговорим с вами или с любопытством, мы широко использовали его в Bump для взаимодействия с различными библиотеками.
Я собрал несколько важных сведений из http://blog.bignerdranch.com/3177-solving-the-android-image-loading-problem-volley-vs-picasso/ (сравнение между старыми версиями Пикассо 2.0 и залпом)
Picasso полностью сосредоточен на загрузке изображений. В результате, если у вас есть quirks в процессе загрузки изображения
Volley, с другой стороны, полностью сосредоточен на работе с индивидуальными, небольшие HTTP-запросы. Поэтому, если ваша обработка запросов HTTP имеет некоторые причуды, У Volley, вероятно, есть крючок для вас. Если, с другой стороны, у вас есть quirk в вашей обработке изображений, единственный реальный у вас есть ImageCache. Это не ничто, но его не много, либо. Но это другие преимущества, например, как только вы определяете свои запросы, используя их изнутри фрагмента или активности безболезнен. И в отличие от параллелизма AsyncTasks
Пикассо делает только одну вещь, в то время как Волей пытается решить более общая проблема.
Android вообще не обрабатывает изображения с высоким разрешением. У меня есть небольшой навязчивая идея уловить OutOfMemoryError в Android Программы. Это похоже на смешную тактику, но волейбол - единственный способ для надежной обработки некоторых сценариев изображения, сравнимых с Picasso масштабирует и правильно устанавливает большие изображения. Пикассо не делает соблюдайте атрибут
scaleType
на вашем ImageViews (не уверен, что это исправлено в последней версии).Test Ex: я обнаружил, что Volley ловит OutOfMemoryError во время загрузки оригинальное разрешение изображения вместо миниатюрной версии, по сравнению с версией Пикассо не взорвется (он ловит OutOfMemoryError тоже), но picasso не загружает изображения, которые слишком большой. Воллей не только не взорвется, но и Volley отображает все эти большие изображения!!!.
Согласно Android Hacker Koushik Dutta:
Тестирование ВСЕХ изображений Android и http-библиотек
Я тестировал и сравнивал несколько различных изображений загрузка и доступ к http-запросам, поскольку несколько из них были выпущены на прошлой неделе.
Модельный ряд:
- AndroidAsync + UrlImageViewHelper (koush)
- Волейбол (Google)
- okhttp + Picasso (Square)
Вся поддержка кэшированных и условно кэшированных ответов, и др.
Мысли:
- Picasso имеет самый красивый API изображений. Я собираюсь украсть их стиль API currying для моего будущего/текущего материала. Пикассо также заметно медленнее. Особенно на 3g против wifi. Вероятно, из-за их пользовательский okhttp-клиент.
- UrlImageViewHelper + AndroidAsync является самым быстрым. Игра с этими двумя замечательными библиотеками действительно подчеркнула, что API изображений довольно устарел.
- Волейбол скользкий; Мне действительно нравятся их подключаемые backend-транспорты, и может закончиться тем, что вы потеряете AndroidAsync. Приоритет запроса
и управление отменой отлично.Обновление. Это не HTTP файлы. Просто загрузчики изображений. но есть были просьбы о сравнении в комментариях... Android-Universal-Image-Loader - самый популярный из них В данный момент. Высоко настраиваемый.
AQuery; как jquery, но для Android? Я думаю, это хорошо, если вы в такую вещь. Не используйте это; это дерьмо в пользовательском интерфейсе нить или что-то еще. Загрузка кучи изображений на моем Nexus 4 в listview заставило меня показаться, что я снова вернулся на свой HTC G1. Основное заикание.
Тесты с кэшами ясно:
Холод - это новое приложение. Теплый - это тайники с http-соединениями предположительно, в живых.
Холодный/Теплый (в миллисекундах, из 10 запусков, очистка данных при каждом запуске):
- Picasso 12142/11892
- UrlImage 7378/4525
- Volley 8292/7520
- Android-Universal-Image-Loader 14484/11243
- AQuery 11341/9637 (этот, похоже, блокирует поток пользовательского интерфейса... не использует его)
Здесь база тестового кода: https://github.com/koush/AndroidNetworkBench
Вывод: Эти тесты вряд ли являются окончательными. Я просто проверял одновременный доступ к сети со многими изображениями. По общему признанию, там больше для тестирования библиотеки. Мне нравится, как Волей играет хорошо с Жизненный цикл активности, например. Ни одна из других библиотек не делает этого.
Итак, что бы ни плавало на вашей лодке. Я (Куш) хочу Волейбол с API Picasso.
Из закладок Volley не включает в себя собственную реализацию кэша диска. Вам нужно взять DiskLruCache (или гибридный кэш памяти/диска, если вы предпочитаете) и реализовать интерфейс Volley ImageCache.
В этом сообщении в блоге описывается, как реализовать кэш на диске с помощью Volley для загрузки изображений: http://blogs.captechconsulting.com/blog/raymond-robinson/google-io-2013-volley-image-cache-tutorial.
Просто используйте библиотеку Picasso
:
Picasso.with(context).load(new File("/images/oprah_bees.gif")).into(imageView2);
Это позволит вам загрузить конкретный file
из SD
, и вы также можете передать imageView
, где вы можете установить это изображение.
Кому Подробнее читайте в Picasso Library
Volly также можно использовать для загрузки файлов на диск.
Использование:
networkImageView.setImageUrl(Uri.fromFile(newFile(filename)).toString(),mImageFetcher);