asmack自身已经包括了断网重连的方案(ReconnectionManager),客户端不需要自己再做重连方案,但是需要几个设置,如下所示:
configuration.setReconnectionAllowed(true); // 允许重连
configuration.setSendPresence(true);// 允许默认发送出息状态,这个很重要,如果设为false,将会导致重连后不能接收消息!
// 在连接单例中初始化重连管理类
static{
try{
Class.forName("org.jivesoftware.smack.ReconnectionManager");
}catch(Exception e){
e.printStackTrace();
}
}
[2014-03-21]
补充:
对于红色字体,可以在重连成功后发送一个上线的packet.所以那个状态也不是那么重要了。