应用程序在后台时没有 GPS onLocationChanged 回调?
No GPS onLocationChanged callbacks while app in background?
我有一个可用的应用程序,它使用 LocationManager 的 onLocationChanged() 回调处理和记录 GPS 位置。它工作正常直到我将应用程序置于后台,例如使用 "Recent Tasks" 按钮或主页按钮转到另一个应用程序。当我再次将它带到前面时,更新恢复。有趣的是,我确实看到状态从 GPS "Temporarily Unavailable" 变为 "GPS Available" 时放在前面。我确实在后台检查 "isProviderEnabled()",但它总是 returns true。
我在 LocationManager 文档中没有提到这个工件:也许这是一个未记录但有意的行为 (???)
- 我尝试将 GPS 侦听器实现为服务。没有快乐。
- 然后我尝试在服务中生成一个 ASyncTask(包括服务启动时的 GPS 侦听器)。还是没有喜悦。
在任何一种情况下,相同的行为:当启动服务的应用进入后台时,不会调用 onLocationChanged。
有人有什么建议吗?
我找到了解决方案:我需要使用 Foreground 服务。
https://androidwave.com/foreground-service-android.example 中对此进行了描述
通过此更改,即使在主 activity 停止(完成)后也会收到 GPS 定位。
我有一个可用的应用程序,它使用 LocationManager 的 onLocationChanged() 回调处理和记录 GPS 位置。它工作正常直到我将应用程序置于后台,例如使用 "Recent Tasks" 按钮或主页按钮转到另一个应用程序。当我再次将它带到前面时,更新恢复。有趣的是,我确实看到状态从 GPS "Temporarily Unavailable" 变为 "GPS Available" 时放在前面。我确实在后台检查 "isProviderEnabled()",但它总是 returns true。
我在 LocationManager 文档中没有提到这个工件:也许这是一个未记录但有意的行为 (???)
- 我尝试将 GPS 侦听器实现为服务。没有快乐。
- 然后我尝试在服务中生成一个 ASyncTask(包括服务启动时的 GPS 侦听器)。还是没有喜悦。
在任何一种情况下,相同的行为:当启动服务的应用进入后台时,不会调用 onLocationChanged。
有人有什么建议吗?
我找到了解决方案:我需要使用 Foreground 服务。 https://androidwave.com/foreground-service-android.example 中对此进行了描述 通过此更改,即使在主 activity 停止(完成)后也会收到 GPS 定位。