我在我的安卓应用程序中使用aSmack库进行小组聊天,我的问题是,当连接丢失时,ReconnectionManager无法重新连接并给出以下错误:
java.lang.IllegalThreadStateException: Thread already started.
at java.lang.Thread.start(Thread.java:1045)
at org.jivesoftware.smack.PacketWriter.startup(PacketWriter.java:119)
at org.jivesoftware.smack.XMPPConnection.initConnection(XMPPConnection.java:603)
at org.jivesoftware.smack.XMPPConnection.connectUsingConfiguration(XMPPConnection.java:565)
at org.jivesoftware.smack.XMPPConnection.connect(XMPPConnection.java:991)
at org.jivesoftware.smack.ReconnectionManager$2.run(ReconnectionManager.java:122)这是我的密码:
// Create a connection
ConnectionConfiguration config = new ConnectionConfiguration(HOST, PORT);
config.setSASLAuthenticationEnabled(false);
config.setDebuggerEnabled(true);
config.setReconnectionAllowed(true);对于如何避免这个错误,有什么想法吗?或者使用不同的asmack版本,我目前使用的是asmack-2010.05.07.jar
发布于 2014-11-13 11:19:09
我找到了解决方案,它是aSmack中的一个bug,ReconnectionManager类中的reconnect()方法必须由synchronized来避免这个异常,现在我使用的是aSmack,它有了这个修复。
https://stackoverflow.com/questions/26768841
复制相似问题