2016-08-03 37 views
1

Ich mache eine Anwendung Youtube API verwenden. Die erste verwende ich Retrofit, um Liste Video zu laden, dann fahre ich fort, Retrofit zu verwenden, um alle Informationen von Video in der Liste zu laden.Abbrechen alle Anfrage von Retrofit2

Da die listview Unterstützung aktualisieren und loadmore ich brauche cancel alle Anfrage zu erinnern.

Ich weiß Anruf haben cancel() Funktion zum Abbrechen der Anfrage. Ich kann alle Anfrage abbrechen, indem Sie alle Anruf zu einem Stapel und Anruf cancel() für jeden Anruf.

Gibt es eine bessere Lösung?

+0

[http://stackoverflow.com /questions/34367910/retrofit-2-okhttp-cancel-all-running-requests](http://stackoverflow.com/questions/343679 10/retrofit-2-okhttp-cancel-all-running-requests) –

+0

Ich habe diesen Thread gelesen. Aber ich weiß 'Retrofit.client(). Cancel (...)', die Funktion nicht gefunden. – phongvan

+0

in diesem Thread bereits verwendet "Dispatcher" für diese Becoz ich habe Check 'Dispatcher' hat 'cancelAll();' Methode –

Antwort

3

Angenommen, ich habe

HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY); 

OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); 

OkHttpClient client = httpClient.addInterceptor(interceptor).build(); 

Retrofit.Builder builder = 
     new Retrofit.Builder() 
       .baseUrl("MY URL") 
       .client(new OkHttpClient.Builder().addInterceptor(interceptor).build()) 
       .addConverterFactory(GsonConverterFactory.create()); 

OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); 

Now-Dienst mit Dispatcher erstellen und zu Retrofit

Dispatcher dispatcher=new Dispatcher(); 
dispatcher.setMaxRequests(totalRequest); 
httpClient.dispatcher(dispatcher); 

Retrofit retrofit = builder.client(client).build(); 
Service servicee = retrofit.create(serviceClass) 

und rufen Sie einfach aus, wo jeder

dispatcher.cancelAll(); 
+0

Wie Dispatcher die Anfrage stornieren, die bereits gebucht sind und es wird Callback ausgeführt werden. Wie ich Dispatcher onStop() verwendet habe, um Anfrage aber die laufende Anfrage abzubrechen. Aber auf dem langsamen Netzwerk. Die Anfragen, die gepostet werden, werden immer noch als Callback bezeichnet und führen zu einer Ausnahme. – Killer