cllocationmanager - 应用程序在后台时没有 GPS onLocationChanged 回调?
问题描述
我有一个工作应用程序,它使用 LocationManager 的 onLocationChanged() 回调处理和记录 GPS 位置。它工作正常,直到我将应用程序置于后台,例如通过使用“最近的任务”按钮或主页按钮转到另一个应用程序。当我再次把它带到前面时,更新会继续。有趣的是,我确实看到 GPS 的状态从“暂时不可用”变为“GPS 可用”。我在后台检查“isProviderEnabled()”,但它总是返回true。
我在 LocationManager 文档中没有看到这个工件的提及:也许这是一个未记录但预期的行为(???)
- 我尝试将 GPS 侦听器作为服务实现。没有喜悦。
- 然后我尝试在服务内生成一个 ASyncTask(包括服务启动时的 GPS 侦听器)。仍然没有喜悦。
在任何一种情况下,相同的行为:当启动服务的应用程序进入后台时,不会调用 onLocationChanged。
有人有建议吗?
解决方案
我找到了解决方案:我需要使用前台服务。这在https://androidwave.com/foreground-service-android.example中进行了描述。 通过此更改,即使在主要活动停止(完成)后也会收到 GPS 修复。
推荐阅读
- javascript - 如何设置恒定的导入根路径?
- scheme - 有没有办法在重新定义特殊形式后取回它们?
- mysql - 如何将两个表与一列的位置连接起来
- java - 如何为类外的自定义对话框设置 onDismiss/CancelListener?
- spring - 流式传输时 S3 连接池超时
- java - 代理在 webDriver 中的 chromeOptions 中无法使用 Java 中的 selenium
- android - 如何修复三星设备中的地理围栏触发器,特别是最新的 s9 和 s10
- c# - SMBLibrary:“试图以访问权限禁止的方式访问套接字”
- r - 如何根据每列的总和值选择前 3 列/变量?
- java - javax.validation.constraints 中的注释不起作用(忽略)