RxJava的主要使用场景是Android,本片文章只关注其Java逻辑,限于应用层。
maven项目导入依赖 =》pom.xml
<dependency>
<groupId>io.reactivex.rxjava2</groupId>
<artifactId>rxjava</artifactId>
<version>2.0.3</version>
</dependency>
RxJava2主要有以下需要注意的5个元素:
- Observable(被观察者、通过其创建可观察序列:create()方法、通过subscribe注册一个观察者)
- Observer(观察者接受数据,subscribe方法参数)
- Disposable(接口:dispose()方法和isDisposed()方法,用于取消订阅和获取当前订阅状态)
- ObservableOnSubscribe(当订阅时触发调用,向订阅者发送数据用的接口)
- Emitter(即,onNext()、onError()、onComplete)
任务调度器的几个使用场景
Observable<String> observable = Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> observableEmitter) throws Exception {
observableEmitter.onNext("Hello");
observableEmitter.onComplete();
}
}).subscribeOn(Schedulers.io());
public static Scheduler computation() {return RxJavaPlugins.onComputationScheduler(COMPUTATION);}
public static Scheduler io() {return RxJavaPlugins.onIoScheduler(IO);}
public static Scheduler trampoline() {return TRAMPOLINE;}
public static Scheduler newThread() {return RxJavaPlugins.onNewThreadScheduler(NEW_THREAD);}
public static Scheduler single() {return RxJavaPlugins.onSingleScheduler(SINGLE);}
1. 例子:
// 创建observable
Observable observable = Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> observableEmitter) throws Exception {
observableEmitter.onNext("I");
observableEmitter.onNext("Love");
observableEmitter.onComplete();
}
});
// 线程变换
observable.subscribeOn(Schedulers.io());
// 创建Observer
Observer observer = new Observer<String>() {
@Override
public void onSubscribe(Disposable disposable) { System.out.println("订阅状态:"+disposable.isDisposed()); }
@Override
public void onNext(String s) { System.out.println("onNext执行逻辑:"+ s); }
@Override
public void onError(Throwable throwable) { System.out.println("onError"); }
@Override
public void onComplete() { System.out.println("onComplete"); }
};
// 订阅
observable.subscribe(observer);
//执行结果:
//订阅状态:false
//onNext执行逻辑:I
//onNext执行逻辑:Love
//onComplete
2.API
=====================================================================
初始 | Observable observable = Observable.create(new ObservableOnSubscribe<String>() {
@Override public void subscribe(ObservableEmitter<String> observableEmitter) throws Exception { observableEmitter.onNext("I"); observableEmitter.onComplete(); } }); observable.subscribeOn(Schedulers.io()); Observer observer = new Observer<String>() { @Override public void onSubscribe(Disposable disposable) { System.out.println("订阅状态:"+disposable.isDisposed()); } @Override public void onNext(String s) { System.out.println("onNext执行逻辑:"+ s); } @Override public void onError(Throwable throwable) { System.out.println("onError"); } @Override public void onComplete() { System.out.println("onComplete"); } }; |
create | Observable observable = Observable.create(new ObservableOnSubscribe<String>() {
@Override public void subscribe(ObservableEmitter<String> observableEmitter) throws Exception { observableEmitter.onNext("I"); observableEmitter.onComplete(); } }); |
just | // 发送的事件不超过10个 observable.just("1","2","3").subscribe(observer); |
fromArray | // 发送事件超过10个,或者传入数组 observable.fromArray("1","......10").subscribe(observer); String array[] = {"1","2","3"}; observable.fromArray(array).subscribe(observer); |
fromCallable | |
fromFuture | |
fromIterable | // 用于可以迭代的对象 如List List<String> list = new ArrayList<>() |