Wie behandelt Android Volley vorübergehend den Verlust der Netzwerkverbindung?

9

Wenn eine Android Volley-Post-Anfrage aufgrund eines Netzwerkverlusts fehlschlägt, wird Android Volley den Post erneut versuchen, nachdem die Netzwerkverbindung automatisch wiederhergestellt wurde? Wird es alle Anforderungsversuche auslösen, auf die Wiederherstellung der Verbindung warten oder einfach einen Fehler auslösen und stoppen?

Wenn Android Volley nach dem Wiederherstellen einer Verbindung keinen erneuten Versuch unternimmt, scheint es, dass ich Logik erstellen muss, damit ich bei jedem Verbindungsabbruch eine zusätzliche Warteschlange habe, und dies wird immer dann wiederholt, wenn sich der Verbindungsstatus ändert.

    
Bart Burg 07.02.2014, 12:51
quelle

4 Antworten

7
  

Wenn eine Android Volley-Post-Anfrage aufgrund eines Netzwerkverlusts fehlschlägt, wird Android Volley den Post erneut versuchen, nachdem die Netzwerkverbindung automatisch wiederhergestellt wurde?

Nein, wird es nicht. Ich bin vielleicht nicht einmal abhängig von Ihrer Anwendung gewünscht.

  

Wird es alle Anforderungsversuche auslösen, warten auf die Verbindung zu   wiederherstellen oder einfach einen Fehler auslösen und anhalten?

Es löst einfach einen Fehler aus. Und ja, Sie sollten diese Art von Logik selbst schreiben.

    
Androiderson 07.02.2014, 13:45
quelle
9

Nach dieser Link:

Es gibt keine direkte Möglichkeit, den Anforderungszeitlimitwert in Volley anzugeben, aber es gibt eine Problemumgehung. Sie müssen eine RetryPolicy für das Anforderungsobjekt festlegen. Die DefaultRetryPolicy-Klasse verwendet ein Argument namens initialTimeout, mit dem ein Anforderungstimeout angegeben werden kann. Stellen Sie sicher, dass die maximale Wiederholungsanzahl 1 ist, damit Volley die Anforderung nicht erneut versucht, nachdem das Zeitlimit überschritten wurde.

%Vor%

Wenn Sie fehlgeschlagene Anfragen wiederholen möchten (wegen Zeitüberschreitung), können Sie auch angeben, dass Sie mit dem obigen Code die Wiederholungsanzahl erhöhen. Beachten Sie das letzte Argument, mit dem Sie einen Backoff-Multiplikator angeben können, der zur Implementierung von "Exponentialbackoff" verwendet werden kann, den einige RESTful-Dienste empfehlen.

Der Link enthält viele nützliche Tipps und Tricks zur Verwendung von Volley. Hoffe das hilft!

    
The Hungry Androider 07.02.2014 13:31
quelle
3

Falls eine IOException auftritt (z. B. java.net.ConnectException), verwendet Volley nicht die Wiederholungsrichtlinie. Volley verwendet nur die Wiederholungsrichtlinie im Falle von SocketTimeoutException, ConnectTimeoutException oder wenn der HTTP-Antwortcode 401 (verboten) oder 302 (dauerhaft verschoben) lautet.

    
funcoder 06.01.2015 09:45
quelle
0

Wenn Sie (AsyncHttpClient) verwenden, können Sie versuchen, diese Methode aufzurufen:

%Vor%     
Amer Ziebak 20.10.2016 12:49
quelle