【问题标题】:fetching data in parallel [closed]并行获取数据[关闭]
【发布时间】:2014-02-17 17:55:40
【问题描述】:

我正在开发一个 android 应用程序,我想在其中集成来自多个社交媒体的数据(家庭时间线)。如果以串行方式进行 API 调用并从它们中的每一个中获取响应,会有点耗时。所以我想要一个并行环境来对 facebook twitter Instagram 等进行 API 调用,并在最短的时间内获取数据。

我目前使用异步任务从每个社交媒体获取数据..即一个异步任务将调用 facebook 的 api 来获取数据,第二个将调用 twitter 的 api 等等。我从 UI 线程调用所有异步任务。我认为所有异步任务都将在并行环境中同时工作。但是在运行代码之后,似乎一个异步任务会阻止其他任务的工作,并且它们只能以串行方式调用。第一个被调用的异步任务首先完成工作,最后一个被调用的异步任务最后完成工作。我用于开发的 Android 版本是 4.3。我已经在 android 中搜索了 THREAD POOL EXECUTOR 以进行并行处理,但我没有一个明确的想法。如果有人可以帮助我,那就太好了。提前致谢。

【问题讨论】:

  • 现在我的问题可能不是太宽泛 :)

标签: android android-asynctask parallel-processing threadpoolexecutor


【解决方案1】:

不同版本的 Android 处理 AsyncTask 的方式不同。在 1.6 之前,任务是按顺序处理的。从 1.6 到 2.3.7,它们使用线程池异步处理。从 3.0 开始,他们又开始按顺序处理它们。

您可以通过显式指定执行器来强制使用线程池。

而不是调用以下来执行你的任务

task.execute(param1, param2, ...)

打电话

task.executeOnExecuter(AsyncTask.THREAD_POOL_EXECUTER, param1, param2, ...)

【讨论】:

  • 感谢您的回复。我会试试你告诉的:)
  • 您的回答很有用。谢谢 :) 我节省了很多时间来获取数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-10
  • 2012-12-28
  • 2016-04-01
  • 2021-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多