我正在使用XMPP协议和Smack库实现聊天应用。
我正在连接Service类中的服务器。一切正常,发送和接收消息,直到一段时间过去,操作系统杀死应用程序。
如何始终保持与服务器的连接?
答案 0 :(得分:0)
现在最好的选择是使用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开发人员结账this回答。
虽然此问题已在问题跟踪器中得到明确解决,但我仍然在使用ReconnectionManager
时遇到问题。
此外,即使您的应用未在前台运行,保持连接仍然不可行,因为从Android O开始,后台进程会受到很多限制。此外,它还会耗尽大量电池。 处理它的最佳方法是从服务器发送推送通知。