我使用 websockets 在 Android 中实现了一个聊天应用程序。然而,当用户关闭应用程序时,与服务器的 websocket 连接丢失,并且无法接收到新消息。
我基本上迷路了,不知道还能去哪里,如何在应用程序中设置服务以在用户登录时以及应用程序停止后保持与服务器的连接?
最佳答案
众所周知,持续的后台代码执行在 Android 上是不可行的;不同的 ROM 将在没有任何保证的情况下人工处理您的后台服务(例如,START_STICKY
不会让您的服务在某些设备上重新启动),因此我们需要尽我们所能使用 的代码 可靠地执行。
在这种情况下,您有一个 websocket 服务器向您的客户端提供连续的信息。当您的应用程序处于后台时,它可能会错过一些数据。当你的应用回到前台时,你的信息可能不同步,所以你需要再次与你的服务器同步,然后重新连接到你的websocket。
在我的聊天应用程序中,我通过检查我的 websocket 服务是否在 Activity 中运行 onResume
来实现此目的,该 Activity 是我想要访问聊天数据的所有 Activity 的父类(super class)(即不登录/报名 Activity )。如果服务未运行,我会通过从端点提取更改然后重新启动服务来同步我的数据。这样,即使服务在后台被杀死,一旦应用程序返回前台,我仍然可以获得最新的数据和实时体验。
关于Android Websocket 服务持久连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29481798/