如何使用Smack XMPP保持连接?

时间:2017-08-11 08:46:13

标签: android xmpp android-service smack

我正在使用XMPP协议和Smack库实现聊天应用。

我正在连接Service类中的服务器。一切正常,发送和接收消息,直到一段时间过去,操作系统杀死应用程序。

如何始终保持与服务器的连接?

1 个答案:

答案 0 :(得分: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!
            } 
        }
    }
}

由smack开发人员结账this回答。 虽然此问题已在问题跟踪器中得到明确解决,但我仍然在使用ReconnectionManager时遇到问题。

此外,即使您的应用未在前台运行,保持连接仍然不可行,因为从Android O开始,后台进程会受到很多限制。此外,它还会耗尽大量电池。 处理它的最佳方法是从服务器发送推送通知。