当应用程序被终止时并在后台使用 FusedLocationProviderClient 和挂起的 Intent 但在不规则时间获取位置
Posted
技术标签:
【中文标题】当应用程序被终止时并在后台使用 FusedLocationProviderClient 和挂起的 Intent 但在不规则时间获取位置【英文标题】:Location is fetching when the app is killed and in background using FusedLocationProviderClient with pending Intent but in Irregular times 【发布时间】:2019-04-04 08:08:24 【问题描述】:我正在使用带有待处理意图的 FusedLocationProviderClient。当应用程序处于活动状态时,我正在获取位置。但是,当应用程序进入后台或应用程序被杀死时,我会以不规则的时间间隔获取位置,例如 2 分钟、3 分钟、10 分钟。需要帮助吗?
注意:我也瞄准奥利奥。
my code
【问题讨论】:
发生这种情况是因为新的节电政策。检查下面的答案。 【参考方案1】:如果你想在你的应用在 Oreo 或更高版本的后台时获取位置数据,你应该运行前台服务(或类似的东西):
https://github.com/googlesamples/android-play-location/tree/master/LocationUpdatesForegroundService
借助 Oreo,Google 开始限制应用可以在后台执行的操作:
https://developer.android.com/about/versions/oreo/background
【讨论】:
感谢@Gavin Wright,但我也不想收到通知。我的最低 sdk 版本是 15。请提出一些建议。 这可以通过 JobScheduler 来完成,但您可能会遇到问题,因为在后台每隔几分钟获取一次位置会消耗大量电池。这就是通知存在的原因,以通知用户一些正在消耗大量电池的事情。无论如何,试一试我猜:***.com/questions/47224219/… JobScheduler 用于 API 级别大于 21。我想我必须使用 Firebase Job Dispatcher。以上是关于当应用程序被终止时并在后台使用 FusedLocationProviderClient 和挂起的 Intent 但在不规则时间获取位置的主要内容,如果未能解决你的问题,请参考以下文章