Ответ 1
Довольно много отличается!
Использование AsyncTask
для HTTP-запросов в значительной степени является одной из худших вещей, которые вы можете сделать на Android. Это чревато проблемами и ошибками, которые безоговорочно избегают. Например, вы не можете отменить запрос во время выполнения. Шаблоны использования AsyncTask
также обычно утечка ссылки на Activity
, кардинальный грех развития Android.
OkHttp async значительно превосходит по многим причинам:
- Он поддерживает собственное отмена. Если запрос находится в полете, ссылка на
Callback
освобождается и никогда не будет вызвана. Кроме того, если запрос еще не запущен, он никогда не будет выполнен. Если вы используете HTTP/2 или SPDY, мы можем фактически отменить среднюю пропускную способность и мощность. - Он поддерживает тегирование нескольких запросов и отмену их всех одним вызовом метода. Это означает, что каждый запрос, который вы делаете, например,
Activity
, может быть помечен экземпляромActivity
. Затем вonPause
илиonStop
вы можете отменить все запросы, помеченные тегомActivity
. - Если вы используете HTTP/2 или SPDY-запросы, а ответы мультиплексируются по одному соединению с удаленным сервером и с помощью асинхронного механизма
Call
это намного эффективнее, чем блокирующая версия.
Итак, если вы можете, используйте Call.enqueue
!