2017-08-11 55 views
1

我正在使用XMPP協議和Smack庫實現聊天應用程序。如何保持與Smack XMPP的連接活躍?

我正在連接服務器內的服務器。一切正常,發送和接收消息,直到一段時間過去,操作系統殺死應用程序。

我怎樣才能始終保持與服務器的連接?

回答

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開始,後臺進程將受到很多限制。此外,它也將耗盡大量電池。 處理它的最佳方法是從服務器發送推送通知。