Android_Okgo网络请求增加自定义的DialogCallBack

     发送网络请求时,可能因为网络较慢或上传文件较大,导致后台加载时间过长,为了优化用户体验,可以给用户一个网络正在请求的dialog提示.提示用户"正在加载".但是每次请求网络都new 一个Dialog,并在网络请求的回调中去show 和dismiss显然代码太冗余,因此使用okgo时,可以自定义一个继承StringCallBack的DialogCallBack,在每次开始请求时提示用户,请求成功或失败后dismiss

使用前必须选依赖Okgo

    源码如下

public abstract class DialogCallBack extends StringCallback {

    ProgressDialog dialog;

    public DialogCallBack(Context activity){
        super();
        initDialog(activity);
    }

    private void initDialog(Context activity) {
        if (dialog == null){
            dialog = new ProgressDialog(activity);
            dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
            dialog.setCanceledOnTouchOutside(false);
            dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
            dialog.setMessage("加载中...");
        }
    }

    @Override
    public void onStart(Request<String, ? extends Request> request) {
        super.onStart(request);
        if (dialog != null && !dialog.isShowing()){
            dialog.show();
        }
    }

    @Override
    public void onFinish() {
        super.onFinish();
        if (dialog != null && dialog.isShowing()){
            dialog.dismiss();
            dialog = null;
        }
    }

    @Override
    public void onError(Response<String> response) {
        super.onError(response);
        if (!NetUtil.isNetWorkEnable(dialog.getContext())){
            ToastUtil.showToast(dialog.getContext(),"网络异常");
            if (dialog.isShowing()){
                dialog.dismiss();
                dialog = null;
            }
        }
    }
}

调用方法:

      OkGo.<String>post(IUrls.GET_NEXT_XUANDAO)
                .params("caseId", caseId)
                .params("userId", userId)
                .execute(new DialogCallBack(context) {
                    @Override
                    public void onSuccess(Response<String> response) {
                       
                    }

                    @Override
                    public void onError(Response<String> response) {
                      
                    }
                });



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值