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

时间:2017-06-28 20:16:41

标签: android location android-service android-doze android-8.0-oreo

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

看看LocationUpdatesForegroundService示例:Code Samples for Android O,也许你做错了。

  

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

在GitHub上获取它:Java