在Android中不断运行Socket.io服务

时间:2015-12-21 21:36:08

标签: java android sockets socket.io chat

我正在开发一个使用Socket.io作为与服务器通信的方式的聊天客户端。因此,使用GCM并不是一个选择。

我希望能够随时收到聊天记录(即使应用程序已关闭);基本上套接字需要一直监听。我知道,当手机启动并保持运行时,可以启动服务。然而,这在移动设备,耗尽电池等方面似乎是一个相当糟糕的主意。

研究表明,GCM似乎是此类问题最常见的实现方式。不幸的是,我现在无法取代Socket.io。我想知道如何实现这个聊天设计 - 在后台监听套接字。

2 个答案:

答案 0 :(得分:1)

您应该在应用程序启动时运行一个服务(例如ListenerService),并且在该服务内部必须启动一个线程(例如ListenerThread)。并保持该线程和服务,直到您的应用程序位于onResume()/ onPause()。通过该线程将客户端套接字连接到服务器。并接收有关ListenerThread的所有更新。如果你想发送一些数据包到服务器然后发送另一个线程/处理程序(例如tempThread)并在发送请求后关闭该thrad。
当您的应用程序关闭/退出时,请停止该服务(例如ListenerService)。在该服务中,您必须睡眠ListenerThread。 不要尝试停止线程以获取有关线程的更多信息,您可以关注this链接和this链接。从API级别1中不推荐使用Thread.stop(),请参阅document。 使用START_STICKY启动服务(ListenerService)。供参考,请参阅服务的documention

答案 1 :(得分:0)

GCM是处理此问题的正确方法。将GCM警报发送到设备,然后用户可以单击它以打开您的应用程序。那时你可以重新打开你的套接字并获得所需的数据。

如果您计划将应用程序部署到iOS,那么这就是您将在那里进行的路线。如果感觉像是这样,iOS会在5分钟或更短时间内杀死你的后台任务。