目录
RxJava2基础认知
形式正确的有限Observable
调用观察者的onCompleted正好一次或者它的onError正好一次,而且此后不能再调用观察者的任何其它方法。如果onComplete或者onError走任何一个都会主动解除订阅关系.
- 如果解除订阅关系以后在发射 onError 则会 报错;而发射onComplete则不会
- 注意解除订阅关系 还是可以发射 onNext
Disposable类
- dispose():主动解除订阅
- isDisposed():查询是否解除订阅 true 代表 已经解除订阅
CompositeDisposable类
可以快速解除所有添加的Disposable类.
每当我们得到一个Disposable时就调用CompositeDisposable.add()将它添加到容器中, 在退出的时候, 调用CompositeDisposable.clear() 即可快速解除.
案例代码如下:
CompositeDisposable compositeDisposable=new CompositeDisposable();
Observable.create(new ObservableOnSubscribe<Integer>() {
@Override
public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
emitter.onNext(1);
emitter.onComplete();或者 emitter.onError(new Throwable("O__O "));
}
}).subscribe(new Observer<Integer>() {
private Disposable mDisposable;
@Override
public void onSubscribe(Disposable d) {
<!-- 订阅 -->
mDisposable = d;
<!-- 添加到容器中 -->
compositeDisposable.add(d);
}
@Override
public void onNext(Integer value) {
<!-- 判断mDisposable.isDisposed()如果解除了则不需要处理 -->
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
<!-- 解除所有订阅者 -->
compositeDisposable.clear();
基础概念
Scheduler scheduler
timer() alt+点击timer可查看 关于timer的方法 可以看到时候有这个参数的变体!
Callable bufferSupplier:自定义装载的容器
Observable.range(1, 10)
//() -> new ArrayList<>() bufferSupplier
.buffer(2, 1,() -> new ArrayList<>())
.subscribe(integers -> System.out.println(integers));