Android 如何从一个活动到另一个活动获得相同的xmpp连接?
我是一名新程序员。我想使用xmpp服务器实现获取聊天信息的示例应用程序。在这个实现中,我使用ConnectionConfiguration对象创建了连接,如下所示:Android 如何从一个活动到另一个活动获得相同的xmpp连接?,android,xmpp,chat,Android,Xmpp,Chat,我是一名新程序员。我想使用xmpp服务器实现获取聊天信息的示例应用程序。在这个实现中,我使用ConnectionConfiguration对象创建了连接,如下所示: ConnectionConfiguration connConfig =new ConnectionConfiguration(host, Integer.parseInt(sport), service); 我正在通过调用connect方法将connConfig对象传递给XMPPConnection类。我正在获取连接,并通过调用
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连接的连接侦听器吗。在我的情况下,它不起作用。我们可以尝试使用活页夹访问服务,然后访问连接吗?