【问题标题】:Smack: Is it necessary (or even possible) to explicity close a Chat?Smack:是否有必要(甚至可能)明确关闭聊天?
【发布时间】:2011-03-03 11:59:24
【问题描述】:

使用 Smack 库打开 XMPP 聊天后,是否有必要(甚至可能)显式关闭聊天?

【问题讨论】:

    标签: xmpp chat smack


    【解决方案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,因为目前无法关闭聊天。 但由于这已被报告并承认它可以在下一个版本中修复。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-08-23
              • 1970-01-01
              • 2014-11-21
              相关资源
              最近更新 更多