Android:AsyncTask中的HTTP请求不是并发的

Android:AsyncTask中的HTTP请求不是并发的,android,concurrency,android-asynctask,Android,Concurrency,Android Asynctask,我正在为写一个粉丝应用程序,它显示了未来几天的放映日历。每天的电影列表是通过从网站上获取的(答案包含希伯来语,因此如果你点击链接并听到一些胡言乱语,可能就可以了) 该应用程序显示了未来八天的日程安排,因此它每天会通过日程安排请求拨打8个电话 private class GetMoviesTask extends AsyncTask<Integer, Void, List<Film>> 问题是AsyncTask不是并发执行的。日子一天接一天慢慢地过去了,这真是太慢了:

我正在为写一个粉丝应用程序,它显示了未来几天的放映日历。每天的电影列表是通过从网站上获取的(答案包含希伯来语,因此如果你点击链接并听到一些胡言乱语,可能就可以了)

该应用程序显示了未来八天的日程安排,因此它每天会通过日程安排请求拨打8个电话

private class GetMoviesTask extends AsyncTask<Integer, Void, List<Film>>
问题是AsyncTask不是并发执行的。日子一天接一天慢慢地过去了,这真是太慢了:


并发启动这些异步调用的最佳方法是什么?

基本上,AsyncTask只为您创建一个在后台运行的线程

你可以通过两种方式实现你想要的

  • 首先,您可以为每个操作创建单独的异步任务
  • 其次,在doInBackground方法中创建多个线程并进行并发请求和进程。之后,您可以通过将这些线程发布到onProgressUpdate或onPostExecute来通知UI
检查这个


AsyncTask
在安卓4.x中出现了倒退,系统一次执行一个任务,而不是像安卓1.6以来那样并发执行。这是出于设计:基本上,在较新的平台上,您可以通过调用
executeOnExecutor()
而不是
execute()
来恢复到旧的并发行为。马克·墨菲(被称为StackOverflow)在他的博客上发表了一篇文章。

为什么它必须是平行的?为什么不按顺序进行呢?”我想在这种情况下,我会考虑顺序的HTTP呼叫,这是一种专业的尴尬。当我可以在
~TIME\u PER\u CALL
中即时提供信息时,为什么要让用户等待
8*(每次通话的时间)
。谢谢你的链接!
for (int i=0; i<NUMBER_OF_DAYS_TO_VIEW; i++){
    new GetMoviesTask().execute(i);
}