我正在使用一个
android REST客户端的
Retrofit 2库. Retrofit本身支持同步和异步请求(参见
here),后者的原因不是阻止线程,因此不会被android中断.
实际上,是否可以直接从Retrofit使用本机AsyncTask或异步调用中的同步调用?
如果比较优先,那是什么技术原因?
解决方法
使用任何流行的REST客户端(改装,排球等)的主要原因之一是它们减少了在应用层管理的细节数量.其中一个细节是确保您的网络请求发生在主线程之外.当他们已经用于其他功能的库提供了相同的功能,减少仪式时,为什么会使用AsyncTask?我唯一可以想到的原因是 – 你不认为图书馆的线程是非常好的.这种担心不适用于改造2,它使用OkHttp来分派异步调用. OkHttp已经有一段时间了,广泛使用,它管理自己的线程池来执行异步请求,并且很实用.
所以,使用改造异步的优势是更干净的代码,并且没有什么不足之处我知道与AsyncTask与改装同步调用.我使用同步调用的唯一时间是当我的代码已经在后台线程中执行的另一个原因.我从来没有为网络调用创建一个单独的线程或asynctask,而是使用排队.