Android 后台服务(如 Viber)
Posted
技术标签:
【中文标题】Android 后台服务(如 Viber)【英文标题】:Android background services (like Viber) 【发布时间】:2014-07-31 20:50:19 【问题描述】:我正在开发一个小型 VoIP 应用程序,我需要与服务器保持连接。
A 一开始使用推送通知(来电唤醒设备),但由于心跳间隔很长,android 推送通知不可靠。
第二种解决方案是使用startForeground()
的服务。此方法有效,但会在通知栏中留下一个图标(我知道它应该是这样,但请继续阅读)。
如果我不使用startForeground()
,那么一旦电话睡眠,服务就会进入睡眠状态。
TLDR:
Viber 有一个没有startForeground()
的后台服务,但如果手机处于睡眠状态并接受来电(即使禁用推送通知),它仍然可以工作。他们是怎么做到的?
【问题讨论】:
【参考方案1】:我想他们持有一个永久的 TCP 连接并使用AlarmManager
每隔一段时间(比如 5 分钟)唤醒手机并保持连接有效。
检查this question。
【讨论】:
所以基本上这个答案把我引向了正确的方向!任何有兴趣的人,您可以查看此答案链接中的讨论。 但你会立即收到消息,而不是在 5 分钟后【参考方案2】:尝试使用 WakeLock 保持设备始终处于唤醒状态。但这可能会导致电池耗尽。
【讨论】:
以上是关于Android 后台服务(如 Viber)的主要内容,如果未能解决你的问题,请参考以下文章
在 Whatsapp 或 Viber 上接收推送通知即时消息