我有一个需要获得单个位置更新的前台服务。
它由特定的广播启动,在启动时它只是在我们的后端发出请求。当它收到另一个广播时,它会请求一个位置更新(一次),另一个后端请求,然后自行停止。
编辑:澄清一下,服务本身会执行位置更新和后端请求。在这方面,它独立于主应用程序。
当手机处于清醒状态或处于打盹模式时,这在Lollipop和Marshmallow上效果很好。但出于某种原因,在Android O上,当处于打盹模式时,服务永远不会获得位置更新。网络工作正常,因为它的第一个请求在两种情况下都会通过此外,如果我在位置请求它运行时唤醒手机,它将获得更新。如果我把它放在维护窗口中也一样。
Android O确实在background location上引入了一些限制,但正如页面所提到的,前景应用程序行为(应用程序可见或前台服务运行)应该保留,并且与之前版本的Android类似。
这是开发人员预览中的问题还是我错过的限制?
答案 0 :(得分:0)
看看LocationUpdatesForegroundService示例:Code Samples for Android O,也许你做错了。
LocationUpdatesForegroundService Sample - 显示如何使用 应用程序活动时获取位置更新的前台服务 不可见。对于在Android O上运行的应用程序(甚至是目标应用程序 Android 7.0(API级别24)或更低版本,后台更新有限 每小时只有几次。使用前台服务是一种方法 接收更频繁的更新。
在GitHub上获取它:Java