我在Android中使用websockets实现了一个聊天应用程序。但是,当用户关闭应用程序时,与服务器的websocket连接将丢失,并且不会收到任何新消息。
我本质上迷失了,不知道还有什么地方可以转,我怎样才能在应用程序中设置服务,以便在用户登录时以及应用程序停止后保持与服务器的连接?
答案 0 :(得分:3)
众所周知,在Android上连续执行后台代码是不可行的。不同的ROM将在没有任何保证的情况下手动处理您的后台服务(例如START_STICKY
不会使您的服务在某些设备上重新启动),因此我们需要尽最大可能地使用 可靠地执行。
在这种情况下,您有一台Websocket服务器,可向您的客户端传递连续的信息。当您的应用程序在后台运行时,可能会丢失一些数据。当您的应用返回到前台时,您的信息可能不同步,因此您需要再次与服务器同步,然后重新连接到Websocket。
在我的聊天应用程序中,我通过检查Websocket服务是否在某个活动中运行onResume
来实现此目的,该活动是我希望有权访问聊天数据的所有活动的超类(即,不是登录/注册活动) 。如果该服务未运行,则通过从端点提取更改然后重新启动服务来同步数据。这样,即使该服务在后台被终止,一旦应用返回前台,我仍将获得最新的数据和实时体验。