実際に Reconnection manager に問題はありません。まず、接続マネージャーに接続リスナーを追加する必要があります。
connection.addConnectionListener(new ConnectionListener() {
@Override
public void reconnectionSuccessful() {
Log.i("","Successfully reconnected to the XMPP server.");
}
@Override
public void reconnectionFailed(Exception arg0) {
Log.i("","Failed to reconnect to the XMPP server.");
}
@Override
public void reconnectingIn(int seconds) {
Log.i("","Reconnecting in " + seconds + " seconds.");
}
@Override
public void connectionClosedOnError(Exception arg0) {
Log.i("","Connection to XMPP server was lost.");
}
@Override
public void connectionClosed() {
Log.i("","XMPP connection was closed.");
}
});
エラーが発生した場合、接続が閉じられたときに connectionClosedOnError(Exception arg0) が自動的に呼び出されます
public void connectionClosed() {
Log.i("","XMPP connection was closed.");
//You can manually call reconnection code if you want to reconnect on any connection close
}
次に、これが reconnectingin() メソッドを呼び出して再接続を試みることを確認します。
これがあなたを助けることを願っています。
以下のコードを使用して接続を確認します
PingManager pingManager = PingManager.getInstanceFor(connection); pingManager.setPingInterval(5000);
isConnected メソッドは接続状態の確認に信頼性がないため、接続が接続されているかどうかを処理する ping 失敗処理の listner を追加します。
pingManager.registerPingFailedListener(PingFailedListener);
モバイル ネットワークの接続は非常に大きな問題であるため、ブロードキャスト レシーバーを使用してモバイルのネットワーク接続を確認する必要があります。データの再接続では、pingMyServer メソッドを使用して接続が有効かどうかを確認できます。サーバーから ping 応答を取得している場合は、接続が有効であることを意味します。それ以外の場合は、ping が失敗したときに手動で接続を再接続できます。