私はXMPPプロトコルとSmackライブラリを使ってチャットアプリを実装しています。Smack XMPPとの接続を維持するには?
サービスクラス内のサーバーに接続しています。いくつかの時間が過ぎ、OSがアプリを殺すまで、すべてうまく動作し、メッセージを送受信します。
どのようにしてサーバとの接続を常に維持できますか?
私はXMPPプロトコルとSmackライブラリを使ってチャットアプリを実装しています。Smack XMPPとの接続を維持するには?
サービスクラス内のサーバーに接続しています。いくつかの時間が過ぎ、OSがアプリを殺すまで、すべてうまく動作し、メッセージを送受信します。
どのようにしてサーバとの接続を常に維持できますか?
現在、接続の変更をリスンするには、BroadcastReceiver
を使用し、接続していない場合はXMPPTCPConnection
を接続するのが最善の方法です。
あなたはこのようにそれを達成することができます:
1)ConnectivityManager.CONNECTIVITY_ACTION
2の放送受信機を登録)するとonReceive()
を実装:ピシャリ開発者
@Override
public void onReceive(Context context, Intent intent) {
if(!isInitialStickyBroadcast()) {
Bundle extras = intent.getExtras();
if(extras != null) {
if(!extras.getBoolean(ConnectivityManager.EXTRA_NO_CONNECTIVITY)) {
// call reconnection code!
}
}
}
}
チェックアウトthis答え。 この問題は問題追跡ツールで解決済みとマークされていますが、私はまだReconnectionManager
を使用している問題に直面していました。
また、アプリがフォアグラウンドで実行されていなくても接続を維持することは実現できません。Android Oからはバックグラウンドプロセスに多くの制限があります。また、それはまた、多くのバッテリーを消耗します。 これを処理する最も良い方法は、サーバーからプッシュ通知を送信することです。