Xmpp Smack中Presence getType()和isAvailable()之间的区别是什么?
我正在尝试使用asmack获取聊天花名册中的用户。 据我所知,presence.getType应该返回以下状态类型之一: 每个状态数据包都有一个类型,它是以下值之一: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
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返回不可用。我们如何解释这种差异?可能是因为它不是同一个实例。