如何使用Android O在设备空闲时发送位置更新?

如何使用Android O在设备空闲时发送位置更新?,android,android-gps,android-8.0-oreo,foreground-service,Android,Android Gps,Android 8.0 Oreo,Foreground Service,在我的代码示例中,当Android O设备进入空闲(doze)模式时,不会发送位置更新。有人用过这个吗?在Android O之前的任何设备上都没有问题(在API 26添加位置更新限制之前) 有关守则如下: MainActivity绑定到一个前台服务,该服务将位置更新放入logcat 对代码进行了如下测试: 创建虚拟设备(像素API 26) 在虚拟设备的“扩展控件”中,加载并启动GPX文件 使用虚拟设备上的电源按钮禁用屏幕 adb外壳转储系统电池拔出 adb外壳转储sys deviceidle步

在我的代码示例中,当Android O设备进入空闲(doze)模式时,不会发送位置更新。有人用过这个吗?在Android O之前的任何设备上都没有问题(在API 26添加位置更新限制之前)

有关守则如下:

MainActivity绑定到一个前台服务,该服务将位置更新放入logcat

对代码进行了如下测试:

  • 创建虚拟设备(像素API 26)
  • 在虚拟设备的“扩展控件”中,加载并启动GPX文件
  • 使用虚拟设备上的电源按钮禁用屏幕
  • adb外壳转储系统电池拔出
  • adb外壳转储sys deviceidle步骤
  • 重复步骤5,直到设备处于空闲状态

  • 您可以尝试使用新的Context.startForegroundService()来启动服务,而不是绑定到服务。也许这里也有一些线索:@M66B我没那么幸运这里有一个类似的问题和其他建议: