android - Android 后台应用 - 前台 FusedLocationProviderClient 服务停止提供位置更新
问题描述
我已经遇到这个问题几个月了。我的 android 应用程序使用前台服务(以此为模型来跟踪短暂的位置。这在 Android P 上运行良好,但随着 Android 10/Q 的发布,前台服务在十分钟内停止发送更新在开始像它应该的那样再次更新之前。这些情况是:
- 在 Android Q 上运行
- 配置为发送批量位置更新
- 该应用程序被放置在后台
在后台运行后,位置更新将停止最多十分钟,然后重新启动并适当地发送批量位置更新。在此期间,所需的前台通知仍在显示,并且该服务正在根据 Android 的操作系统运行。唯一的其他奇怪行为是,有时它会调用 LocationCallback 的 OnLocationAvailability 回调,但无论是在前台还是后台,它都会这样做。
我做过的事情:
- 禁用批量位置更新:这有助于获得一致的更新,但会破坏我应用程序的另一个超酷部分。相反,我更愿意让操作系统正常工作。
- 添加新的 Android Q 清单更改(ACCESS_BACKGROUND_PERMISSION 和 foregroundServiceType="location")。作为 Android Q 更新的一部分,我这样做了。
- 扩展了我在前台服务中的日志记录,因为它只是在等待 FusedLocationProviderClient
我应该如何调试这个?很难获得对前台服务和 fusedLocationProviderClient 的更多可见性。或者,如果有人遇到此问题,我也会感谢您的反馈。
解决方案
推荐阅读
- javascript - 使用 AWS SDK 将 blob 转换为 PDF 并保存到 S3
- c# - 在 C# 中将 gridview 数据导出到 Excel 时面临的问题
- https - 使用 LetsEncrypt Boulder 作为 DNS 服务器
- python - 在 for 循环期间创建数据框
- python - 熊猫将一个df中的日期与另一个df中的时间框架匹配,然后是groupby-sum
- angular - 错误类型错误:无法读取未定义 Angular 6 的属性“mData”
- java - 使用嵌套 for 循环添加 2 个带有 java.util.ListIterator 的链接列表;
- amazon-web-services - 通过 Terraform 或 Cloudformation 启用和配置 AWS Cognito 高级安全功能
- ruby-on-rails - Ruby on Rails - 单选内联按钮 - 为什么此选项显示为真/假?
- angular - 我如何将从 post 请求中收到的数据分配给 observable?- 离子3