应用程序在后台时没有 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 纬度和经度吗?

当 Here Drive+ 运行时,GPS 在后台运行

平板电脑处于待机状态时,我的 GPS 应用程序是不是可以继续在后台运行?

Iphone,如何在后台保存坐标gps? [复制]

Android Geofencing API 在后台可以正常工作,但不能用于 GPS

WatchOS 4 未收到后台 GPS 更新