RxJava+Retrofit+OkHttp深入浅出-终极封装六特殊篇(变种String替换Gson自由扩展)

背景

在之前的封装1-5Rxjava+ReTrofit+okHttp深入浅出-终极封装中我们都是通过传统的GsonConverterFactory自动解析,这样做确实很方便,用户能直接获取返回的对象,不用关心具体的转换,但是:这随之而来有很多的缺陷(虽然官网推荐这样使用);

比如:无法使用其他第三发转换框架;泛型无法中间传递,封装无法统一处理缓存结果;回调信息无法统一处理;服务器返回格式不严谨null解析异常……….
所以我们在享受它遍历的同时也被迫的要限制做很多的处理,限制我们的扩展!

本章就介绍如何放弃GsonConverterFactory,直接返回String,扩展我们的封装!(封装的整体思想和之前的封装一样,所以不会有大的改动!)

无须担心,本篇封装单独作为一个项目和之前封装分开,便于大家选择!


效果

这里写图片描述


功能

完全具备和之前封装一样的功能,这里改用fastjson处理

    1.Retrofit+Rxjava+okhttp基本使用方法

    2.统一处理请求数据格式

    3.统一的ProgressDialog和回调Subscriber处理

    4.取消http请求

    5.预处理http请求

    6.返回数据的统一判断

    7.失败后的retry处理

    8.RxLifecycle管理生命周期,防止泄露

    9.文件上传下载(支持多文件,断点续传)

    10.Cache数据持久化和数据库(greenDao)两种缓存机制

    11.一对多回调接口处理

对比

话说没有比较就没有进步,所以大家比较下前后封装的各自的优缺点,自行选择合适自己的方案!

使用

Gson方案:

    //    完美封装简化版
    private void simpleDo() {
        SubjectPostApi postEntity = new SubjectPostApi(simpleOnNextListener,this);
        postEntity.setAll(true);
        HttpManager manager = HttpManager.getInstance();
        manager.doHttpDeal(postEntity);
    }

    //   回调一一对应
    HttpOnNextListener simpleOnNextListener = new HttpOnNextListener<List<SubjectResulte>>() {
        @Override
        public void onNext(List<SubjectResulte> subjects) {
            tvMsg.setText("网络返回:\n" + subjects.toString());
        }

        @Override
        public void onCacheNext(String cache) {
            /*缓存回调*/
            Gson gson=new Gson();
            java.lang.reflect.Type type = new TypeToken<BaseResultEntity<List<SubjectResulte>>>() {}.getType();
            BaseResultEntity resultEntity= gson.fromJson(cache, type);
            tvMsg.setText("缓存返回:\n"+resultEntity.getData().toString() );
        }

        /*用户主动调用,默认是不需要覆写该方法*/
        @Override
        public void onError(Throwable e) {
            super.onError(e);
            tvMsg.setText("失败:\n" + e.toString());
        }

        /*用户主动调用,默认是不需要覆写该方法*/
        @Override
        public void onCancel() {
            super.onCancel();
            tvMsg.setText("取消請求");
        }
    };

String方案


    //    完美封装简化版
  
  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 35
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值