繁体   English   中英

前台服务未在Android O中的打盹模式下接收位置更新

[英]Foreground service not receiving location updates in Doze mode in Android O

我有一个需要获得单个位置更新的前台服务。

它由特定的广播启动,在启动时它只是在我们的后端发出请求。 当它收到另一个广播时,它会请求一个位置更新(一次),另一个后端请求,然后自行停止。

编辑:澄清一下,服务本身会进行位置更新和后端请求。 在这方面它独立于主应用程序。

当手机处于唤醒状态或处于打盹模式时,这在Lollipop和Marshmallow上效果很好。 但出于某种原因,在Android O上,当处于打盹模式时,服务永远不会获得位置更新。 网络工作正常,因为它的第一个请求在两种情况下都会通过 此外,如果我在位置请求它运行时唤醒手机,它将获得更新。 如果我把它放在维护窗口中也一样。

Android O确实在背景位置上引入了一些限制,但正如页面所提到的,前景应用程序行为(应用程序可见或前台服务运行)应该保留,并且与之前版本的Android类似。

这是开发人员预览中的问题还是我错过的限制?

看一下LocationUpdatesForegroundService示例: Android O的代码示例 ,也许你做错了。

LocationUpdatesForegroundService示例 - 显示在应用程序活动不可见时如何使用前台服务获取位置更新。 对于在Android O上运行的应用程序(甚至是针对Android 7.0(API级别24)或更低级别的应用程序),后台更新仅限于每小时几次。 使用前台服务是一种接收更频繁更新的方法。

在GitHub上获取它: Java

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM