Używam Retrofit 2.0 i Rx-android do ładowania moich interfejsów API. Postępuję zgodnie z sekcją RxJava Integration with CallAdapter
pod this site i działa dobrze. Ale nie wiem, jak anulować żądanie ładowania z obserwowalnym obiektem. Pomóż mi dać mi pomysł.Jak anulować żądanie za pomocą retofit2 i RxAndroid
6
A
Odpowiedz
17
Jedyny sposób, aby anulować zauważalne wykonanie RxJava - wypisz się z niego. RxJavaCallAdapter deleguje anulowanie do klienta okhttp.
Więc prosty coś zrobić tak:
Subscription subscription = getObservable().subscribe();
//When you want to stop execution
subscription.unsubsribe();
Możesz sprawdzić kod here. Dokładniej te linie, jeśli kod
Po prostu przetestować "unsubsribe()" i zobaczyć, że działa. Subskrybent nie będzie już wywoływany. Ale dlaczego okhttp continue drukuje log przez długi czas. Jak mogę sprawdzić, czy okhttp zostanie anulowane? –
Sprawdziłem też, działa, simpli drukuje GET i END GET. Ale oczywiście żadna prośba nie mogła zostać powstrzymana. Może być w tym przypadku. Ale nadal jest to jedyny sposób, aby anulować żądanie i jest to absolutnie to samo, aby anulować anulowanie połączenia. Możesz to sprawdzić umieszczając breakpoint na call.cancel(); na przykład –
Dziękuję, Wasilow. Ponieważ jest to tylko sposób, użyję go, dopóki nie znajdę lepszego rozwiązania. –