2017-07-04 2 views
1

Ich habe einen Alarm eingestellt, wenn App geht Hintergrund, die gut funktioniert, aber innerhalb des Dienstes habe ich api, die alle 5 Minuten Intervall zum Senden von Standort zum Server ruft, nachdem App im Hintergrund geht, Dienst funktioniert Fortfahren, aber wegen Netzwerk wird meine API nicht aufgerufen und bekommen sockettimeOutException obwohl Netzwerk verfügbar ist.sockettimeOutexception, wenn App in den Hintergrund geht

+0

Haben Sie das jemals lösen? Ich bekomme das gleiche Problem – George

Antwort

0

SocketTimeoutException passiert, wenn Socket lesen oder akzeptieren Zeitüberschreitungen. zB: Lesen von Bytes aus dem Socket-Input-Stream. Möglicherweise ist ein Netzwerk verfügbar, aber Sie erhalten keine Daten über den Socket. Nach Ablauf der Zeit, die verstrichen ist und keine Daten empfangen wurden, wird diese Ausnahme ausgelöst.

Sie können Socket-Timeout-Wert unter Verwendung socket.setSoTimeout(0) für keine Zeitüberschreitung festlegen.

+0

Ich denke, du hast meine Frage nicht klar verstanden. Lassen Sie mich kurz erklären. Wenn meine Anwendung im Hintergrund zu diesem Zeitpunkt nur Netzwerk nicht verfügbar ist, wenn ich zurück und öffne meine App wieder funktioniert es gut. Es wirft keine SocketTimeOutException. im Grunde, was ich tue ist, ich bekomme Lat, lange jede Minute und Senden an den Server alle 2 Minuten. Ich habe alarmReceiver dafür verwendet und es funktioniert gut Service wird nicht getötet. hoffe du verstehst das jetzt. –

0

Wir können damit umgehen, indem ein Socket-Timeout definieren (mehr Timeouts machen), und es später behandeln durch einen Try-Catch-Block mit ..

serverSocket.setSoTimeout(10000); //set the socket timeout in milliseconds 
Verwandte Themen