这是我的执行:
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 :(得分:1)
过度使用AsyncTask实际上是一种代码味道。我猜你的问题是你的Asynctasks没有被并行执行。要在API上执行paralel&gt; 11使用:
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?