[英]How to keep connection alive with Smack XMPP?
我正在使用XMPP协议和Smack库实现聊天应用程序。
我正在与Service类中的服务器建立连接。 一切正常,发送和接收消息,直到一段时间过去并且操作系统终止了该应用程序。
如何使我与服务器的连接始终保持活动状态?
现在最好的选择是使用BroadcastReceiver
监听连接更改,如果尚未连接,则连接XMPPTCPConnection
。
您可以通过以下方式实现:
1)在ConnectivityManager.CONNECTIVITY_ACTION
上注册广播接收器
2)然后实现onReceive()
:
@Override
public void onReceive(Context context, Intent intent) {
if(!isInitialStickyBroadcast()) {
Bundle extras = intent.getExtras();
if(extras != null) {
if(!extras.getBoolean(ConnectivityManager.EXTRA_NO_CONNECTIVITY)) {
// call reconnection code!
}
}
}
}
smack开发人员签出此答案。 虽然,此问题已在问题跟踪器中标记为已解决,但是使用ReconnectionManager
仍然遇到问题。
另外,即使您的应用程序未在前台运行,也无法保持连接正常运行,因为从Android O开始,后台进程会有很多限制。 另外,它还会消耗大量电池。 最好的处理方式是从服务器发送推送通知。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.