繁体   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