4

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

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

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

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

Android O 确实对后台位置引入了一些限制,但正如页面所述,前台应用程序行为(应用程序可见或前台服务正在运行)应保留并与以前的 Android 版本类似。

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

4

1 回答 1

0

看看 LocationUpdatesForegroundService Sample: Code Samples for Android O,也许你做错了什么。

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

在 GitHub 上获取它:Java

于 2017-07-04T07:00:18.990 回答