Retrofit 2 best practice for android: асинхронный запрос или синхронный запрос в AsyncTask?

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

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

1 ответов


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

Итак, преимущество использования retrofit async-это более чистый код, и я не знаю недостатков vs AsyncTask с вызовами синхронизации retrofit. Единственный раз, когда я использую вызовы синхронизации, - это когда мой код уже выполняется в фоновом потоке по другой причине. Я никогда создайте отдельный поток или asynctask только для сетевого вызова и используйте .