2017-08-11 15 views
1

私はXMPPプロトコルとSmackライブラリを使ってチャットアプリを実装しています。Smack XMPPとの接続を維持するには?

サービスクラス内のサーバーに接続しています。いくつかの時間が過ぎ、OSがアプリを殺すまで、すべてうまく動作し、メッセージを送受信します。

どのようにしてサーバとの接続を常に維持できますか?

答えて

0

現在、接続の変更をリスンするには、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からはバックグラウンドプロセスに多くの制限があります。また、それはまた、多くのバッテリーを消耗します。 これを処理する最も良い方法は、サーバーからプッシュ通知を送信することです。

関連する問題