package com.qubling.sidekick.job;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.AsyncTask;
public class JobExecutor extends AsyncTask<Runnable, Void, Void> {
private Activity activity;
private List<Runnable> plan;
public JobExecutor(Activity activity) {
this.activity = activity;
this.plan = new ArrayList<Runnable>();
}
public void addCommand(Runnable command) {
plan.add(command);
}
public void addCommand(Runnable command, final Runnable followup) {
plan.add(command);
if (followup != null) {
plan.add(new Runnable() {
@Override
public void run() {
activity.runOnUiThread(followup);
}
@Override
public String toString() {
return "UI Notify " + followup;
}
});
}
}
@Override
protected Void doInBackground(Runnable... finalCommands) {
// Log.d("JobExecutor", "doInBackground() Starting Jobs");
for (Runnable command : plan) {
// Log.d("JobExecutor", "Start " + command);
command.run();
// Log.d("JobExecutor", "End " + command);
}
// Log.d("JobExecutor", "doInBackground() Ending Jobs");
// Log.d("JobExecutor", "doInBackground() Starting Final Jobs");
for (Runnable command : finalCommands) {
// Log.d("JobExecutor", "Start Final " + command);
command.run();
// Log.d("JobExecutor", "End Final " + command);
}
// Log.d("JobExecutor", "doInBackground() Ending Final Jobs");
return null;
}
}