代码之家  ›  专栏  ›  技术社区  ›  Android Learner

如何在整个应用程序中使用相同的XMPP连接

  •  2
  • Android Learner  · 技术社区  · 11 年前

    我正在使用 XMPP 具有 asmack .启动时 Activity 我想做 XMPP公司 然后在不同的活动中使用它。但我不知道该怎么做。我找了很多关于它的东西,但找不到任何理想的解决方案。请引导我。

    3 回复  |  直到 11 年前
        1
  •  2
  •   Flow Matt McDonald    11 年前

    你可以 Connection member static,并选择允许其他Activities访问该成员的访问级别修饰符关键字。

    但是,你通常不想 联系 在Activity中处理,但在扩展 Service 。有一堆开源应用程序使用aSmack,看看它们的源代码。

        2
  •  2
  •   andrammer    11 年前

    您可以使用该类设置连接,并在其他活动中的任何位置获取连接

    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();
    
        3
  •  1
  •   Waqar Ahmed    11 年前

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

    对于singleton,请执行以下操作:

    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();