2014-02-15 98 views
0

這裏是我的執行:我怎樣才能讓我的多AsycTask工作

KlientNameValue kn = new KlientNameValue(getApplicationContext()); 
      ZamowienieNameValue zn = new ZamowienieNameValue(getApplicationContext()); 

      kn.new MyAsyncTask().execute(zam.klient.getNazwa(),zam.klient.getNip(),zam.klient.getAdres()); 
      zn.new MyAsyncTask().execute(zam.getSuma()); 
      for (int i = 0; i < MainActivity.lista_wybranych_towarow.size(); i++) { 
       TowarZamowienieName tzn = new TowarZamowienieName(getApplicationContext()); 
       tzn.new MyAsyncTask().execute(String.valueOf(MainActivity.valueYouWant),String.valueOf(MainActivity.lista_wybranych_towarow.get(i).getTow_id()),MainActivity.lista_wybranych_towarow.get(i).getTow_ilosc()); 
      } 

對於一個執行它的工作原理,但對兩個或兩個以上不應該怎麼辦?我想補充說,他們都必須執行,而點擊有地方。

+0

什麼是在API> 11使用相同常執行該代碼的問題? – m0skit0

+0

@ m0skit0僅執行第一次執行。 – user3310467

回答

1

過度使用AsyncTask確實是一種代碼異味。我想你的問題是你的Asynctasks不會以平行法執行。

new MyAsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, PARAMS);

甚至更​​好使用一個版本的功能:

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
    new MyAsyncTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); 
} else { 
    new MyAsyncTask().execute(); 
} 

更深入的解釋:

Running multiple AsyncTasks at the same time -- not possible?

+0

@V M所以我應該如何讓它代碼味道好? – user3310467

+0

你真的需要這麼多並行運行的任務嗎?看來管理他們將是一場噩夢。你確定只有使用一個在不同參數中調用相同函數的AsyncTask才能脫身嗎? – VM4

+0

@V M這是無價的建議!我會按你說的去做。非常感謝你 – user3310467

相關問題