Android开发 retrofit入门讲解 (RxJava模式)

2023-10-26

前言

  retrofit除了正常使用以外,还支持RxJava的模式来使用,此篇博客讲解如何使用RxJava模式下的retrofit

依赖

    implementation 'com.squareup.retrofit2:retrofit:2.6.2'
    implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
    //多了三个需要依赖的RxJava
    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
    implementation 'io.reactivex.rxjava2:rxjava:2.2.2'
    implementation 'io.reactivex.rxjava2:rxandroid:2.1.0' //提供 AndroidSchedulers.mainThread()

 

简单的Demo

  创建接口类

public interface RxHttpList {
    
    @FormUrlEncoded
    @POST("test/login_test")
    Observable<LoginBean> login(@Field("number") String number, @Field("password") String password);
}

  创建Retrofit

    private void initRxHttpBase() {
        mRetrofit = new Retrofit.Builder()
                .baseUrl("http://doclever.cn:8090/mock/5c3c6da33dce46264b24452b/")
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();
    }

  请求网络

private void rxPostHttp() {
        RxHttpList rxHttpList = mRetrofit.create(RxHttpList.class);
        Observable<LoginBean> observable = rxHttpList.login("13113", "1131311");
        observable.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<LoginBean>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(LoginBean loginBean) {
                        Log.e(TAG, "onNext: 请求成功 code=" + loginBean.getCode());
                        Log.e(TAG, "onNext: 请求成功 message=" + loginBean.getMessage());

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onComplete() {

                    }
                });
        
    }

RxJava模式下的取消网络请求

 private void rxPostHttp() {
        RxHttpList rxHttpList = mRetrofit.create(RxHttpList.class);
        Observable<LoginBean> observable = rxHttpList.login("13113", "1131311");
        observable.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<LoginBean>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        //把Disposable引用到全局就可以用来取消网络请求
//                        d.dispose();//取消网络请求

                    }

                    //略......
                });

    }

 

 

 

 

end

posted on 2019-09-29 17:01  观心静 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/guanxinjing/p/11608810.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android开发 retrofit入门讲解 (RxJava模式) 的相关文章

随机推荐

  • SELECT CASE WHEN 的用法

    1 SELECT CASE WHEN 的用法 select 与 case结合使用最大的好处有两点 一是在显示查询结果时可以灵活的组织格式 二是有效避免了多次对同一个表或几个表的访问 下面举个简单的例子来说明 例如表 students id
  • Android和H5那些不可描述的事情...

    今日科技快讯 近日 代表了750家移动运营商利益的全球移动通信系统协会的行业分析报告显示 禁止从中国供应商购买通信设备 将使欧洲5G网络成本增加约550亿欧元 并将导致该技术的推出延迟18个月左右 在路透社报道中提到的中国供应商 除了华为
  • 深度之眼(五)——Python组合数据类型

  • springcloud----负载均衡--Ribbon与LoadBalance

    简介 Spring Cloud Ribbon 是 Netflix Ribbon 实现的一套客户端 负载均衡工具 简单的说 Ribbon 是 Netflix 发布的开源项目 主要功能是提供 客户端的复杂均衡算法和服务调用 Ribbon 客户端
  • Pico-I / O嵌入式模块提供48点数字I / O接口

    WinSystems的PCO UIO48 G是具有中断事件检测功能的48点数字I O接口 Pico I O嵌入式模块旨在为Pico ITXe单板计算机提供低成本的I O扩展 该产品的主要功能之一是 它可以监视24个上升和下降的数字边沿转换
  • spring容器使用接口注入

    spring为何要注入接口 而注入实现类就会报错 如果只是单纯注入是可以用实现类接收注入对象的 但是往往开发中会对实现类做增强 如事务 日志等 实现增强的AOP技术是通过动态代理实现的 而spring默认是JDK动态代理 对实现类对象做增强
  • Linux(V4L2驱动)下获得Opencv摄像头属性(图像输出格式和是否发生往RGB的转换)的方法

    Opencv可通过cvGetCaptureProperty函数 或者VideoCapture get int proID 来获取摄像头输出图像的属性 但返回的是个double的值 如何查看图像输出的编码格式呢 其实可以看到 编码格式是个宏定
  • 通信仿真软件SystemView安装全流程详细解释(下载,安装,闪退,读条无反应)

    systemview简介 systemview 通信仿真软件 5 0 是一款模拟软件 这款软件主要是进行信号仿真的操作 支持支持滤波器设计 信号仿真和通信系统统计分析 软件内的功能非常丰富 操作也很简单 是一款非常不错的软件 有需要的小伙伴
  • HDFS读数据流程

    准备工作 1 首先客户端进入分布式文件系统去寻找数据块的位置 利用得到的文集文件块位置来要求名称节点返还部分块这些返还的节点会按照HADOOP中关于集群拓扑来得出客户端的距离然后进行排序 开始读取数据 1客户端利用FSDataInputSt
  • 聚观早报

    聚观365 9月14日消息 iPhone 15系列正式发布 月饼专利申请超10000项 五个女博士 自建研究院 2023中国民营企业研发十强公布 华为和小米达成全球专利交叉许可协议 iPhone 15系列正式发布 2023年苹果秋季新品发布
  • hook库

    detourattach detourRestoreAfterWith detourTransactionBegin detourUpdatethread getcurrentthread
  • 使用ChatGPT生成代码

    无需翻墙 1 下载安装cursor 首先进入官网 https www cursor so 点击 Download for windows 下载并安装好cursor 2 使用方法 打开后界面如下 打开 py或者 json文件 然后点击按键盘
  • echarts初始化宽度小于容器宽度

    查找资料是因为echarts的容器还没有创建出来的时候echarts就已经加载出来了 因为获取不到容器的宽高就会默认宽高100 是100px 所以会缩小在一起 因为我的代码中 echarts的容器的最外层的div给的样式是display n
  • 分布式事务学习总结

    1 基础概念 1 1 什么是事务 事务可以看做是一次大的活动 它由不同的小活动组成 这些活动要么全部成功 要么全部失败 1 2 本地事务 在计算机系统中 更多的是通过关系型数据库来控制事务 这是利用数据库本身的事务特性来实现的 因此叫数据库
  • echarts报错:Error in mounted hook: “TypeError: Cannot read properties of undefined (reading ‘init‘)“

    echarts安装创建图表时报这种错误 Error in mounted hook TypeError Cannot read properties of undefined reading init 1 具体报错内容 2 解决办法 原先大
  • Java基本数据类型

    Java中有以下几种基本数据类型 这些类型都是值类型 类型 值范围 大小 范围 boolean true或false 1位 char Unicode字符 16位 u0000 uFFFF byte 有符号整数 8位 128 127 short
  • [Linux打怪升级之路]-环境变量

    前言 作者 小蜗牛向前冲 名言 我可以接受失败 但我不能接受放弃 如果觉的博主的文章还不错的话 还请点赞 收藏 关注 支持博主 如果发现有问题的地方欢迎 大家在评论区指正 目录 一 认识环境变量 二 获取环境变量的三种方法 1 通过gete
  • 贝叶斯分类器(贝叶斯决策论,极大似然估计,朴素贝叶斯分类器,半朴素贝叶斯分类器,贝叶斯网)学习笔记

    贝叶斯分类器 贝叶斯决策论 极大似然估计 朴素贝叶斯分类器 半朴素贝叶斯分类器 贝叶斯网 学习笔记 一 条件概率 全概率公式 贝叶斯公式 二 贝叶斯决策论 贝叶斯决策论是概率框架下实施决策的基本方法 对分类任务来说 在所有相关概率都已知的理
  • wsl2 网络代理设置

    在 WSL2 环境中 clone 一个很大的 git 项目 不走代理速度很慢 所以研究了一下怎么让 WSL2 走 Windows 的代理客户端 WSL1 和 WSL2 网络的区别 在 WSL1 时代 由于 Linux 子系统和 Window
  • Android开发 retrofit入门讲解 (RxJava模式)

    Android开发 retrofit入门讲解 RxJava模式 前言 retrofit除了正常使用以外 还支持RxJava的模式来使用 此篇博客讲解如何使用RxJava模式下的retrofit 依赖 implementation com s