3

我使用 websockets 在 Android 中实现了一个聊天应用程序。但是,当用户关闭应用程序时,与服务器的 websocket 连接将丢失,并且无法接收到新消息。

我基本上迷路了,不知道还能去哪里,如何在应用程序中设置服务以在用户登录时以及应用程序停止后保持与服务器的连接?

4

1 回答 1

4

众所周知,在 Android 上连续执行后台代码是不可行的。不同的 ROM 将在没有任何保证的情况下人工处理您的后台服务(例如START_STICKY,不会在某些设备上重新启动您的服务),因此我们需要尽我们所能使用可靠执行的代码。

在这种情况下,您有一个 websocket 服务器向您的客户端提供连续信息。当您的应用程序处于后台时,它可能会丢失一些数据。当你的app回到前台时,你的信息可能不同步了,所以你需要再次和你的服务器同步,然后重新连接你的websocket。

在我的聊天应用程序中,我通过检查我的 websocket 服务是否onResume在一个活动中运行来实现这一点,该活动是我想要访问聊天数据的所有活动的超类(即不是登录/注册活动)。如果服务未运行,我会通过从端点提取更改然后重新启动服务来同步我的数据。这样,即使后台杀掉了服务,一旦应用返回前台,我仍然会得到最新的数据和实时体验。

于 2018-06-21T03:39:29.047 回答