RxJava 基础的使用
学习地址:
github wiki 学习地址
ReactiveX 操作符学习地址
RxJava是ReactiveX(反应性扩展)的Java VM实现:一个用于通过使用可观察的序列组成异步和基于事件的程序的库。
RxJava 是基于观察者模式 里面有
Observable(被观察者)--->用来产生事件的
Observer(观察者)---> 接受事件并作出响应
Subscribe(订阅) --->连接 被观察者和观察者
现在呢Rxjava 到3.0 了, 使用首先 引入库
implementation "io.reactivex.rxjava3:rxjava:3.0.0-RC5"implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
1 引入库之后创建被观察者 ------->产生事件
// 1. 创建被观察者 Observable 对象Observable<String> observable =Observable.create(new ObservableOnSubscribe<String>() {@Overridepublic void subscribe(ObservableEmitter<String> emitter) {emitter.onNext("哈喽! Rxjava");emitter.onNext("嗨! Rxjava");emitter.onNext("喂! Rxjava");emitter.onComplete();}});
2 创建观察者 --------> 接受事件并作出响应
//创建观察者 (Observer )并 定义响应事件的行为Observer<String> observer = new Observer<String>() {@Overridepublic void onSubscribe(Disposable d) {Log.d("-----rxjava", "开始采用subscribe连接");}@Overridepublic void onNext(String value) {Log.d("-----rxjava", "对Next事件作出响应:" + value);}@Overridepublic void onError(Throwable e) {Log.d("-----rxjava", "对Error事件作出响应" + e);}@Overridepublic void onComplete() {Log.d("-----rxjava", "对onComplete事件作出响应:RxJava认识完成");}};
3 连接 被观察者和观察者
//通过订阅(Subscribe)连接观察者和被观察者observable.subscribe(observer);
整体的实现为-------------以一个button 点击事件为例
findViewById(R.id.rx_basic).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 1. 创建被观察者 Observable 对象Observable<String> observable =Observable.create(new ObservableOnSubscribe<String>() {@Overridepublic void subscribe(ObservableEmitter<String> emitter) {emitter.onNext("哈喽! Rxjava");emitter.onNext("嗨! Rxjava");emitter.onNext("喂! Rxjava");emitter.onComplete();}});//创建观察者 (Observer )并 定义响应事件的行为Observer<String> observer = new Observer<String>() {@Overridepublic void onSubscribe(Disposable d) {Log.d("-----rxjava", "开始采用subscribe连接");}@Overridepublic void onNext(String value) {Log.d("-----rxjava", "对Next事件作出响应:" + value);}@Overridepublic void onError(Throwable e) {Log.d("-----rxjava", "对Error事件作出响应" + e);}@Overridepublic void onComplete() {Log.d("-----rxjava", "对onComplete事件作出响应:RxJava认识完成");}};//通过订阅(Subscribe)连接观察者和被观察者observable.subscribe(observer);}});
打印结果
上将就是最基础的Rxjava 创建
我们常说RxJava 是基于事件流的链式调用 下面写一下链接的 ,上面的案例是为了更好的理解rxjava
//基于事件流的链式调用findViewById(R.id.rx_link_basic).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//创建被观察者 & 生产事件//create()作用是创建被观察者对象,是最基本的操作符,只有创建Observable.create(new ObservableOnSubscribe<String>() {@Overridepublic void subscribe(ObservableEmitter<String> emitter) {emitter.onNext("哈喽! Rxjava");emitter.onNext("嗨! Rxjava");emitter.onNext("喂! Rxjava");emitter.onComplete();}//subscribe订阅者连接观察者和被观察者//Observer 创建观察者 & 定义响应事件的行为}).subscribe(new Observer<String>() {@Overridepublic void onSubscribe(Disposable d) {Log.d("-----rxjava", "开始采用subscribe连接");}@Overridepublic void onNext(String s) {Log.d("-----rxjava", "对Next事件作出响应:" + s);}@Overridepublic void onError(Throwable e) {Log.d("-----rxjava", "对Error事件作出响应" + e);}@Overridepublic void onComplete(){Log.d("-----rxjava", "对onComplete事件作出响应:RxJava认识完成");}});}});
打印结果
以上就是Rxjava的认识, 可能你平时会看到 时候没有使用create() 被观察者也创建了
这里就要说一下操作符
create() 这个是操作符最基本的操作符,只有创建被观察者功能
其他的操作符,不仅有其他的功能 还有创建的功能 ,比如just()作用不仅能创建还能发射对象
下面在看一个例子
//just()作用不仅能创建还能发射对象等会通过案例对比下//just 的特点:1 创建被观察者对象 2 发送事件Observable.just("哈喽 Rxjava","嗨 Rxjava","喂! Rxjava").subscribe(new Observer<String>() {@Overridepublic void onSubscribe(Disposable d) {Log.d("-----rxjava", "开始采用subscribe连接");}@Overridepublic void onNext(String s) {Log.d("-----rxjava", "对Next事件作出响应:" + s);}@Overridepublic void onError(Throwable e) {Log.d("-----rxjava", "对Error事件作出响应" + e);}@Overridepublic void onComplete() {Log.d("-----rxjava", "对onComplete事件作出响应:RxJava认识完成");}});
有时候可能只要结果的时候就可以使用如下,直接返回结果
Observable.just("哈喽 Rxjava","嗨 Rxjava","喂! Rxjava").subscribe(new Consumer<String>() {@Overridepublic void accept(String s) {Log.d("-----rxjava", s);}});
下一边说一下RxJava 取消订阅.
RxJava 基础的使用相关推荐
- RxJava基础知识
RxJava基础知识 一.引入依赖 implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'implementation 'io.reactivex. ...
- RxJava 基础扫盲
引言:前几天浏览了一下稀土 App,发现有个挺不错的新闻 App 实战实例.正好最近想学习一下完整项目的源码(特别是后台代码,就是各种框架等等).然后想起以前很多大牛都谈起过 RxJava.Retro ...
- 初探RxJava(基础篇)
RxJava Observable (被观察者,事件源) Subscribers(观察者) 1.创建一个Observable对象很简单,直接调用Observable.create即可 Observab ...
- Android响应式编程(一)RxJava前篇[入门基础]
1.RxJava概述 ReactiveX与RxJava 在讲到RxJava之前我们首先要了解什么是ReactiveX,因为RxJava是ReactiveX的一种java实现. ReactiveX是Re ...
- 响应式编程android,Android响应式编程(一)RxJava[入门基础]
1.RxJava概述 ReactiveX与RxJava 在讲到RxJava之前我们首先要了解什么是ReactiveX,因为RxJava是ReactiveX的一种java实现. ReactiveX是Re ...
- [译] RxJava JDBC 简介
www.baeldung.com/rxjava-jdbc 作者:baeldung 译者:oopsguy.com 1.概述 简单地说,rxjava-jdbc 是一个用于与关系数据库交互的 API,其允许 ...
- RxJava+Retrofit+MVP+Dagger2
传说中的谷歌四件套,按顺序来哈~ 2017.2.20更新:对于用了一段时间的谷歌四件套的开发者们来说,基础应该都已经掌握的差不多了,但是四件套确实很博大精深,要想完全掌握,一是要学习使用技巧,二是要在 ...
- android retrofit2.0 rxjava2,Android - 网络请求之 Retrofit2 + RxJava
老婆保佑,代码无BUG 目录 引用 与其他开源请求库对比 Retrofit注解 使用 GET请求 POST请求 Retrofit2 + RxJava 基础使用 优化 封装Retrofit2 + RxJ ...
- retrofit与rxjava使用
retrofit和rxjava(加深) http://www.jianshu.com/p/64af68c5638c Android Retrofit + RxJava使用详解(基础) http://w ...
最新文章
- 常用数据挖掘算法简介
- 使用 OAS(OpenAPI标准)来描述 Web API
- jni c 传递对象到java_JNI将二进制数据从C传递到Java
- 面试:一文搞懂堆和栈的区别
- 【软考】面向对象程序设计复习指南
- 令人笑喷的56个代码注释,最后几个老衲实在憋不住了。。。
- 让你做个《五子棋》怎么存储棋盘上的棋子信息?
- 联想e550笔记本怎么样_摄像头是亮点 — Lenovo 联想 ThinkPad E550C 笔记本 简单评测...
- vue 表格固定首行首列(纯css)
- .obj文件格式与.mtl文件格式
- emeditor的快捷键
- 【Python案例】OCR提取图片中的文字
- 面试必看:java面试考点精讲视频教程
- python的实例和类.
- 6个理由告诉你为什么要用NAS
- TS文件下载器(按照M3U8列表 批量下载)
- 合理使用DTO(Data Transfer Object)
- 在线客服系统如何应对移动化市场需求
- mysql从一台电脑迁移_mysql数据库迁移到另一台电脑上
- js高级程序设计第四部分
热门文章
- IDEA中根据数据库自动生成实体类,并自定义所生成的实体类中的注解 @Table @Id @...
- 2022-2028年中国密胺塑料制品行业市场研究及前瞻分析报告
- 一道有意思的阶乘计算题
- 零基础入门--中文命名实体识别(BiLSTM+CRF模型,含代码)
- 字符串中匹配\n,\t 判读是否为nonetype类型
- 理解和实现分布式TensorFlow集群完整教程
- npm install遇到ENOENT: no such file or directory, rename错误
- LeetCode简单题之Fizz Buzz
- OpenCL™(开放计算语言)概述
- CodeGen融合核心关系循环扩展