Дивлячись на перспективу Воллі, ось деякі переваги для вашої вимоги:
Воллі, з одного боку, повністю орієнтований на обробку окремих, невеликих HTTP-запитів. Тож якщо обробка вашого запиту HTTP має деякі химерності, Воллі, ймовірно, має гачок для вас. Якщо, з іншого боку, у вас є химерність обробки зображень, єдиний справжній гак у вас є ImageCache . "Це не нічого, але це теж не багато!" але він має більше інших переваг, як-от одного разу, коли ви визначаєте свої запити, використання їх з фрагмента чи діяльності безболісне на відміну від паралельних AsyncTasks
Плюси і мінуси Воллі:
То що приємного у Воллі?
Мережева частина не лише для зображень. Залп призначений бути невід’ємною частиною вашого заднього кінця. Для нового проекту, заснованого на простому REST-сервісі, це може бути великим виграшем.
NetworkImageView є більш агресивним щодо очищення запитів, ніж Picasso, і більш консервативний у своїх моделях використання GC. NetworkImageView покладається виключно на потужні посилання на пам'ять і очищає всі дані запиту, як тільки буде зроблено новий запит для ImageView або як тільки ImageView переміститься за екраном.
Продуктивність. Ця публікація не буде оцінювати цю претензію, але вони, очевидно, подбали про те, щоб бути обережними у своїх моделях використання пам'яті. Також Воллі докладає зусиль, щоб зібрати зворотні дзвінки в основний потік, щоб зменшити зміну контексту.
У Воллі, очевидно, є і ф'ючерси. Перевірте RequestFuture, якщо вас цікавить.
Якщо ви маєте справу зі стислими зображеннями високої роздільної здатності, Volley - єдине рішення, яке тут добре працює.
Воллі можна використовувати з Okhttp (Нова версія Okhttp підтримує NIO для кращої продуктивності)
Воллі прекрасно грає з життєвим циклом діяльності.
Проблеми з Воллі:
Оскільки Воллі є новим, деякі речі ще не підтримуються, але це виправлено.
Запити з декількох деталей (рішення: https://github.com/vinaysshenoy/enhanced-volley )
код статусу 201 приймається як помилка, код статусу від 200 до 207 - це зараз успішні відповіді. (Виправлено: https://github.com/Vinayrraj/CustomVolley )
Оновлення: в останньому випуску Google залпу зараз виправлена помилка кодів статусу 2XX ! Завдяки Ficus Kirkpatrick!
це менш задокументовано, але багато людей підтримують залп у github, документацію на зразок java можна знайти тут . На веб-сайті для розробників android ви можете знайти посібник з передачі мережевих даних за допомогою Volley . А вихідний код залпу можна знайти в Google Git
Для вирішення / зміни Політики переадресації Volley Framework використовуйте Volley з OkHTTP (CommonsWare згадувалося вище)
Також ви можете прочитати це порівняння завантаження зображення Воллі з Пікассо
Модернізація:
Він випущений компанією Square , пропонує дуже прості у використанні API REST (оновлення: Voila! З підтримкою NIO)
Плюси модернізації:
Порівняно з Volley, код REST API Retrofit короткий і забезпечує чудову документацію API та має гарну підтримку в громадах! Дуже легко додавати в проекти.
Ми можемо використовувати його з будь-якою бібліотекою серіалізації, з обробкою помилок.
Оновлення:
- У Retrofit 2.0.0-beta2 є дуже багато хороших змін
- версія 1.6 Retrofit з OkHttp 2.0 тепер залежить від Okio для підтримки java.io та java.nio, що значно полегшує доступ, зберігання та обробку даних за допомогою ByteString та Buffer, щоб зробити якісь розумні речі для збереження процесора та пам'яті. (FYI: Це нагадує мені про бібліотеку OIN Koush з підтримкою NIO!)
Ми можемо використовувати Retrofit разом з RxJava для комбінування та ланцюга REST-дзвінків за допомогою rxObservables, щоб уникнути потворних ланцюгів зворотних викликів (щоб уникнути пекло зворотного дзвінка !!) .
Мінуси модернізації для версії 1.6:
Функція обробки помилок, пов’язаних із пам’яттю, не є хорошою (у старих версіях Retrofit / OkHttp) не впевнена, що вона покращена за допомогою підтримки Okio з Java NIO.
Мінімальна допомога в нарізанні може призвести до зворотного дзвону, якщо ми використовуємо це неналежним чином.
(Усі вищезгадані мінуси вирішені в новій версії бета-версії Retrofit 2.0)
===================================================== =======================
Оновлення:
Базисні показники продуктивності Android Async vs Volley vs Retrofit (мілісекунди, нижче значення краще):
(FYI вище інформації про етапи модернізації покращиться завдяки підтримці Java NIO, оскільки нова версія OKhttp залежить від бібліотеки NIO Okio)
У всіх трьох тестах з різними повторами (1 - 25 разів), Воллі був десь від 50% до 75% швидше. Модернізація працює на вражаючих від 50% до 90% швидше, ніж AsyncTasks, та сама кількість разів потрапляє на ту саму кінцеву точку. У тестовому наборі інформаційної панелі це перекладено на завантаження / аналіз даних на кілька секунд швидше. Це велика різниця в реальному світі. Для того, щоб зробити тести справедливими, час для AsyncTasks / Volley включав розбір JSON, оскільки Retrofit робить це для вас автоматично.
RetroFit Перемагає у тесті на еталон!
Зрештою, ми вирішили поїхати з Retrofit для нашого застосування. Це не тільки смішно швидко, але й добре поєднується з нашою існуючою архітектурою. Нам вдалося створити батьківський інтерфейс зворотного виклику, який автоматично виконує обробку помилок, кешування та розширення сторінок без особливих зусиль для наших API. Для того, щоб об'єднатись у Retrofit, нам довелося перейменувати наші змінні, щоб зробити наші моделі GSON сумісними, написати кілька простих інтерфейсів, видалити функції зі старого API та змінити наші фрагменти, щоб не використовувати AsyncTasks. Тепер, коли у нас декілька фрагментів повністю перетворені, це досить безболісно. Були певні болі та проблеми, які нам довелося подолати, але загалом це пройшло гладко. На початку ми зіткнулися з декількома технічними проблемами / помилками, але Square має фантастичну спільноту Google+, яка змогла нам допомогти в цьому.
Коли використовувати Volley ?!
Ми можемо використовувати Volley, коли нам потрібно завантажувати зображення, а також використовувати API REST !, система черги викликів мереж потрібна одночасно для багатьох n / w запитів! Також Воллі має кращі помилки, пов'язані з пам'яттю, ніж Retrofit!
OkHttp можна використовувати з Volley, Retrofit використовує OkHttp за замовчуванням! Він має підтримку SPDY , об'єднання з'єднань, кешування дисків, прозоре стиснення! Останнім часом він отримав деяку підтримку java NIO з бібліотекою Okio .
Джерело, кредит: залп проти модернізації містера Джоша Руеша
Примітка. Щодо потокового потоку, це залежить від того, який тип потоку ви хочете, як RTSP / RTCP.