我正在执行网络请求,我发送文件和消息。
我想有一个取消当前请求的选项。我发现了两个类似的问题,两者都表明observable.subscribe(Observer)
返回了具有方法unsubscribe()
的Subscription对象。
就我而言,我使用的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();
}
});
那么如何取消订阅/取消我的请求? 谢谢。
答案 0 :(得分:12)
在RxJava2中,您可以在oserver的onSubscribe回调方法中获取Disposable对象,您可以使用它来处理订阅。
答案 1 :(得分:3)
在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>() {/.../});
返回Disposable对象,你可以调用dispose();