RxAndroid 不为观察者返回订阅

RxAndroid not returning Subcription for the observer

我已经开始学习 RxAndroid,下面是我编写的代码,用于迭代包含从服务器获取的数据的模型对象(结果)。我在可观察对象中迭代模型对象,并在观察者中提供一个新创建的对象。我正在尝试订阅观察者以在 Orientation changes 片段时取消订阅任务。但是 subscribe() returns VOID 而不是订阅对象。

问题:

Observable 的 subscribe() 方法 returns RxJava 早期版本和当前版本中的订阅对象 returns Disposble 的对象 class 可以通过调用 dispose() 方法取消订阅.

对于你的第二个问题,你可以查看这个答案Best practice: AsyncTask during orientation change

2.x 中的 Observable.subscribe(Observer<? super T>) 方法 returns void 因为 Observer.onSubscribe(Disposable) 是为了获得过去 [=14] 的取消支持=] 在 1.x 中。

final CompositeDisposable composite = new CompositeDisposable();

Observable<Integer> source = Observable.just(1)

source.subscribe(new Observer<Integer>() {
    @Override public void onSubscribe(Disposable d) {
        composite.add(d);   // <---------------------------------------------
    }
    @Override public void onNext(Integer t) {
        System.out.println(t);     
    }

    @Override public void onError(Throwable e) {
        e.printStackTrace();
    }
    @Override public void onComplete() {
        System.out.println("Done");
    }
});

composite.add(source
         .subscribeWith(  // <-----------------------------------------------
new DisposableObserver<Integer>() {
    @Override public void onNext(Integer t) {
        System.out.println(t);     
    }

    @Override public void onError(Throwable e) {
        e.printStackTrace();
    }
    @Override public void onComplete() {
        System.out.println("Done");
    }
});