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

2023-12-09

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

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

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

无论手机处于唤醒状态还是处于打瞌睡模式,此功能都适用于 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(使用前将#替换为@)

Android O 中的 Doze 模式下前台服务未接收位置更新 的相关文章

随机推荐

  • elasticsearch与neo4j数据库的集成

    我正在尝试将elasticsearch与我的neo4j数据库一起使用以进行快速查询 我尝试了很多网站 但它们都是旧文章 所以我没有任何明确的想法 到目前为止我遵循的步骤 安装了neo4j 安装了elasticsearch 将粘贴的弹性搜索插
  • 翻译 JQuery Mobile 小部件

    Using i18next 如何翻译 JQuery Mobile 小部件 具体来说 我想知道如何在不诉诸使用的情况下做到这一点data i18n target修改生成的内部元素 因为这很脆弱 因为未来的小部件版本可能会更改生成的代码 是否有
  • 有没有办法将多个命令输出复制到剪贴板?

    我有 4 个命令链接在一起 我想立即将所有四个命令的输出复制到剪贴板 基本上将每个命令的输出附加到剪贴板 这可能吗 我正在运行的命令是这样的 ipconfig findstr IPv4 systeminfo findstr B C OS N
  • 使用 Shell 函数运行 exe 时出现文件未找到错误

    我正在从用户表单运行一个子程序 该子程序应该运行在工作文件夹中找到的 exe 文件 如下所示 Sub RunProcessor If MsgBox Run simulation vbYesNo vbNo Then Exit Sub Else
  • C# Graphics.CopyFromScreen“参数无效”

    我用 C 制作了一个应用程序 它将连续执行屏幕捕获并使用计时器将其显示在 PictureBox 中 运行几秒后 出现ArgumentException 下面是代码和具有 ArgumentException 的行 private void t
  • 使用请求库的重试历史记录

    我正在我的 Orchestrate 脚本中构建一个新的重试功能 我想知道尝试连接到特定 URL 时我的请求方法发生了多少次 以及 如果可能 发生了什么错误 现在 我需要这个用于记录目的 因为我正在开发一个消息系统 一旦我在一个消息系统中工作
  • 如何访问从故事板加载的视图控制器的属性?

    我有一个创建的视图控制器实例instantiateViewControllerWithIdentifier像这样 TBSCTestController testController self storyboard instantiateVi
  • 使用 opencv 进行音频输出和视频处理

    我正在使用 opencv 处理视频 但同时我需要播放音频并简单地控制它 例如大声或当前帧号 我想我应该用 ffmpeg 创建一个并行进程 但我不知道该怎么做 你能解释一下该怎么做吗 或者你知道另一种解决方案吗 I think ffmpeg应
  • 在共享存储 Xamarin 表单中保存文件

    我需要在android的共享存储中保存一个文件 我发现了这个链接 gt https developer android com training data storage shared documents files 我正在使用依赖项服务
  • 如何在 node.js selenium-webdriver 中模拟右键单击?

    我在用用于 Node js 的 selenium webdriver 如何使用该驱动程序模拟右键单击 我在官方文档中找不到这个 谢谢 wmash 你帮我找到解决方案 答案 已找到here driver actions click eleme
  • 如何在不使用构造函数 DI 的情况下创建 Http 实例? (RC.5+) [重复]

    这个问题在这里已经有答案了 我需要在不使用 Angular2 的 DI 的情况下获取 Http 的实例 constructor private http Http 以下代码摘自另一个 stackoverflow 问题 并且它适用于 Angu
  • 如何允许用户在 Android 应用程序中添加和删除选项卡

    我正在开发一个使用选项卡的应用程序 每个选项卡都链接到一个网页 用户可以使用 webview 查看该网页并与之交互 我遇到的问题是实现一个添加和删除命令 用户可以根据需要使用该命令删除选项卡 或者添加一个带有自己选择的 url 的选项卡 其
  • 为什么 std::make_unique 调用复制构造函数

    我想知道为什么 make unique 调用复制构造函数但不调用默认构造函数 Node std cout lt lt default Node std cout lt lt Delete Node const Node other std
  • jQuery Mobile / Handlebars - 打开面板隐藏 data-role=content div

    我正在尝试将 Handlebars 与 jQuery mobile 一起使用 我正在使用 jQuery 1 9 1 jQueryMobile 1 4 Handlebars 1 1 2 div div div h1 Title h1 div
  • Rails db:migrate 与 rake db:migrate

    我注意到在 Rails 5 中生成数据迁移时 有些人使用rails db migrate over rake db migrate 有人可以解释一下两者之间的区别吗rails和rake数据库迁移命令 这是否意味着rake命令在 Rails
  • 替换 int 中的字节

    一个int由4个字节组成 我如何用新字节替换这 4 个字节之一 换句话说 我正在寻找一种方法 int ReplaceByte int index int value byte replaceByte implementation 例如 如果
  • 使用 Docker Compose 和 WordPress 映像设置 Xdebug

    我正在尝试使用 docker compose 设置 Xdebug 我正在使用 PhpStorm IDE 并且我正在使用的 Docker 映像安装 PHP 7 2 我正在尝试在这个 WordPress 图像的上下文中执行此操作 这是我当前的
  • 使用相同的 Visual Studio 解决方案部署多个 WP7 应用程序?

    如何使用同一 Visual Studio 解决方案部署多个 WP7 应用程序 我需要改变什么才能实现这一目标 更改 Xap 文件名 程序集 GUID 和标题无法实现此目的 事实上 VS 用新标题覆盖旧的 但不部署单独的应用程序 背景 我们有
  • Javascript 将选定的复选框限制为 2 个

    我想禁用选择超过 2 个选择复选框 但我无法使用我的 javascript 代码做到这一点 我怎样才能做到这一点 btn addEventListener click function var ourRequest new XMLHttpR
  • Android O 中的 Doze 模式下前台服务未接收位置更新

    我有一个前台服务需要获取单个位置更新 它由特定的广播启动 启动后它只需在我们的后端发出一个请求 当它收到另一个广播时 它会请求位置更新 一次 执行另一个后端请求 然后自行停止 编辑 澄清一下 服务本身执行位置更新和后端请求 在这方面它独立于