我已经遇到这个问题几个月了。我的 android 应用程序使用前台服务(以此为模型来跟踪短暂的位置。这在 Android P 上运行良好,但随着 Android 10/Q 的发布,前台服务在十分钟内停止发送更新在开始像它应该的那样再次更新之前。这些情况是:
- 在 Android Q 上运行
- 配置为发送批量位置更新
- 该应用程序被放置在后台
在后台运行后,位置更新将停止最多十分钟,然后重新启动并适当地发送批量位置更新。在此期间,所需的前台通知仍在显示,并且该服务正在根据 Android 的操作系统运行。唯一的其他奇怪行为是,有时它会调用 LocationCallback 的 OnLocationAvailability 回调,但无论是在前台还是后台,它都会这样做。
我做过的事情:
- 禁用批量位置更新:这有助于获得一致的更新,但会破坏我应用程序的另一个超酷部分。相反,我更愿意让操作系统正常工作。
- 添加新的 Android Q 清单更改(ACCESS_BACKGROUND_PERMISSION 和 foregroundServiceType="location")。作为 Android Q 更新的一部分,我这样做了。
- 扩展了我在前台服务中的日志记录,因为它只是在等待 FusedLocationProviderClient
我应该如何调试这个?很难获得对前台服务和 fusedLocationProviderClient 的更多可见性。或者,如果有人遇到此问题,我也会感谢您的反馈。