Android Websocket服务持久连接

时间:2015-04-07 00:30:45

标签: android service websocket android-webservice

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

我本质上迷失了,不知道还有什么地方可以转,我怎样才能在应用程序中设置服务,以便在用户登录时以及应用程序停止后保持与服务器的连接?

1 个答案:

答案 0 :(得分:3)

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

在这种情况下,您有一台Websocket服务器,可向您的客户端传递连续的信息。当您的应用程序在后台运行时,可能会丢失一些数据。当您的应用返回到前台时,您的信息可能不同步,因此您需要再次与服务器同步,然后重新连接到Websocket。

在我的聊天应用程序中,我通过检查Websocket服务是否在某个活动中运行onResume来实现此目的,该活动是我希望有权访问聊天数据的所有活动的超类(即,不是登录/注册活动) 。如果该服务未运行,则通过从端点提取更改然后重新启动服务来同步数据。这样,即使该服务在后台被终止,一旦应用返回前台,我仍将获得最新的数据和实时体验。