如何确保在应用程序关闭时运行的服务不会被杀死?

Posted

技术标签:

【中文标题】如何确保在应用程序关闭时运行的服务不会被杀死?【英文标题】:How to make sure a service that runs when the Application is closed does not get killed? 【发布时间】:2019-10-01 11:49:13 【问题描述】:

我正在开发一个健身应用程序,作为我学士论文的一部分,并且即使应用程序完全关闭,我也希望跟踪步数。为此,我目前正在启动一项利用内置传感器“计步器”和“计步器”的服务。经过一些测试,我发现有时我的服务被杀死并且不再跟踪所采取的步骤。我把手机放在桌子上过夜,早上四处走动,然后打开应用程序,早上的步数没有被跟踪,而当我关闭应用程序并立即开始走路时,步数跟踪仍然有效。

有没有办法确保我的服务不会被杀死?

使用前台服务能解决我的问题吗?是否有任何替代使用前台服务的方法?

【问题讨论】:

那么你用代码尝试了什么 如果您查看其他一些健身/计步器类型的应用程序,您会发现它们在运行捕获步数的服务时会向用户显示持续通知 - 这是一个前台服务示例。 android 文档指出,android 系统尽最大努力(但不是 100% 保证)保持前台服务运行。所以我想你最好的选择是实现前台服务并向用户显示通知。 【参考方案1】:

前台服务是您确保服务不会被杀死的唯一方法。

这样做的原因是前台服务总是向用户显示通知,并且如果用户愿意,可以将其杀死,如果您想确定在您的设备上运行什么,这一点尤其重要。

从 android 9 开始,所有以前的制作永久运行服务的方法都已被弃用,当时引入了新的隐私政策。

【讨论】:

【参考方案2】:

基本上你需要让服务在后台运行, 这是实现此目的的解决方法

https://***.com/a/58162451/7579041

以上链接适用于库存 ROM 和自定义 ROM 设备,如 OnePlus、OPPO、VIVO 等

希望对你有帮助

【讨论】:

以上是关于如何确保在应用程序关闭时运行的服务不会被杀死?的主要内容,如果未能解决你的问题,请参考以下文章

应用程序被杀死时,如何每 10 秒将用户位置上传到服务器? [关闭]

应用程序被杀死/关闭/未打开时的 IOS 推送通知操作

每当应用程序被杀死时服务停止

当 kivy 应用程序被杀死时关闭数据库连接

如何杀死音乐服务?

怎么让Android程序一直后台运行,像QQ一样不被杀死