Переделать 2 лучших практики для android: асинхронный запрос или синхронный запрос в AsyncTask?

Я использую библиотеку Retrofit 2 для клиента REST для Android. Модернизация сама по себе поддерживает синхронный и асинхронный запрос (см. Здесь), причина в том, что последний не блокирует поток и, следовательно, не прерывается андроидом.

На практике лучше ли использовать синхронные вызовы в родной AsyncTask или асинхронные вызовы непосредственно из Retrofit? Если предпочтительнее другого, каковы технические причины?

Ответ 1

Одна из основных причин использования любого из популярных клиентов REST (дооснащение, волейбол и т.д.) Заключается в том, что они уменьшают объем информации, которую вы управляете на уровне приложения. Одна из этих деталей - убедиться, что ваши сетевые запросы происходят из основного потока. Зачем использовать AsyncTask когда библиотека, которую они уже используют для других функций, обеспечивает ту же функциональность с меньшим количеством церемоний? Единственная причина, о которой я могу думать, - вы не думаете, что потоки библиотеки очень хорошие. Эта проблема не относится к модификации 2, она использует OkHttp для отправки асинхронных вызовов. OkHttp уже давно используется и широко используется, он управляет собственным пулом потоков для выполнения асинхронных запросов и является надежным.

Таким образом, верхняя часть использования асинхронного асинхронного улучшения - это более чистый код, и ни один недостаток я не знаю о AsyncTask с синхронизируемыми AsyncTask. Единственный раз, когда я использую вызовы синхронизации, - это когда мой код уже выполняется в фоновом потоке по другой причине. Я никогда не создаю отдельный поток или асинтекс только для сетевого вызова и вместо этого использую enqueue.