一,ReactiveX

要学习RxJava,那么不得不提他的由来ReactiveX,ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。ReactiveX是Reactive Extensions的缩写,一般简写为Rx,最初是LINQ的一个扩展,由微软的架构师Erik Meijer领导的团队开发;

二,Rx的发展

Rx这几年非常流行,以至于开发出多种语言版本,例如RxJava 、 RxGo 、RxJS、RxKotlin、RxPY、Rx.NET等等;Rx的大部分语言库由ReactiveX这个组织负责维护,社区网站是 reactivex.io。

三,RxJava

RxJava是响应式编程(Reactive Extensions)的java实现,它基于观察者模式的实现了异步编程接口。

Rxjava 3.x 的github官网;

Rxjava 3.0的一些改变:官方Wiki;

Rxjava 3.x 文档可以在官方javadoc中找到

1,Retrofit + RxJava3组合使用

首先要引入依赖

implementation

"io.reactivex.rxjava3:rxjava:3.0.0"

implementation 'io.reactivex:rxandroid:

1.

2.

1'

implementation 'com.squareup.retrofit

2:retrofit:

2.

7.

0'

implementation 'com.squareup.retrofit

2:adapter-rxjava

3:

2.

9.

0'

相关配置module下的build.gradle

android

{

compileOptions

{

sourceCompatibility

JavaVersion.VERSION_1_8

targetCompatibility

JavaVersion.VERSION_1_8

}

}

注意Retrofit和RxJava组合使用时,Retrofit中使用的rxjava适配器(adapter-rxjava3)要和RxJava版本(io.reactivex.rxjava3:rxjava:3.0.0)一致;如本例都是使用的时3.0;关于先前Rerotfit没有Rxjava3.0适配器问题;

创建Retrofit时如果要使用rxjava适配,注意不要写错,正确姿势如下代码:

Retrofit retrofit =

new Retrofit.Builder()

.addCallAdapterFactory(RxJava3CallAdapterFactory.createSynchronous())

// Or

// .addCallAdapterFactory(RxJava3CallAdapterFactory.createWithScheduler(Schedulers.io()))

.baseUrl(

"")

.build();

2,Retrofit + RxJava组合使用

如果要使用1.0可以这样添加依赖

implementation 'io.reactivex:rxjava:

1.

0.

14

implementation 'io.reactivex:rxandroid:

1.

0.

1'

implementation 'com.squareup.retrofit

2:retrofit:

2.

0.

2'

implementation 'com.squareup.retrofit

2:adapter-rxjava:

2.

0.

2'

Retrofit创建的正确姿势:

Retrofit retrofit =

new Retrofit.Builder()

.baseUrl(

"http://www.baidu.com/")

.addConverterFactory(GsonConverterFactory.create())

.build();

3,Retrofit + RxJava2.0组合使用

关于RxJava2.0的使用要从一个异常说起:

异常:

Could not locate call adapter for io.reactivex.Observable.

compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' RxJava适配器是1.0

所以换成RxJava2.0就可以了,原因Android项目中使用的是RxJava2.0,那么Retrofit要配合Rxjava使用,相应的要配置Rxjava2.0适配器;以此类推如果要使用Rxjava3.0那么相应的Retrofit中的

两种方式配置Retrofit中使用的RxJava2.0适配器

1,第三方的提供的RxJava2.0适配器

implementation  'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'

2,从Retrofit 2.2.0版开始,RxJava2有一个官方提供的适配器:

implementation 'com.squareup.retrofit2:adapter-rxjava2:2.2.0'

Retrofit retrofit = new Retrofit.Builder()

.baseUrl(baseUrl)

.client(new OkHttpClient.Builder().build())

.addCallAdapterFactory(RxJava2CallAdapterFactory.create()).build();

return retrofit.create(serviceClass);

四,Retrofit+Rxjava2具体使用案例

Retrofit+Rxjava2实现图片批量下载的功能

文章来源: blog.csdn.net,作者:Ang_qq_252390816,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/ezconn/article/details/109224878

android+3.0+java8_Android Retrofit2.0+RxJava3.0 基本使用相关推荐

  1. android retrofit2.0 rxjava2,Android - 网络请求之 Retrofit2 + RxJava

    老婆保佑,代码无BUG 目录 引用 与其他开源请求库对比 Retrofit注解 使用 GET请求 POST请求 Retrofit2 + RxJava 基础使用 优化 封装Retrofit2 + RxJ ...

  2. android6.0麦克风权限,android 6.0权限检测以及6.0以下,麦克风、相机权限判断

    android 6.0以上权限 android 6.0以上权限,我是通过PermissionsDispatcher进行申请,操作的,具体使用方法,见PermissionsDispatcher,Andr ...

  3. cocos2d-x 2.X for Android中需要使用OpenGL ES 2.0

    cocos2d-x 2.X for Android中需要使用OpenGL ES 2.0 到了2.X版本中,cocos2d-x for Android已经不再支持(或者说放弃支持)opengl es 1 ...

  4. Android动态权限管理模型(4.3-6.0)

    Google从4.3开始就试图引入AppOpsManager动态权限管理模型,但是,由于感觉技术不太成熟,在Release版本中,这个功能都是被隐藏掉的,所以官方Rom一直没有动态权限管理机制.直到A ...

  5. Android Studio:64K问题com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

    问题 AS安装报错: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536at com.andr ...

  6. android 4.0 电话录音,ANDROID音频系统散记之四:4.0音频系统HAL初探

    昨天(2011-11-15)发布了Android4.0的源码,今天download下来,开始挺进4.0时代.简单看了一下,发现音频系统方面与2.3的有较多地方不同,下面逐一描述. 一.代码模块位置 1 ...

  7. 【android】java.net.ConnectException: localhost/127.0.0.1:8080 - Connection refused

    调试中通过android simulator模拟器链接localhost或者127.0.0.1,因为我在电脑上面建立了apache,我的代码大概就是 URL url = new URL(urlStri ...

  8. Android 在popupWindow上用autoCompleteTextView报错(Android 6.0报错,8.0没有问题)

    在popupWindow上用autocompleteTextView报错,   android.view.WindowManager$BadTokenException: Unable to add ...

  9. ANDROID模拟器访问本地WEB应用10.0.2.2

    在一般的Java Web程序开发中,我们通常使用localhost或者127.0.0.1来访问本机的Web服务,但是如果我们在Android模拟器中也采用同样的地址来访问,Android模拟器将无法正 ...

最新文章

  1. python版本与编码的区别
  2. 矩阵元素求积及其矩阵元素的差分
  3. pandas基础(part4)--排序/分组/合并
  4. php实现金币提现,PHP实现微信提现功能
  5. 《大数据》2021年第5期目次摘要
  6. [Learn AF3]第七章 App framework组件之Popup
  7. 全球Top10最佳移动统计分析sdk
  8. YII 1.0 隐藏单入口index.php 设置路由与伪静态
  9. PHP验证时有用的几段代码
  10. HDFS_数据加密空间
  11. redis存储新闻列表_聊聊Redis使用场景
  12. 不知何时开学,接下来计划(罗勇军的浅谈程序设计竞赛的算法知识)
  13. 山外K66连接TLL注意事项
  14. 从墨刀上下载下来的原型html如何直接作为demo展示
  15. 魔方复原(BFS+剪枝)
  16. 红皮书——红色启示录
  17. 蝴蝶键盘 Linux,Macbook蝴蝶键盘与普通键盘有什么不一样? 蝶式结构键盘解析
  18. 【Java】动态代理原理分析
  19. MATLAB中nargin函数的用法nargin是用来判断输入变量个数的函数,这样就可以针对不同的情况执行不同的功能。通常可以用它来设定一些默认值。如下例所示: 函数文件 examp.m
  20. php rabbitmq 持久化 磁盘 setflags,PHP使用RabbitMQ

热门文章

  1. 代码审计之Catfish CMS v4.5.7后台作者权限越权两枚+存储型XSS一枚
  2. Infortrend EonStor GS赢得 “年度最佳混合式存储”大奖
  3. Tomcat虚拟主机配置
  4. 2015级C++第10、11周程序阅读 继承和派生
  5. 避免误删文件:Linux回收站机制
  6. 集群系统与事务处理需要注意的一点
  7. android webview 设置文字颜色,android webView 修改页面字体颜色
  8. android studio常用适配器,从ListView(Android Studio)的自定义适配器中的U...
  9. 网上书店黑盒测试_网上书店系统测试计划书.doc
  10. 合并报表调整、抵销分录的编制顺序