相关文章:
Android 知识点总结(目录)
Rxjava2.0 -map() Consumer() Function()方法
Rxjava2.0 - 压背
基本的Rxjava2.0
Observable(被观察者)/Observer(观察者)
带有压背的 Rxjava2.0
Flowable(被观察者)/Subscriber(观察者)
背压是指在异步场景中,被观察者发送事件速度远快于观察者的处理速度的情况下,一种告诉上游的被观察者降低发送速度的策略
BackpressureStrategy.BUFFER)//需要指定背压策略
Flowable.create(new FlowableOnSubscribe<String>() {
@Override
public void subscribe(FlowableEmitter e) throws Exception {
e.onNext("1");
}
}, BackpressureStrategy.BUFFER)//需要指定背压策略
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new Subscriber() {
Subscription sub ;
@Override
public void onSubscribe(Subscription s) {
sub = s;
sub.request(1);
}
@Override
public void onNext(Object o) {
}
@Override
public void onError(Throwable t) {
}
@Override
public void onComplete() {
}
});
Subscription
传入的Subscription s参数可以用于请求数据或者取消订阅
sub.request(1);
request(n)来告诉上游发送多少个数据。这样避免了大量数据堆积在调用链上,使内存一直处于较低水平。
可以通过Disposable 的 dispose()方法中途 停止接收
Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter e) throws Exception {
e.onNext("1");
e.onNext("2");
e.onNext("3");
e.onNext("4");
e.onNext("5");
e.onComplete();
e.onNext("6");
e.onNext("7");
}
}).observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new Observer<String>() {
Disposable dis ;
@Override
public void onSubscribe(Disposable d) {
dis = d ;
}
@Override
public void onNext(String value) {
Log.i("info", "onNext()------" + value);
count ++ ;
if (count == 2 ){
dis.dispose();
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});