如何通过应用程序使用相同的XMPP连接

时间:2014-02-08 08:52:26

标签: android android-intent connection xmpp smack

我正在使用XMPPasmack处理聊天应用程序。在启动Activity时,我想建立XMPP连接,然后在不同的活动中使用它。但我不知道该怎么做。我搜索了很多关于它但无法找到任何理想的解决方案。请指导我。

3 个答案:

答案 0 :(得分:2)

您可以将Connection成员设为静态,并选择允许其他活动访问该成员的访问级别修饰符关键字。

但是,您通常不希望在Activity中处理Connection,而是在扩展Service的类中处理。有很多开源应用程序使用aSmack,看看它们的来源。

答案 1 :(得分:2)

您可以使用此类设置连接并将其放在其他活动中的任何位置

public class XMPPLogic {

  private XMPPConnection connection = null;

  private static XMPPLogic instance = null;

  public synchronized static XMPPLogic getInstance() {
    if(instance==null){
      instance = new XMPPLogic();
    }
    return instance;
  }

  public void setConnection(XMPPConnection connection){
    this.connection = connection;
  }

  public XMPPConnection getConnection() {
    return this.connection;
  }

}

并像这样设置连接..

XMPPLogic.getInstance().setConnection(connection);

并获得这样的连接..

connection = XMPPLogic.getInstance().getConnection();

答案 2 :(得分:1)

您可以使用单例设计模式或创建实用程序类并将xmpp连接定义为静态,然后您可以在任何活动中使用它。

对于单身人士来说是这样的:

public class MyConnection{
private static MyConnection con;
private MyConnection(){

        //ToDo here

}
public static MyConnection getInstance()
{
    if (con == null)
   {
      MyConnection= new MyConnection();
   }
   return con;
   }

}

然后在任何活动中,您都可以通过键入MyConnection.getInstance();

来访问该对象