Sto usando Retrofit 2-beta2 con OkHttp 2.7.0.Retrofit 2/OkHttp: Annulla tutte le richieste in esecuzione
per ottenere l'oggetto OkHttpClient
da Retrofit sto usando il metodo Retrofit .client() e di cancellare tutto ciò che è in esecuzione richieste, sto chiamando è cancel(Object tag) metodo, ma le richieste ancora mantenere in esecuzione e ottengo una risposta.
Anche i numeri Dispatcher
del client e getRunningCallCount() restituiscono 0 dopo aver chiamato cancel().
C'è altro che devo fare affinché funzioni? O potrebbe essere un bug in OkHttp?
Come soluzione temporanea, sto chiamando shutdownNow()
sul client ExecutorService
ma preferirei una soluzione più pulita.
Dopo aver esaminato il codice sorgente ora capisco perché questo non funziona. Sto impostando il tag sulla 'Request' usando un intercettore creando quindi un nuovo oggetto' Request'. 'OkHttpClient.cancel (Object tag)' non fa nulla dal momento che l'originale 'Request' (su cui' cancel() 'viene chiamato poiché è presente nella coda di richieste di' Dispatcher') non ha ancora un set di tag. Sembra che Retrofit non esponga alcun metodo o interfaccia per impostare un tag sull'oggetto 'Request' originale. –