Different versions of Android handle AsyncTasks differently. Prior to 1.6, tasks were handled serially. From 1.6 to 2.3.7 they were handled asynchronously with a thread pool. From 3.0 on they went back to handling them serially.
You can force the use of a thread pool by explicitly specifying the executer.
Instead of calling the following to execute your tasks
task.execute(param1, param2, ...)
call
task.executeOnExecuter(AsyncTask.THREAD_POOL_EXECUTER, param1, param2, ...)