Android基于XMPP Smack Openfire下学习开发IM(五)连接断开重连
来源:互联网 发布:类似wiboxls的软件 编辑:程序博客网 时间:2024/05/16 14:34
http://blog.csdn.net/jie1991liu/article/details/24371729
首先要创建连接监听器,用来监听连接状态,这里我写了一个类
继承了ConnectionListener,重写了里面5个方法,最重要的两个方法connectionClosed()和connectionClosedOnError()
前者为连接正常断开,后者是连接异常断开,不管是正常还是异常,我们都要监听到
这里写了一个定时器,两秒进行连接一次,注释写的也很清楚,不做太多介绍
要注意的是我把用户名和密码都存到sharePreferences中了
package com.techrare.listener;import java.util.Timer;import java.util.TimerTask;import org.jivesoftware.smack.ConnectionListener;import android.util.Log;import com.techrare.taxicall.MainActivity;import com.techrare.utils.Utils;import com.techrare.utils.XmppConnection;/** * 连接监听类 * * @author Administrator * */public class TaxiConnectionListener implements ConnectionListener {private Timer tExit;private String username;private String password;private int logintime = 2000;@Overridepublic void connectionClosed() {Log.i("TaxiConnectionListener", "連接關閉");// 關閉連接XmppConnection.getInstance().closeConnection();// 重连服务器tExit = new Timer();tExit.schedule(new timetask(), logintime);}@Overridepublic void connectionClosedOnError(Exception e) {Log.i("TaxiConnectionListener", "連接關閉異常");// 判斷為帳號已被登錄boolean error = e.getMessage().equals("stream:error (conflict)");if (!error) {// 關閉連接XmppConnection.getInstance().closeConnection();// 重连服务器tExit = new Timer();tExit.schedule(new timetask(), logintime);}}class timetask extends TimerTask {@Overridepublic void run() {username = Utils.getInstance().getSharedPreferences("taxicall","account", MainActivity.context);password = Utils.getInstance().getSharedPreferences("taxicall","password", MainActivity.context);if (username != null && password != null) {Log.i("TaxiConnectionListener", "嘗試登錄");// 连接服务器if (XmppConnection.getInstance().login(username, password)) {Log.i("TaxiConnectionListener", "登錄成功");} else {Log.i("TaxiConnectionListener", "重新登錄");tExit.schedule(new timetask(), logintime);}}}}@Overridepublic void reconnectingIn(int arg0) {}@Overridepublic void reconnectionFailed(Exception arg0) {}@Overridepublic void reconnectionSuccessful() {}}
其次就是给连接设置监听器了,最好放在登录方法里,关闭连接方法里移除监听
- // 添加連接監聽
- TaxiConnectionListener connectionListener = new TaxiConnectionListener();
- getConnection().addConnectionListener(connectionListener);
- connection.removeConnectionListener(connectionListener);
0 0
- Android基于XMPP Smack Openfire下学习开发IM(五)连接断开重连
- Android基于XMPP Smack Openfire下学习开发IM(五)连接断开重连
- Android基于XMPP Smack Openfire下学习开发IM(五)连接断开重连
- Android基于XMPP Smack Openfire下学习开发IM(五)连接断开重连
- Android基于XMPP Smack Openfire下学习开发IM(五)连接断开重连
- Android基于XMPP Smack Openfire下学习开发IM(五)连接断开重连
- Android基于XMPP Smack Openfire下学习开发IM(五)连接断开重连
- Android基于XMPP Smack Openfire下学习开发IM(五)连接断开重连
- Android基于XMPP Smack Openfire下学习开发IM(五)连接断开重连
- Android基于XMPP Smack Openfire下学习开发IM
- Android基于XMPP Smack Openfire下学习开发IM(六)总结
- Android基于XMPP Smack Openfire下学习开发IM(六)总结
- Android基于XMPP Smack Openfire下学习开发IM(六)总结
- Android基于XMPP Smack Openfire下学习开发IM(六)总结
- Android基于XMPP Smack Openfire下学习开发IM(六)总结
- Android基于XMPP Smack Openfire下学习开发IM(六)总结
- Android基于XMPP Smack Openfire下学习开发IM(六)总结
- Android IM(五)连接断开重连
- leetcode:Trapping Rain Water
- Android很全常用工具类源码
- hdu 1166 敌兵布阵(树状数组)
- Android快速启动方案
- Odoo 8.0远端调用http.route时提示404
- Android基于XMPP Smack Openfire下学习开发IM(五)连接断开重连
- 行为 习惯 性格
- java
- PHP_I love U之(1)php衣食父母:使用usort()函数为二维数组排序
- 验证最小化可行产品(MVP)的15种方法
- Qt非阻塞延时
- 安卓开发1
- Mina 环境搭建
- 1git命令的使用,查看git仓库状态,添加文件到git跟踪,git提交,查看git分支,查看git仓库日志信息,切换git分支,解决git分支合并后出现冲突的问题