Android长时间套接字监听器

时间:2011-06-04 19:46:46

标签: android

我的公司实质上已经开展了一个项目,用运行Android的智能手机取代部分寻呼机。只要它们已登录,设备就应该侦听特定套接字以从服务器接收“页面”。我天真的实现是创建一个前台服务,1)启动监听线程,2)持有PARTIAL_WAKE_LOCK。

除非设备长时间不活动,1小时以上,否则此工作正常。然后,操作系统似乎关闭了我的应用程序的过程,可以理解的是它相信它没有被使用。

我完全理解他们这样做的原因,但我想知道我是否可以以某种方式解决这个限制。有没有办法告诉Android我的进程真的非常重要,以保持活着/设备清醒?我为这个项目学习了Java和Android API,因此有很多领域我的知识不完整。

如果失败了,根据我的业务需求的描述,您会如何建议实现此功能?当用户登录我们的自定义应用时,设备应该始终在监听。

感谢大家阅读这个问题。

2 个答案:

答案 0 :(得分:4)

如果您使用Service.startForground(),操作系统不会终止您的进程。这就是音乐播放使用的内容,你不希望在一段时间后将其杀死。

那就是说,对于这种事情,你通常不需要让你的服务成为前台 - 当系统因为它已经坐在或需要内存而导致你的进程被终止时,它仍然知道服务想要保留这样运行会很快重启服务。这就是Google自己的服务工作方式,他们有一个运行后台服务的.apk,可以保持网络连接对谷歌服务开放,当有趣的事情发生时,报告回来,如同步新电子邮件,检索和交付C2DM意图等。

此外,您应该在所有时间内保持唤醒锁定。你会杀死电池,特别是在某些设备上,比如使用三星的Hummingbird处理器。正确的做法是让插座保持打开状态让设备入睡。如果将数据传送到套接字,CPU将唤醒以传送该数据,此时您应该只在需要读取和处理数据时获取部分唤醒锁定。

答案 1 :(得分:0)

您所描述的内容听起来像是Android Cloud to Device Messaging Framework的作业。

它目前尚未完全打开,但该页面上有一个注册链接。我报名并在申请后20分钟内被录取。值得一看IMO。