[英]How to keep connection alive with Smack XMPP?
我正在使用XMPP協議和Smack庫實現聊天應用程序。
我正在與Service類中的服務器建立連接。 一切正常,發送和接收消息,直到一段時間過去並且操作系統終止了該應用程序。
如何使我與服務器的連接始終保持活動狀態?
現在最好的選擇是使用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!
}
}
}
}
smack開發人員簽出此答案。 雖然,此問題已在問題跟蹤器中標記為已解決,但是使用ReconnectionManager
仍然遇到問題。
另外,即使您的應用程序未在前台運行,也無法保持連接正常運行,因為從Android O開始,后台進程會有很多限制。 另外,它還會消耗大量電池。 最好的處理方式是從服務器發送推送通知。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.