Fork me on GitHub

RxJava2(1)

简介

RxJava2 提供一套基于观察者模式异步编程的API,且链式调用。

响应式编程

响应式编程:一种基于异步数据流概念的编程模式。在这里你可以将数据想象成一条河流:他可以被观测、被过滤、被操作或者成为新的消费者与另一条数据流合并成为一条新的数据流。

异步

单线程同步模型:

多线程模型:

异步模型:

如何开始

  • 基本元素

    1. 被观察者(Observable)
    2. 观察者(Observer)
    3. 订阅(subscribe)
      相信理解了观察者模式的很好理解这些概念。
  • 在Gradle文件中添加依赖

    1
    2
    implementation "io.reactivex.rxjava2:rxjava:2.1.15"
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'

示例应用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//创建被观察者
Observable observable = Observable.create(new ObservableOnSubscribe() {
@Override
public void subscribe(ObservableEmitter emitter) throws Exception {
Log.i(TAG, "subscribe thread: " + Thread.currentThread().getName());
emitter.onNext(1);
emitter.onNext(2);
emitter.onNext(3);
emitter.onComplete();
}
});

//创建观察者
Observer observer = new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {
Log.i(TAG, "onSubscribe: ");
}

@Override
public void onNext(Integer i) {
Log.i(TAG, "onNext: " + i);
}

@Override
public void onError(Throwable e) {
Log.i(TAG, "onError: " + e.toString());
}

@Override
public void onComplete() {
Log.i(TAG, "onComplete: ");
}
};

//建立订阅关系
observable.subscribe(observer);

输出结果

1
2
3
4
5
6
onSubscribe: 
subscribe thread: main
onNext: 1
onNext: 2
onNext: 3
onComplete:

解释

被观察者可以发送如下几种事件

事件种类 作用
onNext() 被观察者发送该事件,观察者onNext()接收
onError() 被观察者发送该事件,观察者onError()接收,之后不再接收其他事件
onComplete() 被观察者发送该事件,观察者onComplete()接收,之后不再接收其他事件

RxJava2流程