Програмуючи під Android є речі, які ви просто не можете уникати: робота з мережею (networking). Що б це не було: завантаження зображення, робота з API чи просто 1 байт з інтернету - все це робота з мережею.
Враховуючи те на скільки робота з мережею є важливою та фундаментальною в розробці, одне з основних питань з якими стикаються Android розробники це вибір правильного рішення для реалізації конкретної задачі.
Причиною того, що нам доводиться використовувати сторонні бібліотеки є неспроможність android фреймворку реалізувати нормально роботу з мережею, ще з давніх часів, коли панували такі динозаври як Froyo та Gingerbread, доводилося писати раз за разом один і той же код. Враховуючи динаміку з якою розвивався Android було логічно спробувати написати щось своє, чи використати готове рішення від сторонніх розробників, які все розвивались і розвивались.
In the old days networking on Android was a nightmare, nowadays the
problem is to find out which solution best fits the project necessities.
В цій статті ми поговоримо про конкретні рішення на базі OkHttp, Volley та Gson.
Для вдалого експерименту припустимо, що для обміну даними з сервером ви використовуєте JSON, працюєте в Android Studio з Gradle.
OkHttp це достатньо новий, швидкий та ефективний Http клієнт, який підтримує HTTP/2 та SPDY і виконує за вас безліч однотипної роботи. Прекрасний спосіб зрозуміти наскільки важко працювати з мережею це поглянути на все те що OkHttp для установки звязку, кешуваання і т.д. OkHttp працює як транспортний рівень.
OkHttp використовує
Okio,
бібліотекою, що доповнює java.io and java.nio та допомагає легше отримати доступ, зберігати та користуватися вашою інформацією.
І OkHttp, і Okio розроблені хлопцями з
Square.
Volley це бібліотека, що полегшує роботу з побутовими задачами мережі. Бере на себе запити, завантаження, кешування, поточність, синхронізацію та інші штуки. Легко працювати з JSON, зображеннями, кешем, текстом та дозволяє кастомізованим.
Volley була спроектована для RPC стилю роботи з мережею, що популяризує UI. Являється прекрасною альтернативою для простих, коротких задач.
Volley за замовчуванням використовується на транспортному рівні як Apache Http stack на Froyo та HttpURLConnection stack на Gingerbread і вище. Біда в тому, що є деякі проблеми з http stack на різних версіях Android.
Volley дає можливість простіше налаштувати OkHttp як транспортний рівень.
Volley була розроблений компанією Google.
Gsonце бібліотека серіалізації та десеріалізації JSON, що використовує рефлекцію для попляризації вашої Java моделі об'єктів з об'єктів JSON.
Gson була розроблений компанією Google.