这是因为Honeycomb中的AsyncTask管理改变了.以前,如果您启动了3个AsyncTasks,则它们同时运行.由于HC,如果您的targetSdk设置为12或更高版本,那么它们将逐个排队并执行(参见
this discussion).为了正常工作,您可以通过以下方式启动AsyncTasks:
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,params);
代替:
task.execute(params);
如果您还定位较旧的Android,则需要条件代码:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,params);
} else {
task.execute(params);
}
或将其包装在一个单独的帮助类中:
public class Utils {
public static
> void executeAsyncTask(T task) {
executeAsyncTask(task,(P[]) null);
}
@SuppressLint("NewApi")
public static
> void executeAsyncTask(T task,P... params) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,params);
} else {
task.execute(params);
}
}
}
并且使用将是:
Utils.executeAsyncTask( new MyAsyncTask() );