Android Volley Gibt die Ergebnisse für eine Anfrage zweimal zurück

8

Ich habe versucht, dieses Problem seit zwei Tagen herauszufinden, und ich bin völlig ratlos. Aus irgendeinem Grund sende ich eine Anfrage an die Warteschlange, aber Volley gibt sie zweimal zurück, was den Listener zweimal aufruft und die Ergebnisse in meiner Listenansicht verdoppelt. Ich habe die Protokollierung für Volley aktiviert, und ich kann sehen, dass die Anfrage zur Warteschlange hinzugefügt und zurückgegeben wird. Ein paar Sekunden später wird dieselbe Anfrage ebenfalls zurückgegeben. Melde dich unter

%Vor%

Wie Sie sehen, sagt es nie, dass eine weitere Anfrage hinzugefügt wurde, noch sagt es, dass mehr als eine Anfrage im Flug war. Wenn ich den Cache lösche, bekomme ich das gleiche Ergebnis, nur die erste Anfrage kommt vom Netzwerk und die zweite wird vom Cache zurückgegeben. Ich habe versucht, meinen Code zu debuggen und zu durchlaufen, aber ich sehe nie, dass die Anfrage mehr als einmal eingereiht wird. Hat das jemand schon mal gesehen? Irgendwo wo ich sonst hinschauen sollte?

Danke

Edit: Hier ist der Code, wo ich volley starte und wo ich es nenne.

%Vor%     
user3001044 17.11.2013, 06:43
quelle

2 Antworten

5

Ich glaube, ich habe es herausgefunden, nachdem ich den Code mehr durchgegangen bin. Ich glaube, dass es das Softttl ist, das dieses Verhalten verursacht. In der Volley cachedispatcher

%Vor%

Dies sendet die Antwort und sendet sie dann an das Netzwerk, das eine weitere Antwort an denselben Listener sendet.

    
user3001044 18.11.2013 05:01
quelle
0

Um die Mehrfachanforderung zu stoppen, können Sie die Wiederholungsrichtlinie für Ihr Anforderungsobjekt mithilfe der Methode setRetryPolicy () des Anforderungsobjekts konfigurieren. Ich habe es mit folgendem Code geschafft:

%Vor%

Mit dem obigen Code habe ich das Timeout auf 2 Sekunden reduziert und die Anzahl der Wiederholungen auf 0 gesetzt.

    
Sujewan 24.08.2015 10:33
quelle

Tags und Links