【发布时间】:2017-08-11 08:46:12
【问题描述】:
我正在使用 XMPP 协议和 Smack 库实现一个聊天应用程序。
我正在服务类中建立与服务器的连接。一切正常,发送和接收消息,直到一段时间后操作系统终止应用程序。
如何才能始终保持与服务器的连接有效?
【问题讨论】:
标签: android xmpp android-service smack
我正在使用 XMPP 协议和 Smack 库实现一个聊天应用程序。
我正在服务类中建立与服务器的连接。一切正常,发送和接收消息,直到一段时间后操作系统终止应用程序。
如何才能始终保持与服务器的连接有效?
【问题讨论】:
标签: android xmpp android-service smack
现在最好的办法是使用 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!
}
}
}
}
结帐this smack 开发人员的回答。
虽然,此问题已在问题跟踪器中标记为已解决,但我在使用 ReconnectionManager 时仍然遇到问题。
此外,即使您的应用未在前台运行,也无法保持连接有效,因为从 Android O 开始,后台进程会有很多限制。此外,它还会消耗大量电池。 处理它的最佳方法是从服务器发送推送通知。
【讨论】: