如何在 Android O 中保持服务在后台运行?

Posted

技术标签:

【中文标题】如何在 Android O 中保持服务在后台运行?【英文标题】:How to keep service running in background in Android O? 【发布时间】:2018-12-15 12:16:33 【问题描述】:

我需要让服务在后台运行。该服务用于保持 Socket.IO/MQTT 连接。在 android O 之前的版本中,保持服务活动没有问题,但在 Android O 中,这是不可能的,因为background execution limits。

除了前台服务,还有什么方法可以让服务保持运行吗?

【问题讨论】:

不。您需要将持久通知作为前台服务来保持其持续运行。 后台执行限制专门用于应对多个插槽的大量电池消耗。否则诉诸定期工作。 您的服务可以在后台运行 5 秒,然后您才需要向其附加通知。您可能想阅读有关 Android O background limitatons 的所有信息 你解决了这个问题吗? @Mariano Cordoba @RevathiManoharan 没有。我使用前台服务进行持久连接,使用 workmanager 处理以固定速率执行的任务。 【参考方案1】:

您应该使用 Firebase 云消息传递从服务器推送数据,这是为了防止所有应用打开自己的连接并保持活动状态,耗尽电池并填满 RAM,而对用户没有任何价值。你的应用也不例外。

对于短暂的连接(分钟)或用户会话(分钟也一样,除非用户保持活动更长时间),前台服务可能是一种解决方案。

出于好奇,您想要“持久连接”的用例是什么?

【讨论】:

我需要跟踪用户的存在。我认为 FCM 在这种情况下不会有帮助,可能最好的选择是使用前台服务。 您如何看待“用户的存在”? 另外,您真的需要通过互联网实时发送它吗(我的意思是几秒钟,这仍然取决于网络可用性)? 在线是指用户是否在线。是的,我需要它接近实时。 这没有回答我的第一个问题。我可以换个说法:你什么时候认为用户不再在线,你认为他什么时候重新上线?

以上是关于如何在 Android O 中保持服务在后台运行?的主要内容,如果未能解决你的问题,请参考以下文章

在Android O中运行后台运行Intentservice

如何让android的service一直在后台运行

FileObserver 在后台监听,Android O

如何让android的service一直在后台运行

Android O,后台服务运行超过 30 分钟。为啥?

如何使用libGDX在iOS / Android后台运行应用程序