2014-02-15 196 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

相关问题