Skip to content Skip to sidebar Skip to footer

Is It Possible To Run Multiple Asynctask In Same Time?

I've two activities in my application. In my Activity A I'm using one AsyncTask and second Activity B also using another one AsyncTask. In my Activity A I've upload some data to se

Solution 1:

use executor as follows

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

See this

Solution 2:

Yes, it is, but since Honeycomb, there's a change in the way AsyncTask is handled on Android. From HC+ they are executed sequentially, instead of being fired in parallel, as it used to be. Solution for this is to run AsyncTask using THREAD_POOL_EXECUTOR executor explicitely. You can create helper class for that:

publicclassAsyncTaskTools {
    publicstatic <P, T extendsAsyncTask<P, ?, ?>> voidexecute(T task) {
        execute(task, (P[]) null);
    }
    
    @SuppressLint("NewApi")
    publicstatic <P, T extendsAsyncTask<P, ?, ?>> voidexecute(T task, P... params) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
        } else {
            task.execute(params);
        }
    }
}

and then you can simply call:

AsyncTaskTools.execute( newMyAsyncTask() );

or with params (however I rather suggest passign params via task constructor):

AsyncTaskTools.execute( new MyAsyncTask(), <your params here> );

Post a Comment for "Is It Possible To Run Multiple Asynctask In Same Time?"