如何在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 获取响应并从 jquery ajax 调用执行操作?
Android 我应该使用 AsyncTask 还是 IntentService 进行 REST API 调用? [复制]