我正在开发一个Android应用程序,我想在其中整合来自多个社交媒体的数据(家庭时间轴)。如果以串行方式完成,则进行API调用并从每个调用获得响应都会非常耗时。所以我想要一个并行环境来对facebook twitter Instagram等进行API调用,并在最短的时间内获取数据。
我目前使用异步任务从每个社交媒体中获取数据。即一个异步任务将调用facebook的api获取数据,第二个将调用twitter的api等等。我从UI线程调用所有异步任务。我认为所有异步任务都可以在并行环境中同时工作。但是在运行代码后,似乎一个异步任务阻止了其他人的工作,并且只能以串行方式调用它们。首先调用的异步任务首先完成工作,最后调用的最后一个asynctask最后完成工作。我用于开发的Android版本是4.3。我在android中搜索了THREAD POOL EXECUTOR以进行并行处理,但我没有明确的想法。如果有人能帮助我,那将是很棒的。提前致谢。
答案 0 :(得分:0)
不同版本的Android处理AsyncTasks的方式不同。在1.6之前,任务是连续处理的。从1.6到2.3.7,它们与线程池异步处理。从3.0起,他们又回到了连续处理它们。
您可以通过显式指定执行者来强制使用线程池。
而不是调用以下内容来执行任务
task.execute(param1, param2, ...)
呼叫
task.executeOnExecuter(AsyncTask.THREAD_POOL_EXECUTER, param1, param2, ...)