我正在研究聊天应用程序,并使用ejabberd saas版作为xmpp服务器.我正在使用smack库4.2.3.为了使连接保持活动状态,我正在使用Ping管理器.这是我正在使用的代码:
ReconnectionManager.getInstanceFor(AppController.mXmpptcpConnection).enableautomaticReconnection();ServerPingWithAlarmManager.onCreate(context);ServerPingWithAlarmManager.getInstanceFor(AppController.mXmpptcpConnection).setEnabled(true);ReconnectionManager.setEnabledPerDefault(true);//int i = 1;// PingManager.setDefaultPingInterval(i);PingManager.getInstanceFor(AppController.mXmpptcpConnection).setPingInterval(300);
我也使用粘性服务进行连接,但是当我将应用程序保持打开状态(理想状态)达15-20分钟时,连接就会丢失,因此我使用Ping manger解决了此问题.
还有其他更好的方法吗,还是Ping管理器是唯一的选择?
解决方法:
保持与XMPP服务器的有效连接的最佳方法是,每次网络更改后都应重新连接.
像这样
公共类NetworkStateChangeReceiver扩展了broadcastReceiver {
private Context context;private static NetworkStatechangelistener mListener;@OverrIDepublic voID onReceive(Context context, Intent intent) {this.context = context;try {if (!ApplicationHelper.isInterneton(context)) {if (mListener != null) {mListener.OnInternetStateOff();}return;} else {XMPPTCPConnection xmpptcpConnection = XmppConnectionHelper.getConnection();if(!StringHelper.isNullOrEmpty(new SessionManager(context).getAuthenticationToken())) {Intent XmppConnectionServicesIntent = new Intent(context, XmppConnectionServices.class);context.stopService(XmppConnectionServicesIntent);context.startService(XmppConnectionServicesIntent);}}} catch (Exception e) {e.printstacktrace();}}//to initialize NetworkStatechangelistener because null pointer exception occurredpublic static voID setNetworkStatechangelistener(NetworkStatechangelistener Listener) {mListener = Listener;}}
总结 以上是内存溢出为你收集整理的与Android中的Xmpp Server保持活动连接的最佳方法全部内容,希望文章能够帮你解决与Android中的Xmpp Server保持活动连接的最佳方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)