- Ich prüfe Verlust der Netzwerkverbindung auf Android Galaxy S6 für meine App.
- Ich habe zwei Arten von Netzwerk 1) WIFI 2) mobile Daten
- Ich errichte einen Stream von Gerät zu Server.
- Ich benutze SMACK den Stream
ich zwei Arten von Tests zu etablieren:Auf Android-Verlust von WiFi-Verbindung führt nicht zur Verbindungsbeendigung, aber Verlust von mobilen Datennetzwerk tut. Warum?
Zuerst habe ich deaktiviert WIFi, bevor ich meine app starten. Das heißt, ich starte nur mit aktivierten mobilen Daten. ausgelöst durch den Verlust von Netzwerk
- Während in app, schalte ich auf „Flugzeugmodus“
- beobachte ich meinen Stream mit Fehlern „geschlossen Fehlern Connection“ nahe.
- Zweitens, ich meine app starten nur mit WIFI (I deaktiviert mobile Daten vor app starten)
- ich den gleichen Testfall wiederholen, wie oben Umschalten auf "Flugzeugmodus"
- Aber diesmal hat die App/Smack-Bibliothek keinen Verbindungsverlust erkannt und ich sehe keine Fehler im Zusammenhang mit dem Netzwerk.
Können Sie bitte die Diskrepanz erklären?
dann, in solchen Fällen Smack Reconnection Manager wird nicht funktionieren. Sollte ich mich also auf fehlgeschlagene Ping (s) oder CONNECTION_CHANGE-Benachrichtigungen verlassen, um den Stream durch explizite Trennung und explizite Verbindung wiederherzustellen? – GJain
Die Antwort ist einfach: Sie sollten beides tun. Verwenden Sie die 'ServerPingWithAlarmManager' API von Smack, um gelegentlich einen geplanten Server-Ping durchzuführen und auf' CONNECTIVY_CHANGE' Absichten zu warten. Verwenden Sie dann 'XMPPTCPConnection.instantShutdown()', um die Verbindung zu beenden, aber den Stream Management-Status beizubehalten und die Verbindung wiederherzustellen. – Flow