public abstract class BaseApiTask extends AsyncTask<Object, Void, TaskData> {
public interface ApiTaskCallback {
void onApiTaskListSuccess(BaseApiTask task, TaskData result);
void onApiTaskListError(BaseApiTask task,ServerApi.ApiCallException e);
}
public ApiTaskCallback mCallback;
public Context mContext;
//public ProgressDialog mDialog;
public ServerApi.ApiCallException mException;
public BaseApiTask(Context context) {
this.mContext = context;
//this.mDialog = new ProgressDialog(context);
}
@Override
protected void onPreExecute() {
//this.mDialog.setMessage(mContext.getResources().getString(R.string.loading));
//this.mDialog.show();
}
@Override
protected TaskData doInBackground(Object... objects) {
try {
return doWork(objects);
} catch (ServerApi.ApiCallException e) {
mException = e;
}
return null;
}
@Override
protected void onPostExecute(TaskData result) {
//if (mDialog.isShowing()) mDialog.dismiss();
if (mException == null) {
onResult(result);
} else {
// 公共错误处理
onError(mException);
}
}
public abstract TaskData doWork(Object... objects) throws ServerApi.ApiCallException;
public abstract void onResult(TaskData result);
public abstract void onError(ServerApi.ApiCallException e);
}