I am using Retrofit 2.0 and Rx-android to load my APIs. I follow the section RxJava Integration with CallAdapter
at this site and it work fine. But, I don't know how to cancel a loading request with the observable object. Please help to give me an idea.
If you want to start loading - send True else False. 'switchMap' operator is designed to dispose previous observable. So it you send True it will start loading. If you send False it will dispose (cancel) previous observable.
The only way to cancel RxJava Observable execution - unsubscribe from it. RxJavaCallAdapter will delegate cancel to okhttp client.
So, you simple do smth like this:
Subscription subscription = getObservable().subscribe();
//When you want to stop execution
subscription.unsubsribe();
You can check out the code here. Concretely these lines if code
final Call<T> call = originalCall.clone();
// Attempt to cancel the call if it is still in-flight on unsubscription.
subscriber.add(Subscriptions.create(new Action0() {
@Override public void call() {
call.cancel();
}
}));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With