Android 如何从一个活动到另一个活动获得相同的xmpp连接?

Android 如何从一个活动到另一个活动获得相同的xmpp连接?,android,xmpp,chat,Android,Xmpp,Chat,我是一名新程序员。我想使用xmpp服务器实现获取聊天信息的示例应用程序。在这个实现中,我使用ConnectionConfiguration对象创建了连接,如下所示: ConnectionConfiguration connConfig =new ConnectionConfiguration(host, Integer.parseInt(sport), service); 我正在通过调用connect方法将connConfig对象传递给XMPPConnection类。我正在获取连接,并通过调用

我是一名新程序员。我想使用xmpp服务器实现获取聊天信息的示例应用程序。在这个实现中,我使用ConnectionConfiguration对象创建了连接,如下所示:

ConnectionConfiguration connConfig =new ConnectionConfiguration(host, Integer.parseInt(sport), service);
我正在通过调用connect方法将connConfig对象传递给XMPPConnection类。我正在获取连接,并通过调用login方法传递用户名和密码,然后我登录到密码。要登录,我使用一个按钮。当我单击按钮时,我使用的是更改活动的意图。我正在更改活动,我希望获取另一个活动中的相同连接

我已经为LoginActivity编写了如下代码:

  public class LoginActivity extends Activity
 {

ConnectionConfiguration connConfig ;

 XMPPConnection connection;



  @Override
 protected void onCreate(Bundle savedInstanceState) 
  {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.setting);


    ((Button)findViewById(R.id.login)).setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) 
           {

             connConfig =new ConnectionConfiguration(host, Integer.parseInt(sport), service);

          connection = new XMPPConnection(connConfig);

            connection.connect();
            connection.login(uname, password);

        }
});

 }
}
     public class ChatPage extends Activity {

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.chatpage);

    //How to get the same XMPPConnection from LoginActivity here    

     }
  }
我写了ChatPageActivity如下:

  public class LoginActivity extends Activity
 {

ConnectionConfiguration connConfig ;

 XMPPConnection connection;



  @Override
 protected void onCreate(Bundle savedInstanceState) 
  {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.setting);


    ((Button)findViewById(R.id.login)).setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) 
           {

             connConfig =new ConnectionConfiguration(host, Integer.parseInt(sport), service);

          connection = new XMPPConnection(connConfig);

            connection.connect();
            connection.login(uname, password);

        }
});

 }
}
     public class ChatPage extends Activity {

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.chatpage);

    //How to get the same XMPPConnection from LoginActivity here    

     }
  }
如何获得从LoginActivity到ChatPageActivity的相同连接

请任何人帮助我使用singleton模式()创建一个新类(在一个新的.java文件中),您可以从应用程序的任何一点访问当前的活动连接

可能的解决办法:

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;
  }

}
然后,在LoginActivity上设置连接:

XMPPLogic.getInstance().setConnection(connection);
在聊天页面中,您可以看到:

XMPPLogic.getInstance().getConnection().doStuff()

如何在同一个应用程序中维护更多的XMPPConnections,通过我想要获得特定连接的应用程序。我怎样才能保持这样的状态..如何识别特定的集合?用绳子?我就这么想吧。您可以通过将此“private XMPPConnection connection=null;”更改为此“private Map connection=new HashMap();”并更改getter和setter以获取连接名称(字符串)。。。您只需将连接存储在存储区中。我尝试使用带索引的ArrayList,但没有成功。这给了索引超出大小的例外,我将这样尝试。@TiagoSimão。您好,您能帮我实现XMPP连接的连接侦听器吗。在我的情况下,它不起作用。我们可以尝试使用活页夹访问服务,然后访问连接吗?