Smack:是不是有必要(甚至可能)明确关闭聊天?
Posted
技术标签:
【中文标题】Smack:是不是有必要(甚至可能)明确关闭聊天?【英文标题】:Smack: Is it necessary (or even possible) to explicity close a Chat?Smack:是否有必要(甚至可能)明确关闭聊天? 【发布时间】:2011-03-03 11:59:24 【问题描述】:使用 Smack 库打开 XMPP 聊天后,是否有必要(甚至可能)显式关闭聊天?
【问题讨论】:
【参考方案1】:您只需删除自己对它的引用,它最终会自行消失。它仅由 ChatManager 中的弱引用持有,因此最终会被 GC 处理。
如果您不想在 Chat 类等待 GC 时收到更多聊天消息,您也应该删除您的侦听器。
【讨论】:
【参考方案2】:协议方面,你可以实现XEP-85(聊天状态通知)让对方知道你已经关闭了聊天。
<message
from='juliet@capulet.com/balcony'
to='romeo@shakespeare.lit/orchard'
type='chat'>
<thread>act2scene2chat1</thread>
<gone xmlns='http://jabber.org/protocol/chatstates'/>
</message>
【讨论】:
【参考方案3】:如果您使用 SMACK API,则无需关闭聊天。当您注销或关闭连接时,它将自动关闭。
【讨论】:
【参考方案4】:我有一个显示所有打开聊天的侧面板。它允许用户删除任何打开的聊天。如果您关闭连接,那么所有打开的聊天都会消失,而不仅仅是被删除的聊天。我也四处看看,似乎没有办法显式销毁聊天,因为垃圾收集可能需要很长时间才能收集到对象。
【讨论】:
【参考方案5】:请关注此bug report,因为目前无法关闭聊天。 但由于这已被报告并承认它可以在下一个版本中修复。
【讨论】:
以上是关于Smack:是不是有必要(甚至可能)明确关闭聊天?的主要内容,如果未能解决你的问题,请参考以下文章