Ответ 1
В RxJava2 вы можете получить одноразовый объект в методе обратного вызова onSubscribe для oserver, который вы можете использовать для размещения подписки.
Я выполняю сетевой запрос, где я отправляю файлы и сообщение. Я хотел бы иметь возможность отменить текущий запрос. Я нашел два похожих вопроса, и оба предполагают, что observable.subscribe(Observer)
возвращает объект Subscription, у которого есть метод 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();
}
});
Итак, как мне отменить/отменить мой запрос? Спасибо.
В RxJava2 вы можете получить одноразовый объект в методе обратного вызова onSubscribe для oserver, который вы можете использовать для размещения подписки.
В 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>() {/.../});
возвращает одноразовый объект, вы можете вызвать dispose();