RxJava 2(一)基本使用
来源:互联网 发布:短信轰炸java源码 编辑:程序博客网 时间:2024/06/09 17:52
RxJava是ReactiveX在java平台上的实现。ReactiveX: An API for asynchronous programming with observable streams。stream可以是数据,也可以是事件。
本文基于RxJava 2.1.2描述基本使用,熟悉基本概念。在后面的文章中,名词会有大小写区分,observable表示可供订阅的意思,Observable表示RxJava中的io.reactivex.Observable类。同理observer表示订阅者,Observer表示RxJava中的io.reactivex.Observer接口。在链式调用中,操作符前面的称为上游,后面的称为下游。
导入依赖
compile 'io.reactivex.rxjava2:rxjava:2.1.2'compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
使用方法
RxJava的基本使用方式为
- 创建observable stream,即封装有数据或者事件的observable
- 用操作符组合或者变换stream
- 订阅observable stream并做出响应
- 必要时取消订阅
对应到代码中,大约会是这样
Disposable disposable = Observable.just("a", "b", "c") // 1.创建observable stream .take(1) // 2.变换stream .subscribe(new Consumer<String>() { // 3.建立订阅 @Override public void accept(String s) throws Exception { System.out.println(s); } }); disposable.dispose(); // 4.取消订阅
这样就实现了一个最基本的RxJava例子,我们对RxJava的实践最终都是和上面的一致。
下面继续了解具体的细节。
observable的创建
在RxJava中,有如下类可以作为observable,分别是Observable, Flowable, Maybe, Single, Completable,区别主要在于
各observable的创建方法基本一致,以Observable为例,它提供了最基本的create方法,同时提供了如just, fromArray, fromIterator, fromCallable, fromFuture, interval等方式快捷创建observable。
Observable o = Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(@NonNull ObservableEmitter e) throws Exception { e.onNext("hello"); e.onComplete(); } });
stream变换
Rxjava提供了一系列的操作符用于变换stream,操作符返回的同样是observable,方便连续变换。
以下随便列出4个操作符
建立订阅关系
订阅关系的建立主要是调用Observable的subscribe系列方法,最终都会调用到如下方法
public final void subscribe(Observer<? super T> observer)
上面的方法会建立最终订阅关系,不过由于需要管理订阅关系,所以一般不直接调用它,而是通过调用其它的subscribe方法间接调用到这里。
取消订阅
订阅后会返回Disposable对象,可以在必要时候手动调用Disposable.dispose()方法来切换订阅关系,比如android中onDestroy时需要取消网络请求。
CompositeDisposable可以看成是Disposable的集合,当有多个订阅关系即多个Disposable时,可以通过CompositeDisposable.add(disposable)放到一起,在必要的时候调用compositeDisposable.dispose()方法同时切断多个订阅关系。
- RxJava 2(一)基本使用
- RxJava使用(一)基本使用
- RxJava使用(一)基本使用
- RxJava使用(一)基本使用
- Adnroid RxJava的使用(一)基本用法
- 【Android】RxJava的使用(一)基本用法
- 【Android】RxJava的使用(一)基本用法
- RxJava使用(一)
- Android RxJava的基本使用一
- Rxjava(1.基本使用)
- RxJava的使用(一)
- Retrofit+RxJava实战日志(2)-基本使用
- RxJava的基本使用
- Rxjava基本使用
- RxJava的基本使用
- RxJava基本使用
- Rxjava基本使用
- RxJava的基本使用
- 【bzoj1103】[POI2007]大都市meg DFS序
- underscore用法,完整示例,喜欢就点赞加关注,以后会有更多惊喜
- js中for 和event
- 上传下载(sevlet实现)
- java基础学习总结——GUI编程(一)
- RxJava 2(一)基本使用
- visibility和hidden
- C++ 类的静态成员、友员函数
- poj1690 (Your)((Term)((Project))) (括号配对)
- 朴素贝叶斯算法(Naive Bayes)
- Qt5.9 for Android配置
- 内置方法
- redis计数器,redis并发锁
- 【Unity与23种设计模式】装饰模式(Decorator)