Android:当 activity 关闭时服务失去传感器焦点

Android: service looses sensor focus when activity is closed

我正在制作一个应用程序,其中的后台服务会针对某些特定动作执行一些操作。目前,我使用一个带有 SensorEventListener 的简单服务来注册 phone 的移动并执行我希望它执行的操作。我还使用了一个(可选的)唤醒锁,没有任何时间限制(但当服务终止时它会解除锁定)以确保服务始终可访问。我使用 START_REDELIVER_INTENT 来确保在 activity 停止时重新启动,当用户停止它时(通常通过 ome 按钮)。 现在我的问题是:当我停止 activity 时,服务会终止但有时会重新启动(我不知道它是否没有重新启动或者只是没有调用它的传感器更改。我怀疑最后但我不确定由于我只是在 Sensorchanged 方法中放置了一个简单的 Sysout 进行测试。

是否有更好、更有效的方法来实现我的目标(例如 startForeground)以及如何确保在 activity 停止后持续获取传感器数据?

需要连续 运行 的服务必须从 startForeground() 开始。

这样做的一个积极的副作用是,用户会使用传感器知道您的应用程序,并且可以在 运行 电池电量不足时停止它。