改造 2 + RxJava cancel/unsubscribe

Retrofit 2 + RxJava cancel/unsubscribe

我正在执行发送文件和消息的网络请求。 我想要取消当前请求的选项。我发现了两个类似的问题,都表明 observable.subscribe(Observer) returns Subscription object which has method unsubscribe().

在我的例子中,我使用 observable.subscribe(Observer),这是无效的。这是我的代码:

Observable<MessengerRaw> observable = mModel.sendMessage(message, companion, description, multiParts);
        observable.subscribe(new Observer<MessengerRaw>() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(MessengerRaw value) {
                if (getView() != null) {
                    ((MessengerActivity) getView()).resetMessegeView();
                    ((MessengerActivity) getView()).updateMessageList();
                }
            }

            @Override
            public void onError(Throwable e) {
                getData().remove(0);
                if (getView() != null) {
                    ((MessengerActivity) getView()).updateMessageList();
                }
            }

            @Override
            public void onComplete() {
                hideProgress();
            }
        });

那么我如何unsubscribe/cancel 我的请求? 谢谢。

在 RXJava 中您必须使用订阅来取消订阅

private Subscription mSubscription;

/.../

Observable<MessengerRaw> observable = mModel.sendMessage(message, companion, description, multiParts);
Subscription subscription = observable.subscribe(new Observer<MessengerRaw>() {/.../});

想退订的时候可以拨打

if(!subscription.isUnsubscribed()){
    subscription.unsubscribe();
}

在 RXJava 2 observable.subscribe(new Observer<MessengerRaw>() {/.../}); returns 一次性对象,可以调用 dispose();

在RxJava2中,可以在oserver的onSubscribe回调方法中获取Disposable对象,用于dispose subscription