改进了android的最佳实践:异步请求或AsyncTask中的同步请求?

mad*_*n54 11 android android-asynctask retrofit

我正在使用Retrofit 2库来安装Android REST客户端.Retrofit本身支持同步和异步请求(参见此处),后者的原因是不阻塞线程,因此不会被android中断.

实际上,AsyncTask直接从Retrofit 在本机或异步调用中使用同步调用会更好吗?如果一个比另一个好,那么技术原因是什么?

iag*_*een 21

使用任何流行的REST客户端(改造,排球等)的主要原因之一是它们减少了您在应用程序层管理的详细信息量.其中一个细节是确保您的网络请求发生在主线程之外.AsyncTask当他们已经用于其他功能的库提供相同的功能而不是仪式时,为什么会使用?我能想到的唯一原因是 - 你不认为图书馆的线程非常好.这种担忧不适用于改造2,它用于OkHttp调度异步调用.OkHttp已经存在了很长时间并且被广泛使用,它管理自己的线程池来执行异步请求,并且非常可靠.

因此,使用改造异步的好处是更清晰的代码,并且我知道vs AsyncTask改进同步调用没有任何缺点.我使用同步调用的唯一一次是当我的代码已经在后台线程中执行时出于另一个原因.我从不为网络调用创建单独的线程或asynctask,enqueue而是使用它.