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 только для сетевого вызова и используйте .