从Javadoc:
[
Cancellable是]具有单个可以抛出的cancel方法的功能接口。
该
Disposable不是一个功能界面以及实现它的时候
dispose()方法,你不能抛出checked异常。
与此相反,许多非RxJava组件返回
Closeable或者
AutoCloseable它们通过定义
throwsIOException和
throws Exception和是一个负担,有些因为你需要的try-catch它。
例如,
setCancellable在处理文件时要使用:
Observable.create((ObservableEmitter<byte[]> e) -> { FileInputStream fin = new FileInputStream("raw.dat"); e.setCancellable(fin::close); byte[] buffer = new byte[4096]; for (;;) { int r = fin.read(buffer); if (r < 0) { break; } e.onNext(buffer); } e.onComplete();});你会使用
setDisposable,如果您使用的是
Scheduler:
Observable.create((ObservableEmitter<Event> e) -> { Worker worker = Schedulers.io().createWorker(); e.setDisposable(worker); eventSource.onEvent(es -> worker.schedule(() -> e.onNext(es)) );});


