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)的主要内容,如果未能解决你的问题,请参考以下文章

Android - 前台和后台服务有啥区别?

在 Whatsapp 或 Viber 上接收推送通知即时消息

android 12+从后台启动FGS限制

使用Android的Service实现后台定时检测并重启应用

android post方式给后台服务器传递数据

自动化没有 UI 但在后台运行的 android 应用程序的工具