美文网首页Android-Rxjava&retrofit&dagger
RxEasyHttp网络库请求回调和订阅(四)

RxEasyHttp网络库请求回调和订阅(四)

作者: zhou_you | 来源:发表于2017-06-10 13:25 被阅读103次

    github源码地址:https://github.com/zhou-you/RxEasyHttp

    请求回调和订阅

    请求回调本库提供两种方式Callback和Subscriber

    回调方式

    此种方式主要针对execute(CallBack<T> callBack),目前内部提供的回调包含CallBack, SimpleCallBack ,ProgressDialogCallBack ,DownloadProgressCallBack 可以根据自己的需求去自定义Callback

    • CallBack所有回调的基类,抽象类
    • SimpleCallBack简单回调,只有成功和失败
    • ProgressDialogCallBack带有进度框的回调,可以自定义进度框、支持是否可以取消对话框、对话框消失自动取消网络请求等参数设置
    • DownloadProgressCallBack如果要做文件下载,则必须使用该回调,内部封装了关于文件下载进度回调的方法,如果使用其他回调也可以,但是没有进度通知

    该网络框架的核心使用方法即为Callback的继承使用,因为不同的项目需求,会有个性化的回调请自定义

    CallBack回调

    new CallBack<T>() {
                        @Override
                        public void onStart() {
                           //请求开始
                        }
    
                        @Override
                        public void onCompleted() {
                           //请求完成
                        }
    
                        @Override
                        public void onError(ApiException e) {
                           //请求失败
                        }
    
                        @Override
                        public void onSuccess(T t) {
                           //请求成功
                        }
                    }
    

    SimpleCallBack回调

    new SimpleCallBack<T>() {
                        @Override
                        public void onError(ApiException e) {
                             //请求失败
                        }
    
                        @Override
                        public void onSuccess(T t) {
                            //请求成功
                        }
                    }
    

    ProgressDialogCallBack回调

    可以自定义带有加载进度框的回调,取消对话框会自动取消掉网络请求

    提供两个构造

    public ProgressDialogCallBack(IProgressDialog progressDialog);//默认不能取消对话框
    public ProgressDialogCallBack(IProgressDialog progressDialog, boolean isShowProgress, boolean isCancel);//自定义加载进度框,可以设置是否显示弹出框,是否可以取消 progressDialog: dialog对象接口 isShowProgress:对话框消失是否取消网络请求 isCancel:是否可以取消对话框对应Dialog的setCancelable(isCancel)方法;

    自定义ProgressDialog对话框

     private IProgressDialog mProgressDialog = new IProgressDialog() {
            @Override
            public Dialog getDialog() {
                ProgressDialog dialog = new ProgressDialog(MainActivity.this);
                dialog.setMessage("请稍候...");
                return dialog;
            }
        };
    

    DownloadProgressCallBack回调

    此回调只用于文件下载,具体请看文件下载讲解

    自定义CallBack回调

    如果对回调有特殊需求,支持可以继承CallBack自己扩展功能

    订阅方式

    此种方式主要是针对execute(Class<T> clazz)和execute(Type type),目前内部提供的Subscriber包含BaseSubscriber、DownloadSubscriber、ProgressSubscriber,可以根据自己的需求去自定义Subscriber

    • BaseSubscriber所有订阅者的基类,抽象类
    • DownloadSubscriber下载的订阅者,上层不需要关注
    • ProgressSubscriber带有进度框的订阅,可以自定义进度框、支持是否可以取消对话框、对话框消失自动取消网络请求等参数设置
    new BaseSubscriber<T>() {
                @Override
                public void onError(ApiException e) {
                   //请求失败
                }
    
                @Override
                public void onNext(T t) {
                    //请求成功
                }
            }
    
    new ProgressSubscriber<T>(this, mProgressDialog) {
                        @Override
                        public void onError(ApiException e) {
                            super.onError(e);
                            //请求失败
                        }
    
                        @Override
                        public void onNext(T t) {
                             //请求成功
                        }
                    }
    

    自定义Subscriber

    如果对Subscriber有特殊需求,支持可以继承BaseSubscriber自己扩展订阅者

    相关文章

      网友评论

        本文标题:RxEasyHttp网络库请求回调和订阅(四)

        本文链接:https://www.haomeiwen.com/subject/xkgqqxtx.html