文档章节

【Android】XMPP不能自动重连的问题

包灬子
 包灬子
发布于 2014/03/27 21:53
字数 306
阅读 3296
收藏 1

第一步  配置

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


© 著作权归作者所有

包灬子
粉丝 11
博文 37
码字总数 10847
作品 0
无锡
架构师
私信 提问
androidpn 作为Android推送方案存在的问题

如果百度或者Google搜索 “android 推送” 关键字,相当一部分文章都在说到 androidpn。也可以看到有人说用起来了,有人在吐槽说不稳定、功能缺失,维护工作量大。本文尝试对 androidpn 的前...

极光推送
2012/11/19
12K
94
android XMPP掉线频繁,怎样实现掉线后重连?

android XMPP掉线频繁,怎样实现掉线后重连? 哪位达人能详细说说?谢谢

SpaceQ
2012/09/20
4.2K
6
Android消息推送完美方案

推送功能在手机应用开发中越来越重要,已经成为手机开发的必须。在Android应用开发中,由于众所周知的原因,Android消息推送我们不得不大费周折。本文就是用来和大家共同探讨一种Android消息...

Yujan
2014/04/10
0
0
CIM 2.2.0 发布,新增 Java 版本客户端

CIM 2.2.0 发布了,基于Java服务端的即时通信解决方案,与android 客户端完美结合,同时支持其他语言的移动应用,桌面应用,以及后台系统之间的即时消交互,为你解决了长连接各种消息事件,断...

远方夕阳
2016/07/18
2.3K
3
Androidpn 简单实现及分析

(文中部分内容来自网络) XMPP协议: XMPP : The Extensible Messaging andPresence Protocol. 中文全称:可扩展通讯和表示协议. 简介:可扩展通讯和表示协议 (XMPP) 可用于服务类实时通讯、表示...

明舞
2014/08/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

利用mybatis generator生成实体类、Mapper接口以及对应的XML文件

项目中通常会遇到数据的持久化,如果是采用mybatis的orm,就会涉及到生成xml的问题,刚好mybatis官网提供了这么个插件MyBatis Generator,效果简直是棒呆。 1. 首先需要在build.gradle文件中...

啊哈关关
今天
2
0
SpringSocial相关的知识点

使用SprigSocial开发第三方登录 核心类 ServiceProvider(AbstractOauth2ServiceProvider):主要负责实现server提供商(例如QQ,微信等共有的东西),默认实现类是AbstractOauth2ServiceProvider...

chendom
今天
2
0
Java并发之AQS详解

一、概述   谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!   类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源...

群星纪元
昨天
2
0
Fabric-sdk-java最新教程

Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK,全称为Fabric-sdk-java,网上可用资料不多,本文列出了精心整理的针对Fabric Java SDK的最新精选教程。 如果希望快速掌握F...

汇智网教程
昨天
3
0
react 子组件监听props 变化

componentWillReceiveProps //已经被废弃 getDerivedStateFromProps// 推荐使用//如果条件不存在必须要返回null static getDerivedStateFromProps(props, current_stat...

一箭落旄头
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部