title: ASyncTasks blocking others
body: <p>I've 2 ASyncTasks, one retrieves a value from an httpPost and the other update some elements of the UI (including an listview).
  The problem is that since both ASyncTasks share the same background thread, if the network opperation start first and runs slow (due a bad network connectivity). The others background thread takes too much time making the app irresponsible.</p>
  
  <p>Since both ASyncTasks are independient is pretty stupid one to make wait the other. It would be more logical asynctasks different classes use different threads, am I wrong?</p>
  
  <p>Reading the <a href="http://developer.android.com/reference/android/os/AsyncTask.html">ASyncTask</a> doc. Talks about using  <strong>executeOnExecutor()</strong>, but how can I solve that in a API level lower than 11?</p>
  
  <p>Here goes a small example that reproduces the "problem"</p>
  
  <pre><code>        new Task1().execute();
          new Task2().execute();
  </code></pre>
  
  <p>With</p>
  
  <pre><code>public class Task1 extends AsyncTask&lt;Void, Void, Void&gt; {
  
      @Override
      protected Void doInBackground(Void... params) {
          GLog.e("doInBackground start 1");
          SystemClock.sleep(9000);
          GLog.e("doInBackground end 1");
          return null;
      }
  
      @Override
      protected void onPreExecute() {
          GLog.e("onPreExecute 1");
          super.onPreExecute();
      }
  
      @Override
      protected void onPostExecute(Void result) {
          GLog.e("onPostExecute 1");
          super.onPostExecute(result);
      }
  
  }
  
  public class Task2 extends AsyncTask&lt;Void, Void, Void&gt; {
  
      @Override
      protected void onPreExecute() {
          GLog.e("onPreExecute 2");
          super.onPreExecute();
      }
  
      @Override
      protected Void doInBackground(Void... params) {
          GLog.e("doInBackground start 2");
          SystemClock.sleep(9000);
          GLog.e("doInBackground end 2");
          return null;
      }
  
      @Override
      protected void onPostExecute(Void result) {
          GLog.e("onPostExecute 2");
          super.onPostExecute(result);
      }
  
  }
  </code></pre>