package com.jobmineplus.mobile.widgets; import android.os.AsyncTask; public class DatabaseTask<Result> extends AsyncTask<DatabaseTask.Action, Void, Result> { public static enum Action {PUT, GET}; protected IDatabaseTask<Result> callbackObj; private Action pendingAction; public DatabaseTask(IDatabaseTask<Result> obj) { callbackObj = obj; pendingAction = null; } public void executePut() { execute(Action.PUT); } public void executeGet() { execute(Action.GET); } public boolean isFinished() { return getStatus() == Status.FINISHED; } @Override protected Result doInBackground(Action... params) { if (params[0] == Action.PUT) { pendingAction = Action.PUT; return callbackObj.doPutTask(); } else { pendingAction = Action.GET; return callbackObj.doGetTask(); } } @Override protected void onPostExecute(Result result) { super.onPostExecute(result); callbackObj.finishedTask(result, pendingAction); pendingAction = null; } public interface IDatabaseTask<Result>{ Result doPutTask(); Result doGetTask(); void finishedTask(Result result, DatabaseTask.Action action); } }