J'effectue une demande réseau où j'envoie des fichiers et un message. Je voudrais avoir une option pour annuler la demande en cours. J'ai trouvé deux questions similaires et les deux suggèrent que observable.subscribe(Observer)
renvoie un objet d'abonnement qui a la méthode unsubscribe()
.
Dans mon cas, j'utilise observable.subscribe(Observer)
qui est nul. Voici mon code:
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();
}
});
Alors, comment puis-je me désinscrire/annuler ma demande? Merci.
Dans RxJava2, vous pouvez obtenir un objet jetable dans la méthode de rappel onSubscribe d'oserver, que vous pouvez utiliser pour supprimer l'abonnement.
Dans RXJava, vous devez utiliser les abonnements pour vous désabonner
private Subscription mSubscription;
/.../
Observable<MessengerRaw> observable = mModel.sendMessage(message, companion, description, multiParts);
Subscription subscription = observable.subscribe(new Observer<MessengerRaw>() {/.../});
Lorsque vous souhaitez vous désinscrire, vous pouvez appeler
if(!subscription.isUnsubscribed()){
subscription.unsubscribe();
}
Dans RXJava 2 observable.subscribe(new Observer<MessengerRaw>() {/.../});
renvoie un objet jetable, vous pouvez appeler dispose ();