AfinalHttp的AjaxBack简单封装

  • 项目中以前用了些框架发现都是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();
                }

            }
        });
    }
  • 总结:其实很多时候发现自己写了重复一样的代码,这时候我们就得去思考下应该把他分装一下,或者是写成一个函数,这样等你下次想增加一个错误处理的时候,就不用再每个地方增加了,你就只需要修改一个地方就好了!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值