2016-05-24 6 views
1
  • 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


  • 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?

Antwort

2

Einige Android-Kernel schließen den TCP-Socket in bestimmten Fällen nicht. Es kommt auch darauf an, wie der Flugmodus konkret umgesetzt wird.

+0

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

+0

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

Verwandte Themen