Nie jestem ekspertem od Robospice/Retrofit. Ale jest to ogólne pytanie dotyczące połączenia HTTP.
Aby to osiągnąć, musisz napisać kod niskiego poziomu, aby połączyć się z serwerem. aby otworzyć strumień do usługi. w ten sposób możesz sprawdzić, czy strumień jest nadal otwarty. jeśli tak, dodaj nowe dane do tablicy, z której strumień już pobiera dane, aby wysłać je do usługi.
Ponieważ używasz tej biblioteki. To nie dotyczy. Twoim jedynym rozwiązaniem jest anulowanie/zatrzymanie połączenia i ustanowienie nowego.
To powinno być łatwe:
if(spiceManager.isStarted())
spiceManager.cancel(String.class, MY_REQUEST_CACHE_KEY);
A następnie rozpocząć nowy.
Uwaga: Istnieje możliwość, że na sprawdzenie, czy spiceManager zaczęły się prawdziwe. i przed anulowaniem połączenie spiceManager zostaje zakończone. W takim przypadku należy wziąć pod uwagę, aby nie przesyłać ponownie przesłanych informacji. to byłoby marnotrawstwo. To zależy od implementacji. możesz nie musieć wykonywać dodatkowej pracy dla tego .
Myślę, że musisz zaktualizować swoje pytanie z RoboSpice w tytule. To, co właśnie opisałeś, nie ma nic wspólnego z Retrofitem - nie obsługuje własnych usług. –
Czy mówisz, że chcesz wstrzymać połączenie na serwerze? i zatrzymać przesyłanie strumieniowe danych? kontynuować transmisję? – hasan83
@ hasan83 Jeśli to możliwe, tak. Jeśli nie, to przynajmniej w celu zatrzymania wykonywania procesu bg przed jego zakończeniem (w moim przypadku jest to ciężki proces, że jeśli użytkownik modyfikuje zestaw parametrów w działaniu, proces bg również musi zostać zmodyfikowany i ten proces jest zbyt ciężki, aby czekać na jego zakończenie i uruchomić go ponownie z nowymi parametrami). – qwerty