如何使我的多AsyncTask工作

时间:2014-02-15 23:04:17

标签: android android-asynctask

这是我的执行:

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());
            }

对于一次执行,它可以工作,但对于两个或更多,我不应该做什么?我想添加它们都必须在点击时执行。

1 个答案:

答案 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?