我有一个前台服务需要获取单个位置更新。
它由特定的广播启动,启动后它只需在我们的后端发出一个请求。当它收到另一个广播时,它会请求位置更新(一次),执行另一个后端请求,然后自行停止。
编辑:澄清一下,服务本身执行位置更新和后端请求。在这方面它独立于主应用程序。
无论手机处于唤醒状态还是处于打瞌睡模式,此功能都适用于 Lollipop 和 Marshmallow。但由于某种原因,在 Android O 上,该服务在 Doze 模式下永远不会获取位置更新。网络工作正常,因为它的第一个请求在这两种情况下都会通过。另外,如果我在位置请求运行时唤醒手机,它将获得更新。如果我把它放在维护窗口中也是一样。
Android O 确实引入了一些限制背景位置但正如该页面提到的,前台应用程序行为(应用程序可见或前台服务正在运行)应保留并与以前版本的 Android 类似。
这是开发者预览版中的问题还是我错过的限制?
看一下 LocationUpdatesForegroundService 示例:Android O 的代码示例,也许你做错了什么。
LocationUpdatesForegroundService 示例 - 展示如何使用
当应用程序活动时,前台服务获取位置更新
不可见。对于在 Android O 上运行的应用程序(甚至是面向 Android O 的应用程序)
Android 7.0(API级别24)或更低),后台更新有限
每小时只有几次。使用前台服务是一种方法
收到更频繁的更新。
在 GitHub 上获取:Java
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)