Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xmpp Smack中Presence getType()和isAvailable()之间的区别是什么?_Xmpp_Chat_Smack - Fatal编程技术网

Xmpp Smack中Presence getType()和isAvailable()之间的区别是什么?

Xmpp Smack中Presence getType()和isAvailable()之间的区别是什么?,xmpp,chat,smack,Xmpp,Chat,Smack,我正在尝试使用asmack获取聊天花名册中的用户。 据我所知,presence.getType应该返回以下状态类型之一: 每个状态数据包都有一个类型,它是以下值之一: available -- (Default) indicates the user is available to receive messages. unavailable -- the user is unavailable to receive messages. subscribe -- request subscript

我正在尝试使用asmack获取聊天花名册中的用户。 据我所知,presence.getType应该返回以下状态类型之一:

每个状态数据包都有一个类型,它是以下值之一:

available -- (Default) indicates the user is available to receive messages.
unavailable -- the user is unavailable to receive messages.
subscribe -- request subscription to recipient's presence.
subscribed -- grant subscription to sender's presence.
unsubscribe -- request removal of subscription to sender's presence.
unsubscribed -- grant removal of subscription to sender's presence.
error -- the presence packet contains an error message.
对在线用户的my Presence对象使用Presence.getType可提供以下信息:

Log.e("Presence?",myRoster.getPresence(entry.getUser()).getType().toString());

Unavailable
但是,在同一用户上使用Presence.isAvailable会使我:

Log.e("Presence?",Boolean.toString(myRoster.getPresence(entry.getUser()).isAvailable()));

True
根据以下定义,getType和isAvailable不应该返回相同的结果吗

public Presence.Type getType()
返回此状态信息包的类型

public boolean isAvailable()
如果在线状态类型可用,则返回true;如果用户离线时不可用,或如果这是订阅操作中涉及的状态数据包,则返回false。这是一个方便的方法,相当于getType==Presence.Type.available


我错过了什么?这两者之间有什么区别?

如果您查看源代码,就会发现

public boolean isAvailable() {
    return type == Type.available;    
}
还包括以下国家:

这是一个相当于getType的方便方法== Presence.Type.available


谢谢你。因此,如果presence.isAvailable返回True,则表示type=available。但是,同一presence对象上的presence.getType返回不可用。我们如何解释这种差异?可能是因为它不是同一个实例。