ファイルとメッセージを送信するネットワーク要求を実行しています。現在のリクエストをキャンセルするオプションがあります。私は2つの同様の質問を見つけましたが、どちらも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();
}
});
それでは、どうすればリクエストを購読解除/キャンセルできますか?ありがとうございました。
RxJava2では、oserverのonSubscribeコールバックメソッドでDisposableオブジェクトを取得できます。これを使用して、サブスクリプションを破棄できます。
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()を呼び出すことができます。