我正在开发一个小型VoIP应用程序,我需要保持与服务器的连接。
A首先使用推送通知(在来电时唤醒设备),但由于心跳间隔很长,因此Android推送通知不可靠。
第二种解决方案是使用startForeground()
的服务。此方法有效,但在通知栏中留下了一个图标(我知道它应该是这样的,但请继续阅读)。
如果我不使用startForeground()
,那么一旦手机睡觉,服务就会入睡。
TLDR:
Viber有一个没有startForeground()
的后台服务,但如果手机正在休眠并接受来电(即使禁用了推送通知),它仍可正常工作。他们是怎么做到的?
答案 0 :(得分:0)
我认为他们持有永久的TCP连接并使用AlarmManager
以一定间隔唤醒手机(让我们说5分钟)并保持连接活动。
答案 1 :(得分:0)
尝试使用WakeLock让设备始终保持清醒状态。但它可能导致电池耗尽。