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

Ada*_*tan 4 concurrency android android-asynctask

我正在为我当地的电影中心写一个粉丝应用程序,它显示了接下来几天的筛选日历.使用来自网站的参数化HTTP调用来检索每日电影列表(答案包含希伯来语,因此如果您点击链接并获得一些Gibberish,则可能是正常的).

该应用程序显示接下来八天的日程安排,因此它会针对每日日程安排请求进行8次调用.

private class GetMoviesTask extends AsyncTask<Integer, Void, List<Film>>
Run Code Online (Sandbox Code Playgroud)

doInBackground()每天检索电影列表,并onPostExecute()更新界面.

MainActivity.onCreate()以下位置调用AsyncTask :

for (int i=0; i<NUMBER_OF_DAYS_TO_VIEW; i++){
    new GetMoviesTask().execute(i);
}
Run Code Online (Sandbox Code Playgroud)

问题是AsyncTask不是并发执行的.这些日子一个接一个地缓慢加载,这是非常缓慢的:

在此输入图像描述

在此输入图像描述

在此输入图像描述

同时启动这些AsyncCalls的最佳方法是什么?

Giu*_*lli 12

AsyncTask已经知道,打了一个回归中的Android 4.x中,在系统执行它们一次一个,而不是同时执行它们,因为它们由于Android 1.6做的.这是设计的:基本上,在较新的平台上,您可以通过调用executeOnExecutor()而不是来恢复旧的并发行为execute().Mark Murphy(在StackOverflow上称为Commonsware)在他的博客上排序所有细节.