翻译
Disposable:用后即丢弃的;一次性的;可动用的;可自由支配的
举例
Observable.create(new ObservableOnSubscribe<Integer>() { //创建事件发射器
@Override
public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
emitter.onNext(1);
emitter.onNext(2);
emitter.onNext(3);
emitter.onComplete(); //调用此方法,emitter并没有停止发送事件,而是,observer不再接收事件,此处还会继续执45
emitter.onNext(4);
emitter.onNext(5);
}
})
.subscribe(new Observer<Integer>() { //绑定观察事件
private Disposable d;
@Override
public void onSubscribe(Disposable d) { //开始观察
Log.i("zqq","onSubscribe");
this.d=d;
}
@Override
public void onNext(Integer integer) { //事件接收
Log.i("zqq","onNext》》"+integer);
if(integer==2){
d.dispose(); //此处调用 d.dispose()
}
}
@Override
public void onError(Throwable e) { //ObservableEmitter 发送错误事件,或者出错时,onComplete()方法不能同时调用,调用后,onnext不再接收事件
Log.i("zqq","onError");
}
@Override
public void onComplete() { //事件发送结束 ObservableEmitter调用 onComplete()方法 与onError()方法不能同时调用,调用后,onnext不再接收事件
Log.i("zqq","onComplete");
}
});
结果:
由此可见:
1、Disposable.dispose() 可用于Observer停止接收Obserable发送的事件
2、Obserable的事件并没有停止发送,只是Observer停止接收了而已