如何让应用程序在后台保持唤醒状态

2023-12-02

我编写了一个应用程序,该应用程序连接到蓝牙设备并在汽车(在后台)和导航(或其他东西)在前台使用。

但在 Android 7+(也可能是 6)上,应用程序会在一段时间后进入睡眠状态。当我尝试从相机拍照时,“睡眠模式”立即生效,我的应用程序现在正在睡眠(没有蓝牙连接,没有通知)-只是死应用程序。

我必须转到最近的应用程序 -> 单击我的应用程序,这会“唤醒”。蓝牙现在再次连接到设备。

但我仍然无法检查应用程序是否正在睡眠。那么,如何让应用程序在后台保持唤醒状态呢?

我读了一些关于 WakeLock 的内容,但看起来它不起作用,因为应用程序仍在睡眠。但也许我用错了。

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    wk = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "MyWakeLock");
    wk.acquire();

和 onDestroy

wk.release();

Thanks


从 Android API 23 开始,Google 引入了Doze mode and App Standby以节省电池电量。当设备进入打瞌睡模式或应用程序进入App Standby,应用程序完成的所有任务都会被推迟。我们遇到了一个警报问题,该警报由于同样的原因而没有触发。如果您阅读文档,您会发现使用唤醒锁也没有帮助。

瞌睡限制 以下限制适用于您的应用程序 在瞌睡中:

网络访问被暂停。

系统忽略唤醒锁。

标准 AlarmManager 警报(包括 setExact() 和 setWindow()) 推迟到下一个维护时段。如果您需要设置闹钟 在打瞌睡时触发,使用 setAndAllowWhileIdle() 或 setExactAndAllowWhileIdle()。使用 setAlarmClock() 设置的闹钟继续 正常触发 - 系统在这些警报发生前不久退出打瞌睡状态 火。

系统不执行 Wi-Fi 扫描。

系统不允许同步适配器运行。系统不允许JobScheduler运行

因此,如果您想绕过所有这些,您的应用程序必须在前台有一个进程。再次来自同一个文档 -

该应用程序当前有一个进程位于前台(或者作为 活动或前台服务,或被其他活动使用或 前台服务)。

在您的情况下,运行一项服务并将其优先级提高到前台。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让应用程序在后台保持唤醒状态 的相关文章

随机推荐

  • 想要删除 Browser.sleep()

    大家好 我正在使用量角器来测试非角度网站 最初在测试时我有browser sleep 这样页面就可以完全加载 我知道添加 browser sleep 不是一个好的测试方法 因此想从代码中删除它 我尝试了 browser wait 但出现错误
  • 匹配第 n 次出现(排除最后一次出现)

    我有一个关于正则表达式的问题 我不知道为什么我不能执行以下操作 例句 This is a test string with five t s 我使用的正则表达式 t 3 我希望正则表达式匹配以下内容 This is a test s 但它不
  • 如何在列中打印嵌套的Python列表

    我有一个程序 它生成一个Python列表作为其输出 该列表是一个嵌套列表 列表 名称 地址 电话号码 的列表 我希望能够以柱状格式打印 似乎在陈述问题时是一个非常简单的想法 但我一直无法找到一种简单的方法来从列表中提取数据 如果我打印 列表
  • 检查套件完成后如何触发 Github 工作流程?

    我只想在特定工作流程完成时触发工作流程 有人知道该怎么做吗 一些背景 我有一个工作流程Tests另一个叫Build feature 我运行我的Tests每个 PR 到分支的工作流程feature 如果某些内容被推送 合并到分支feature
  • 几个 catch 块还是一个带有dynamic_cast 的catch 块?

    我们有一个异常类的层次结构 有一个GenericException类以及从它派生的许多类 GenericException是多态的 它有一个虚拟析构函数 派生类之一是FileException抛出以指示操作文件系统对象时出现错误 FileE
  • PHP 中“&$var”中的“&”是什么意思? [复制]

    这个问题在这里已经有答案了 什么是 意思是在 var in PHP 有人可以帮我进一步解释一下吗 先感谢您 这意味着传递变量参考 而不是传递变量的值 这意味着当程序流返回到调用代码时 对 preparse tags 函数中该参数的任何更改都
  • 使用react-router的history.push()和自定义URL参数

    我正在尝试创建一个用户可以加入群组的应用程序 我拥有的页面之一是群组仪表板 为此 我创建了一个 URL 参数为 id 的路由
  • 禁止带有 `static_assert` 的函数

    我想阻止某些函数被调用 让我们忽略通过函数指针或其他东西调用函数的情况 只关注直接函数调用的情况 我可以这样做 delete 然而 发布的诊断信息并不丰富 我考虑过使用static assert 您可以使用它提供自定义诊断消息 我放置了一个
  • 将二维数组(字符串)存储到文件并检索它

    我制作了一个简单的程序 其中有一个存储大量数据的 2D 字符串数组 我搜索了很多地方来了解如何存储和检索二维数组 我想在程序结束时将数据保存在数组中 并在程序启动时检索该数据 我努力了 ObjectOutputStream toFile n
  • 如何将 java.lang.String 的空白 JSON 字符串值反序列化为 null?

    我正在尝试将一个简单的 JSON 反序列化为 java 对象 然而我却变得空虚String值java lang String属性值 在其余属性中 空白值将转换为null值 这就是我想要的 下面列出了我的 JSON 和相关的 Java 类 J
  • 从 python 中的标签名称中抓取数据

    您好 我正在尝试从网站上抓取用户数据 我需要用户 ID 该 ID 可在标签名称本身中找到 我正在尝试使用 python selenium 和 beautiful soup 中的 UID 来抓取div tag Example lt div i
  • 使用 Android 本机应用程序中的 ADAL 库对 Azure AD 上的用户进行身份验证

    我们有一个要求 用户应该从本机应用程序 Android iOS 登录 而不从应用程序调用 Microsoft 登录 Web 视图窗口 我们有示例代码 演示使用 net 控制台应用程序中的用户名和密码对 Azure AD 进行非交互式身份验证
  • FreeSwitch + Mode Verto + Webrtc + Android + 无法从 android 拨打电话

    我做了一个mode verto安卓客户端 使用WebRtc 预建库 org webrtc google webrtc 1 0 libjingle io pristine libjingle 11139 aar and 自由切换但只成功进行单
  • 启动 JavaFX 应用程序时的内部 NPE

    所以基本上我开始了一个虚拟的 JavaFX 项目 只是为了为我的实际问题实现一个简约的示例 但现在我什至无法再运行那个简约的项目 也没有收到足够的错误信息来自己用谷歌搜索出来 所以现在 当我运行代码时 我收到给定的错误堆栈 这不会引导我到任
  • Biztalk 和调用 Web 服务的最佳方式

    我正在编写一个 biztalk 编排 需要调用一个 Web 服务 可能是多个 Web 服务 而且可能不止一次 我面前有两个选择 一 在单独的代码项目中使用 wsdl 并从表达式形状的代码中调用 Web 服务 二 从 Biz 使用它 获取架构
  • 无法在 MySQL 中获得正确的编码

    一段时间以来 我一直在努力解决 MySQL 中的编码问题 我正在建立一个数据库 其中不仅包含拉丁文 还包含西里尔文和阿拉伯文文本 这是我如何创建数据库的示例 CREATE DATABASE db1 DEFAULT CHARACTER SET
  • 错误:该位置没有任何可重复的内容

    我有一个文本文件 其中包含俚语及其用真正的英语替代的列表 我使用 作为分割点将此文本文件转换为字典 并且在转换后打印字典时一切似乎都正常 但是 源自此行的错误 slangs re re compile join slang dict key
  • 对两个给定日期之间的集合日期字段进行排序

    我想根据两天之间的日期字段对列表进行排序 比如从现在到接下来的三天 排序列表应从现在开始和接下来的 3 天按升序排列 之后的所有先前和未来日期按升序排列 e g List
  • 如何在多个 EJB 之间共享 Java 缓存系统 (JCS) 资源

    我使用 JCS 来存储 ldap 搜索结果 该结果应由多个 EJB 共享 我创建了一个单例类来仅初始化 JCS 一次 但由于 EJB 的类加载器 它已使用自己的副本初始化了多次 所以搜索资源不共享 你们如何解决需要在多个 bean 之间共享
  • 如何让应用程序在后台保持唤醒状态

    我编写了一个应用程序 该应用程序连接到蓝牙设备并在汽车 在后台 和导航 或其他东西 在前台使用 但在 Android 7 也可能是 6 上 应用程序会在一段时间后进入睡眠状态 当我尝试从相机拍照时 睡眠模式 立即生效 我的应用程序现在正在睡