当我使用Observable.subscribe((时,通常会返回Disposable。
但是 Observable.subscribe(Observer( 返回 void。
所以我不能处置Observable.subscribe(Observer(。
根据 introtorx.com Observable.subscribe(Obeserver( 返回 Disposable。
为什么 rx 和 rxjava 不同?
++++++++++++
我在Android Studio中使用compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
。
github.com/ReactiveX/RxJava/blob/2.x/src/main/java/io/reactivex/Observable.java#L10831
public final void subscribe(Observer<? super T> observer) {
...
}
[[1]: https://i.stack.imgur.com/0owg1.png][1]
[[2]: https://i.stack.imgur.com/7H4av.jpg][2]
这可能是因为反应流合约。
反应式流自述文件
public interface Publisher<T> {
public void subscribe(Subscriber<? super T> s);
}
Publisher
的接口被定义为返回空。RxJava Flowable
实现了该接口。RxJava Observable
也遵循该合同。
因此,它们提供了一种subscribeWith()
,可以返回您的Disposable
而不是无效。或者你可以使用那些超载的方法,它可以给你一个一次性的,例如:subscribe(consumer<T>,consumer<Throwable>,action)
PS:高于我的猜测。我不确定。
在 RxJava2 中,Disposable 对象被传递给 Observer 的 onSubscribe 回调方法。您可以从 onSubscribe 回调方法获取一次性对象,并在将观察者订阅到可观察对象后的稍后时间点使用它来释放订阅。
您使用哪个版本的RxJava
?使用 RxJava2 ( io.reactivex.rxjava2
(:
public abstract class Observable<T> implements ObservableSource<T> {
...
public final Disposable subscribe() {...}
...
}