android 的 Retrofit 2 最佳实践:AsyncTask 中的异步请求还是同步请求?

Retrofit 2 best practice for android: asynchronous request or synchronous request in AsyncTask?

我正在使用 Retrofit 2 library for an android REST client. Retrofit itself supports synchronous and asynchronous request (cf. here),后者的原因是不阻塞线程,因此不会被 android 中断。

在实践中,在原生 AsyncTask 中使用同步调用还是直接从 Retrofit 中使用异步调用更好? 如果一个比另一个更可取,技术原因是什么?

使用 any 流行的 REST 客户端(retrofit、volley 等)的主要原因之一是它们减少了您在应用层管理的细节量.其中一个细节是确保您的网络请求发生在主线程之外。为什么一个人会使用 AsyncTask 当他们已经用于其他功能的库提供相同的功能而更少的仪式?我能想到的唯一原因是——您认为库的线程不是很好。该问题不适用于改造 2,它使用 OkHttp 来分派异步调用。 OkHttp 已经存在了一段时间并被广泛使用,它管理自己的线程池来执行异步请求,并且很可靠。

因此,使用改型异步的好处是代码更清晰,据我所知与使用改型同步调用的 AsyncTask 相比没有缺点。我唯一一次使用同步调用是因为其他原因我的代码已经在后台线程中执行。我从不为网络调用创建单独的线程或异步任务,而是使用 enqueue