2015-05-10 6 views
1

У меня есть небольшое сомнение в выполнении Async. задача: я хочу свести к минимуму время, затраченное на HTTP-запросы, выполняемые моим приложением, поэтому после некоторого R & D в Интернете я выбрал вариант, описанный ниже. Мой вопрос заключается в использовании кода, описанного ниже, мои запросы будут обрабатываться параллельно, если да, то это лучший эффективный метод, если не так, как я могу заставить их выполнять параллельно, чтобы пользователю не приходилось много ждать! С наилучшими пожеланиями.AsyncTasks параллельное выполнение

if (isInternetAvailable) { 

      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 


       new DownloadXmlTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, URLORDERLIST); 
       new DownloadXmlTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, URLORDERDETAILS); 
       new DownloadXmlTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, URLCUSTOMERDETAILS); 

      } else { 


       new DownloadXmlTask().execute(URLORDERLIST); 
       new DownloadXmlTask().execute(URLORDERDETAILS); 
       new DownloadXmlTask().execute(URLCUSTOMERDETAILS); 

      } 


      handler.post(new Runnable() { 

       @Override 
       public void run() { 
        Toast.makeText(
          getApplicationContext(), 
          "Fetch Data", 
          Toast.LENGTH_LONG).show(); 
       } 
      }); 
     } else { 
      handler.post(new Runnable() { 

       @Override 
       public void run() { 
        Toast.makeText(

          getApplicationContext(), 
          "Please Try Again Later,No internet Connectivity Detected!", 
          Toast.LENGTH_SHORT).show(); 

       } 
      }); 
     } 
+1

Да будет выполняться параллельно, попробуйте использовать 'executeOnExecutor (Asy ncTask.SERIAL_EXECUTOR, mArgs); 'и вы увидите разницу в том, насколько медленнее это –

+0

возможный дубликат [параллельной параллельной работы AsyncTask] (http://stackoverflow.com/questions/13910508/running-parallel-asynctask) –

ответ

3

Редактировать

  1. task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params) для параллельного выполнения
  2. task.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR, params) для последовательного выполнения
  3. task.execute() по умолчанию/обычно используется опция
Смежные вопросы