Ich benutze RoboSpice mit OkHttpClient Modul (OkHttpSpiceService) für ziemlich lange Zeitanforderungen. Zu diesem Zweck muss ich die Timeouts des HTTP-Clients erhöhen, also habe ich sie auf 120 Sekunden gesetzt und gesetzt.Laufzeit des Aufrufs von loadDataFromNetwork() von RoboSpice Service erhöhen
@Override
protected OkHttpClient createOkHttpClient() {
OkHttpClient okHttpClient = super.createOkHttpClient();
okHttpClient.setConnectTimeout(120, TimeUnit.SECONDS);
okHttpClient.setReadTimeout(120, TimeUnit.SECONDS);
okHttpClient.setWriteTimeout(120, TimeUnit.SECONDS);
return okHttpClient;
}
I-Caching-Option nicht verwenden, so dass ich SpiceRequest rufe von
getSpiceManager().execute(spiceRequest, this);
Danach SpiceService loadDataFromNetwork()
alle 30 Sekunden (3 mal) aufgerufen wird, wenn das Ansprechen nicht oder steht vor der Tür ist in dieser kurzen Zeit nicht erreichbar .
Ist es möglich, die Zeit des Aufrufs loadDataFromNetwork()
zu erhöhen oder zu ändern? Ich weiß, dass ich nach einer Minute Antwort bekomme, aber mit diesen Methoden kann ich keine angemessene Reaktion erreichen.
OK ich werde mit diesen Werten versuchen. Ich habe RetryPolicy-Werte geändert, indem ich meine benutzerdefinierte RetryPolicy implementiert habe, aber immer habe ich mehr als eine Anfrage gemacht, und nachdem ich das Verzögerungsflag manipuliert habe, bekomme ich immer das gleiche Ergebnis. Es sieht so aus, als ob die Anfrage nach 30 Sekunden und die nächste Anfrage nach 120 Sekunden (wenn Flag auf 120L gesetzt wurde) gesendet wurde. –
Es sieht so aus, als würde auf einer Serverseite ein Timeout von 30 Sekunden auftreten.Ich vermute, dass es im ersten Fall 30 Sekunden Netzwerkzeit und 2,5 Sekunden Robospices Standard-Wiederholungs-Timeout waren. Im zweiten Fall sollte es 30 Sekunden Netzwerkzeit und 120 Sekunden RoboSpice's Wiederholungs-Timeout geben. Versuchen Sie, Wireshark zu verwenden, um zu sehen, was wirklich mit Vernetzung geschieht. Es sieht verdächtig aus, dass Timeouts so häufig vorkommen. – mykolaj
Nach einigen Tagen komme ich auf dieses Thema zurück und habe einige Bemerkungen. Zunächst einmal löst Ihr Ansatz das Problem, aber nicht zu 100%. Es erhöht die Zeit der Anfrage, aber in Form von Verzögerung. Ich sehe, dass der Server, den ich benutze, mich nach 10 Sek. Timeout sendet und nach diesem Robospice wartet DELAY TIME in CustomRetryPolicy. Es ist in Ordnung, denn Server hat auch meine Anfrage zwischengespeichert und wenn die Antwort bereit ist, sende sie mich in der nächsten Anfrage. –