当我使用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) {
...
}
答案 0 :(得分:2)
这可能是因为Reactive Stream合同。
public interface Publisher<T> {
public void subscribe(Subscriber<? super T> s);
}
Publisher
的接口定义为返回void。 RxJava Flowable
实现了该接口。并且RxJava Observable
也遵循该合同。
因此,他们提供subscribeWith()
来返回Disposable
而不是空格。或者你也可以使用那些可以给你一次性的重载方法:subscribe(consumer<T>,consumer<Throwable>,action)
PS:高于我的猜测。我不确定。
答案 1 :(得分:0)
您使用的是RxJava
的哪个版本?使用RxJava2(io.reactivex.rxjava2
):
public abstract class Observable<T> implements ObservableSource<T> {
...
public final Disposable subscribe() {...}
...
}
答案 2 :(得分:0)
在RxJava2中,Disposable对象被传递给Observer的onSubscribe回调方法。您可以从onSubscribe回调方法获取Disposable对象,并在将观察者订阅到observable之后使用它来处理订阅。