Android 异步任务的封装


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);
}

posted on 2016-07-28 23:05  2015xbx  阅读(624)  评论(0编辑  收藏  举报

导航