簡體   English   中英

如何使用Smack XMPP使連接保持活動狀態?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM