One solution would be to create an AsyncTask object in your AsyncTask class like:
class Task extends AsyncTask {
AsyncTask next;
public void setNext(AsyncTask next){
this.next=next;
}
//in last line of post execute
if(next!=null){
next.execute();
}
}
now your code would be:
Task t=new Task();
Task t1=new Task();
Task t2=new Task();
t.setNext(t1);
t1.setNext(t2);
t.execute();
2nd way would be to create your own threadpool like:
class ThreadPool implements Runnable {
ConcurrentLinkedQueue<AsyncTask> tasks = new ConcurrentLinkedQueue<AsyncTask>();
Activity activity;
public ThreadPool(Activity activity) {
this.activity = activity;
}
boolean stop = false;
public void stop() {
stop = true;
}
public void execute(AsyncTask task) {
tasks.add(task);
}
@Override
public void run() {
while (!stop) {
if (tasks.size() != 0) {
final AsyncTask task = tasks.remove();
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
task.execute();
}
});
}
}
}
}
and your code would be:
ThreadPool pool=new ThreadPool(this);
pool.start();
.. some code
pool.execute(new task());
.. other code
pool.execute(new task());
.. other code
pool.execute(new task());