博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Android】XMPP不能自动重连的问题
阅读量:6583 次
发布时间:2019-06-24

本文共 1529 字,大约阅读时间需要 5 分钟。

hot3.png

第一步  配置

config.setReconnectionAllowed(true);

第二部 添加监听事件

connection.connect();if (connection.isConnected()) {	connectionListener = new ViConnectionListener();	connection.addConnectionListener(connectionListener);}

事件代码:

public class ViConnectionListener implements ConnectionListener {		@Override	public void connectionClosed() {		Log("connectionClosed--->");			}	@Override	public void connectionClosedOnError(Exception e) {		Log("connectionClosedOnError--->" );				// 这里就是网络不正常或者被挤掉断线激发的事件		if (e.getMessage().contains("conflict")) { // 被挤掉线			Toast("被挤下线");			/*			 * log.e("来自连接监听,conn非正常关闭"); log.e("非正常关闭异常:"+arg0.getMessage());			 * log.e(con.isConnected());			 */			// 关闭连接,由于是被人挤下线,可能是用户自己,所以关闭连接,让用户重新登录是一个比较好的选择			XmppTool.getInstance().closeConnection();			// 接下来你可以通过发送一个广播,提示用户被挤下线,重连很简单,就是重新登录		} else if (e.getMessage().contains("Connection timed out")) {// 连接超时			// 不做任何操作,会实现自动重连			Log( "连接超时");		}	}	@Override	public void reconnectingIn(int arg0) {		Log("reconnectingIn--->");	}	@Override	public void reconnectionFailed(Exception arg0) {		Log("reconnectionFailed--->" + arg0.getMessage());		arg0.printStackTrace();	}	@Override	public void reconnectionSuccessful() {		Log("reconnectionSuccessful--->"); 	}	private void Log(String msg){		Log.e("---->",msg);	}}

第三步、最重要的一步

需在代码前静态加载ReconnectionManager,重连才能正常工作:  (之前都忘了加这个 导致无法自动重连)

static{     try{        Class.forName("org.jivesoftware.smack.ReconnectionManager");    }catch(Exception e){	e.printStackTrace();    }}

转载于:https://my.oschina.net/gejw0623/blog/213555

你可能感兴趣的文章
CentOS系统启动流程
查看>>
分布式数据库之事务隔离性
查看>>
mysql总结3→单表查询1
查看>>
ADO判断ACCESS字段值是否为NULL
查看>>
教你打包自己的专属docker镜像
查看>>
MySQL主从多种架构部署及常见错误问题解析
查看>>
关于负载均衡的几个知识点
查看>>
使用xtrabackup备份innodb引擎的数据库
查看>>
jQuery EasyUI DataGrid动态合并单元格解决方案
查看>>
V 2 heartbeat V2(HA)
查看>>
程序员回家过年生存指南
查看>>
Vim应用
查看>>
esxi安装
查看>>
14、系统架构师指南 - 软件项目角色指南系列文章
查看>>
微软职位内部推荐-SW Engineer II for Windows System
查看>>
【技术交流】让我们来谈一谈多线程和并发任务
查看>>
功能对外vsftpd 服务搭建过程
查看>>
Linux下有7种运行级别
查看>>
Redis分布式锁
查看>>
/etc/fstab文件说明
查看>>