android - android : asynchronous request or synchronous request in AsyncTask? 的 Retrofit 2 最佳实践

标签 android android-asynctask retrofit

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

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

最佳答案

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

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

关于android - android : asynchronous request or synchronous request in AsyncTask? 的 Retrofit 2 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33713190/

相关文章:

java - 使用 SAX Parser,获取属性的值

java - Android 中使用 AsyncTask 时有关线程已停止或未进行中的问题

java - AsyncTask 在方法(.cancel)之后仍然运行

android - 使用 OkHttp 或 Retrofit 将文件上传到 AWS S3 存储桶

java - 我如何在 Retrofit 库中使用 Gson?

android - 使用 Retrofit 进行连续的 api 调用并返回 observable

java - 简单的计算器应用程序不断崩溃

java - Google 应用内购买返回错误代码 6

android - 更新 ListView 中的进度条

android - 从 AsyncTask 中的 Activity 访问实例变量