- 项目中以前用了些框架发现都是Afinal的。每次写请求的时候。总是要处理请求失败,或者是请求返回的结果不对,或者是session过期,等等每个请求都写的话,Activity看起来就臃肿了,所以下面对AfinalHttp的AjaxBack匿名类进行简单的分装,话不多说了,直接上代码。
public abstract class BaseAjaxBack extends AjaxCallBack<String> {
private Dialog dialog;
private BaseActivity baseActivity;
public BaseAjaxBack(Dialog dialog, BaseActivity baseActivity) {
this.dialog = dialog;
this.baseActivity = baseActivity;
}
@Override
public void onFailure(Throwable t, int errorNo, String strMsg) {
super.onFailure(t, errorNo, strMsg);
Toast.makeText(baseActivity, R.string.network_error, Toast.LENGTH_SHORT)
.show();
dialog.dismiss();
}
@Override
public void onSuccess(String t) {
JSONObject object = JsonUtils.create(t);
try {
String respCode = object.getString("respCode");
if (respCode.equals(Constant.LOGIN_STATUS_OVERDATE)) {
Toast.makeText(baseActivity, R.string.status_out_of_time,
Toast.LENGTH_SHORT).show();
baseActivity.jumpToLogin();
dialog.dismiss();
return;
} else if (!respCode.equals(Constant.SUCCESS_RESP_CODE)) {
Toast.makeText(baseActivity, JsonUtils.gets(object, "respMsg"),
Toast.LENGTH_SHORT).show();
dialog.dismiss();
return;
}
this.OnRequeSuccess(object.getJSONObject("data"));
dialog.dismiss();
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(baseActivity, R.string.network_error,
Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
super.onSuccess(t);
}
@Override
public void onStart() {
dialog.show();
super.onStart();
}
@Override
public void onLoading(long count, long current) {
super.onLoading(count, current);
}
public abstract void OnRequeSuccess(JSONObject data);
}
- 把AjaxBack分装成一个抽象类。在我们使用的时候,我们只需要实现OnRequeSuccess()这个抽象方法就可以了。用的时候也是很简单。看如下代码:
public void updateApp() {
FinalHttp fb = new FinalHttp();
String url = Constant.CHECK_UPDATE_URL;
fb.get(url, new BaseAjaxBack(Dialog,this) {
@Override
public void OnRequeSuccess(JSONObject data) {
Version version = GsonUtil.getObject(data.toString(),
Version.class);
int currentVersionCode = ComonUtils
.getVerCode(BaseActivity.this);
if (currentVersionCode < version.getVersioncode()) {
updateApp();
}
}
});
}
- 总结:其实很多时候发现自己写了重复一样的代码,这时候我们就得去思考下应该把他分装一下,或者是写成一个函数,这样等你下次想增加一个错误处理的时候,就不用再每个地方增加了,你就只需要修改一个地方就好了!