AfinalHttp的AjaxBack简单封装

来源:互联网 发布:金融类软件测试 编辑:程序博客网 时间:2024/06/05 09:02
  • 项目中以前用了些框架发现都是Afinal的。每次写请求的时候。总是要处理请求失败,或者是请求返回的结果不对,或者是session过期,等等每个请求都写的话,Activity看起来就臃肿了,所以下面对AfinalHttp的AjaxBack匿名类进行简单的分装,话不多说了,直接上代码。
/** * FinalHttp 简单封装 * @author Qiujc * */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();                }            }        });    }
  • 总结:其实很多时候发现自己写了重复一样的代码,这时候我们就得去思考下应该把他分装一下,或者是写成一个函数,这样等你下次想增加一个错误处理的时候,就不用再每个地方增加了,你就只需要修改一个地方就好了!
1 0