Android后台服务(如Viber)

时间:2014-07-31 20:50:19

标签: android service background

我正在开发一个小型VoIP应用程序,我需要保持与服务器的连接。

A首先使用推送通知(在来电时唤醒设备),但由于心跳间隔很长,因此Android推送通知不可靠。

第二种解决方案是使用startForeground()的服务。此方法有效,但在通知栏中留下了一个图标(我知道它应该是这样的,但请继续阅读)。

如果我不使用startForeground(),那么一旦手机睡觉,服务就会入睡。

TLDR: Viber有一个没有startForeground()的后台服务,但如果手机正在休眠并接受来电(即使禁用了推送通知),它仍可正常工作。他们是怎么做到的?

2 个答案:

答案 0 :(得分:0)

我认为他们持有永久的TCP连接并使用AlarmManager以一定间隔唤醒手机(让我们说5分钟)并保持连接活动。

检查this question

答案 1 :(得分:0)

尝试使用WakeLock让设备始终保持清醒状态。但它可能导致电池耗尽。