如何在android中执行并行REST API调用

Posted

技术标签:

【中文标题】如何在android中执行并行REST API调用【英文标题】:How to execute parallel REST API calls in android 【发布时间】:2013-08-01 20:39:56 【问题描述】:

您好,我正在开发安卓应用程序。我的应用程序包含用于从服务器获取数据的 REST API 调用。所以我的申请要求是这样的:

考虑我有 2 个 REST API 调用都是独立的;这意味着两者不相互依赖;所以我想要并行执行。与两个不同活动关联的两个 API 调用的结果。

我想在后台运行这两个网络调用。不想在 UI 线程上执行。

我对以下几个解决方案感到困惑: 为每个网络调用使用单独的异步任务。如果我执行 10 个与异步任务并行的调用会怎样?

使用意图服务:意图服务是在后台并行处理多个网络调用的良好解决方案。

如何以适当的方式处理这个问题。为此需要好的解决方案。需要帮忙。谢谢你。

【问题讨论】:

您好,感谢您的快速重播。如果我想运行 10 个网络调用,那么我必须使用 10 个 sync 任务,对吗?是否会影响我的应用和应用Ui? 我认为你不应该使用那个数量的 asyncTask 但不会影响 UI @nilkash:您可以使用一个 AsyncTask 进行所有 API 调用和响应回 Activity 或使用接口的任何其他位置 @jayesh 感谢您的重播。如果我一次运行 4 个询问任务,它们会并行运行吗? @nilkash:是的,它们将并行运行 【参考方案1】:

在 2 个 AsyncTask 上执行将起作用。但是,在 android 3.0 或更高版本上,您需要调用 task.executeOnExecutor(THREAD_POOL_EXECUTOR, params) 而不是执行。如果您不这样做,则 AsyncTask 的 3.0 实现一次只能连续运行 1 个任务。如果你这样做,它会使用一个包含大约 5 个线程的池来运行它们。

【讨论】:

感谢 Gabe sechan 的帮助。我还有一个问题,为什么我们不能使用意图服务?两者之间的平均差异。感谢您的帮助 好吧,IntentService 是串行工作的——它先执行一个请求,然后执行另一个请求。所以如果你想并行运行它们是行不通的。除此之外,您可以使用 IntentService 来完成,这确实是一个偏好问题。 所以异步任务为新请求创建新线程,但意图服务在同一个线程上工作,这就是为什么它是串行的,对吗? 对。请记住,AsyncTask 需要在 3.0+ 上调用 executeOnExecutor,否则它也会按顺序执行。

以上是关于如何在android中执行并行REST API调用的主要内容,如果未能解决你的问题,请参考以下文章

如何对 REST api 执行异步 axios 调用并更新存储(redux thunk 令人困惑)?

如何在 Django Rest Framework 中处理并行请求?

如何在rest api调用中构造json并使其同步

在 PySpark SQL 中并行执行读写 API 调用

如何从 REST API 获取响应并从 jquery ajax 调用执行操作?

Android 我应该使用 AsyncTask 还是 IntentService 进行 REST API 调用? [复制]