繁体   English   中英

在Android中连续运行Socket.io服务

[英]Continuously Running Socket.io Service in Android

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

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

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

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

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

如果您打算将应用程序部署到iOS,那么您将采用这种方式。 iOS会在5分钟或更短的时间内杀死您的后台任务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM