【问题标题】:How to keep connection alive with Smack XMPP?如何与 Smack XMPP 保持连接?
【发布时间】:2017-08-11 08:46:12
【问题描述】:

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

我正在服务类中建立与服务器的连接。一切正常,发送和接收消息,直到一段时间后操作系统终止应用程序。

如何才能始终保持与服务器的连接有效?

【问题讨论】:

    标签: android xmpp android-service smack


    【解决方案1】:

    现在最好的办法是使用 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 smack 开发人员的回答。 虽然,此问题已在问题跟踪器中标记为已解决,但我在使用 ReconnectionManager 时仍然遇到问题。

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

    【讨论】:

      猜你喜欢
      • 2012-10-16
      • 1970-01-01
      • 2015-05-24
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2017-06-08
      • 2023-04-07
      相关资源
      最近更新 更多