小案例
Flowable.create(new FlowableOnSubscribe<String>() {
@Override
public void subscribe(FlowableEmitter<String> e) throws Exception {
if (!e.isCancelled()){
e.onNext("test");
e.onComplete();
}
}
}, BackpressureStrategy.DROP).subscribe(new Subscriber<String>() {
@Override
public void onSubscribe(Subscription s) {
s.request(Long.MAX_VALUE);
System.out.println("onSubscribe");
}
@Override
public void onNext(String s) {
System.out.println("onNext:" + s);
}
@Override
public void onError(Throwable t) {
System.out.println("onError");
}
@Override
public void onComplete() {
System.out.println("onComplete");
}
});
基本元素
Flowable
- 易流动的 — 被观察者,支持背压
- 通过Flowable创建一个可观察的序列(create方法)
- 通过 Subscribe 注册一个观察者
Subscriber
- 一个单独的接口,和Observer的方法类似
- 作为Flowable的 subscribe方法的参数
Subscription
- 订阅,和Rxjava1 的有所不同
- 支持背压,有用于背压的request方法
FlowableOnSubscribe
- 当订阅时会触发此接口调用
- 在Flowable内部,实际作用是向观察者发射数据
Emitter
- 一个发射数据的接口,与Observer的方法类似
- 本质是对Observer和Subscriber的包装
脑图地址
https://www.processon.com/view/link/5afbf867e4b096c6eeb35454