Retrofit 2在Android中的最佳实践:在AsyncTask中使用异步请求还是同步请求?

13

我正在使用 Retrofit 2 库作为安卓REST客户端。Retrofit支持同步和异步请求(参见这里)。异步请求的原因是不阻塞线程,从而避免被安卓中断。

在实践中,使用本地AsyncTask中的同步调用还是直接从Retrofit进行异步调用更好呢? 如果有一种方法比另一种更好,那么技术上的原因是什么?

1个回答

24

使用任何流行的REST客户端(如retrofit,volley等)的主要原因之一是它们减少了在应用程序层管理的细节。其中一个细节是确保您的网络请求发生在主线程之外。如果一个库已经为其他功能提供了相同的功能,为什么还要使用AsyncTask呢?我能想到的唯一原因是 —— 您认为库的线程处理不够好。这个问题不适用于retrofit 2,它使用OkHttp来分派异步调用。OkHttp已经存在一段时间并被广泛使用,它管理自己的线程池来执行异步请求,并且非常可靠。

因此,使用retrofit async的好处是代码更加简洁,而没有我所知道的与AsyncTask和retrofit sync调用相比的缺点。我只有当我的代码已经在另一个原因中执行在后台线程时,才使用同步调用。我从不单独创建线程或异步任务来进行网络调用,而是使用enqueue


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接