Amsheer Amsheer - 1 month ago 16
Android Question

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 server and in my Activity B I'm trying to download some other data from server .Both these are running in AsyncTask. My problem is when i trying to download data from server in Activity B onPreExecute() method was called but doInBackground() method was not called it is waiting up to the first Activity A's doInBackground() action finished . Why it is happened ? Is it possible to run more than one background actions at a same time ..

In Activity A

ImageButton submit_button = (ImageButton) findViewById(R.id.submit_button);

submit_button.setOnClickListener(new OnClickListener()
{
public void onClick(View record_button)
{
new Save_data().execute();
}
});
class Save_data extends AsyncTask<String, Integer, Integer>
{
protected void onPreExecute()
{

}
protected Integer doInBackground(String... arg0)
{
//uploading data here
}

}


In my Activity B

ImageButton get_button = (ImageButton) findViewById(R.id.get_button);
get_button.setOnClickListener(new OnClickListener()
{
public void onClick(View record_button)
{
new download_process().execute();
}
});
class download_process extends AsyncTask<String, integer, integer>
{
protected void onPreExecute()
{
Log.e("pre-execute","has been called");//This Log works well
}
protected Integer doInBackground(String... arg0)
{
//downloading data here
}
}

TCA TCA
Answer

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