android - 为什么当 XMPP 连接断开时状态类型用户从不可用变为可用

标签 android xmpp smack asmack

关闭应用程序并停止执行ping时如何正确注销?

当我在每一行代码下面运行注销时,它运行完美,

但是如果我运行代码行:

 Presence presence = new Presence(org.jivesoftware.smack.packet.Presence.Type.unavailable);
            presence.setStatus(connection.getUser() + status);
            connection.sendPacket(presence);

我让用户离线/不可用。//但是连接还活着

然后我想断开连接所以我运行行代码。

connection.disconnect();//I get user online/available and connection die.

当连接中断时,我遇到了更多问题,我收到类似 ping 的消息。

11-13 21:55:02.820: D/SMACK(7399): 09:55:02 PM SENT (1385370112):  
11-13 21:55:32.820: D/SMACK(7399): 09:55:32 PM SENT (1385370112):  
11-13 21:56:02.820: D/SMACK(7399): 09:56:02 PM SENT (1385370112):  
11-13 21:56:32.820: D/SMACK(7399): 09:56:32 PM SENT (1385370112):  
11-13 21:57:02.820: D/SMACK(7399): 09:57:02 PM SENT (1385370112):  
11-13 21:57:32.820: D/SMACK(7399): 09:57:32 PM SENT (1385370112):  
11-13 21:58:02.824: D/SMACK(7399): 09:58:02 PM SENT (1385370112):  
11-13 21:58:32.824: D/SMACK(7399): 09:58:32 PM SENT (1385370112):  
11-13 21:59:02.824: D/SMACK(7399): 09:59:02 PM SENT (1385370112):  
11-13 21:59:32.824: D/SMACK(7399): 09:59:32 PM SENT (1385370112): 

public void logOut(boolean unavailable, String status) {

    if (isConnectionAlive() || reConnectAndAuth()) {
        Presence presence = new Presence(org.jivesoftware.smack.packet.Presence.Type.unavailable);
        presence.setStatus(connection.getUser() + status);
        connection.sendPacket(presence);
        pm = null;
        connection.disconnect();
       //iscNNcet();
        Log.w("LogOut","LogOut");
    }
}

最佳答案

我通过下一段代码解决了这个问题。

public void logOut(boolean unavailable, String status,Context orgContext) {

if (isConnectionAlive() || reConnectAndAuth(orgContext)) {
    Presence presence = new Presence(org.jivesoftware.smack.packet.Presence.Type.unavailable);
    presence.setStatus(connection.getUser() + status);
    pm = null;

    try {
        connection.disconnect(presence);
    } catch (Exception exception) {
        exception.printStackTrace();
        connection.disconnect();
    }

    Log.w("LogOut", "LogOut");

    }
}

关于android - 为什么当 XMPP 连接断开时状态类型用户从不可用变为可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26923497/

相关文章:

android - 使用 Smack 从 2 个不同的 android 设备登录到相同的 jabber 帐户

java - 无法向 openfire 服务器发送消息

android - 在 Android 上缓存图像的最佳做法是什么?

android - 如何使用 DatePicker 编辑我的日期?

android sleep 模式,套接字重置异常

android - 如何在不同设备上保持原始图像的 View 比例?

ios - Openfire session iOS 实现

xmpp - 使用 smack 创建 MUC

iphone - 如何在objective-C中实现XMPP协议(protocol)?

java - Smack + openfire - 是否可以检查当前用户是否是管理员?/如何检查当前用户详细信息?