Android 改装2+;RxJava取消/取消订阅

Android 改装2+;RxJava取消/取消订阅,android,retrofit2,rx-java2,Android,Retrofit2,Rx Java2,我正在执行网络请求,发送文件和消息。 我想有一个选项来取消当前的请求。我发现了两个类似的问题,它们都表明observable.subscribe(observator)返回Subscription对象,该对象具有方法unsubscribe() 在我的例子中,我使用了observatable.subscribe(observator),它是无效的。这是我的密码: Observable<MessengerRaw> observable = mModel.sendMessage(mes

我正在执行网络请求,发送文件和消息。 我想有一个选项来取消当前的请求。我发现了两个类似的问题,它们都表明
observable.subscribe(observator)
返回Subscription对象,该对象具有方法
unsubscribe()

在我的例子中,我使用了
observatable.subscribe(observator)
,它是无效的。这是我的密码:

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();
            }
        });
Observable-Observable=mModel.sendMessage(消息、同伴、描述、多部分);
可观察。订阅(新观察者(){
@凌驾
认购的公共无效(一次性d){
}
@凌驾
public void onNext(信使原始值){
如果(getView()!=null){
((Messenger活动)getView()).ResetMessenger视图();
((Messenger活动)getView()).updateMessageList();
}
}
@凌驾
公共无效申报人(可丢弃的e){
getData()。删除(0);
如果(getView()!=null){
((Messenger活动)getView()).updateMessageList();
}
}
@凌驾
未完成的公共空间(){
hideProgress();
}
});
那么我如何取消订阅/取消我的请求呢?
谢谢。

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

private Subscription mSubscription;

/.../

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

在rxjava2
observable.subscribe(newobservator(){/../})中
返回一次性对象,可以调用dispose()

在RxJava2中,您可以在oserver的onSubscribe回调方法中获取一次性对象,您可以使用该方法来处理订阅。

observate.subscribe(new observator(){/../});没有返回订阅的重载版本。有返回一次性、可观察和无效的版本;您是对的:@Override public void onSubscribe(Disposable d){}具有我可以调用dispose()并请求取消的一次性文件。谢谢您可以将其包含到您的答案中,以便其他人可以立即看到。很高兴这对您有所帮助。在RxJava 2中,没有属于RxJava 1的
Subscription.unsubscripte()
方法。我将此答案标记为已接受,因为它直接指向解决方案。以前接受的答案未正确编辑。干杯
if(!subscription.isUnsubscribed()){
    subscription.unsubscribe();
}