应用程序在后台时没有 GPS onLocationChanged 回调?
Posted
技术标签:
【中文标题】应用程序在后台时没有 GPS onLocationChanged 回调?【英文标题】:No GPS onLocationChanged callbacks while app in background? 【发布时间】:2020-05-24 11:53:16 【问题描述】:我有一个工作应用程序,它使用 LocationManager 的 onLocationChanged() 回调处理和记录 GPS 位置。它工作正常直到我将应用程序放在后台,例如通过使用“最近的任务”按钮或主页按钮转到另一个应用程序。当我再次把它带到前面时,更新会继续。有趣的是,我确实看到 GPS 的状态从“暂时不可用”变为“GPS 可用”。我确实在后台检查了“isProviderEnabled()”,但它总是返回 true。
我在 LocationManager 文档中没有看到这个工件:也许这是一个未记录但预期的行为 (???)
我尝试将 GPS 侦听器作为服务实现。没有喜悦。 然后我尝试在服务内部生成一个 ASyncTask(包括服务启动时的 GPS 侦听器)。仍然没有喜悦。在任何一种情况下,行为相同:当启动服务的应用程序进入后台时,不会调用 onLocationChanged。 有人有建议吗?
【问题讨论】:
【参考方案1】:我找到了解决方案:我需要使用 Foreground 服务。 这在https://androidwave.com/foreground-service-android.example 中有描述 通过此更改,即使在主要活动停止(完成)后,也会收到 GPS 定位。
【讨论】:
以上是关于应用程序在后台时没有 GPS onLocationChanged 回调?的主要内容,如果未能解决你的问题,请参考以下文章
平板电脑处于待机状态时,我的 GPS 应用程序是不是可以继续在后台运行?