问题标签 [sleep-mode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
394 浏览

windows - Windows 从睡眠状态恢复后访问冲突

我有一些用户在关闭笔记本电脑盖并重新打开后报告了我的应用程序的 AV。我假设 Windows 进入睡眠模式并且问题出现在恢复时。它是用 Delphi Seattle 10 编写的标准 Windows 32 位应用程序。

应用程序从“睡眠”唤醒后会发生什么?有人有想法么?如何纠正?

下面我发布了给出错误的调用堆栈 - 我看不到任何特别错误的地方,

史蒂夫

0 投票
1 回答
157 浏览

c++ - 当 CPU 挂起或待机状态时,定时条件变量(例如 std::wait_for)会发生什么情况?

当 CPU 处于挂起状态(例如挂起到 RAM)时,定时条件变量会发生什么情况?计时器是继续还是暂停?如果 CPU 唤醒时超时,是否会错过超时条件?或者当 CPU 唤醒时定时器会恢复吗?

0 投票
1 回答
686 浏览

android - API 17 中睡眠模式下的 Android Alarmmanager 问题(批处理警报)

我有这个问题,即设备处于睡眠模式时启动警报不一致(有据可查的问题),这让我发疯。

在我的频繁提醒应用程序中,当上一个提醒发生时,我使用警报管理器设置下一个提醒的时间。在大多数情况下,应用程序运行良好,但在我的 ASUS TF300t (API 17) 上处于睡眠模式时,警报会变得疯狂。

报警注册代码:

还有我的 WakefulBroadcastReceiver 类:

}

我观察到的第一件事是警报批处理,当警报没有按预期启动时,而是在下一个警报与第二个警报一起到期时启动。

另一件事是,当闹钟在睡眠模式下没有按时启动时,它会在我用电源按钮唤醒设备后立即响起。

我知道 API 19 和 23(打盹模式)中警报行为的变化。我使用 setExact() 解决了在模拟虚拟设备中观察到的较新 API 的不精确问题。

我有两个物理 android 设备,这个 TF300t 平板电脑和 Galaxy S3 手机。虽然在 S3 上这个问题很少发生,但 TF300t 上的一致性问题基本上让我的应用程序毫无用处。

所以我的问题是,我所描述的问题是否存在于所有 API 的许多设备上(这需要我寻找完全不同的解决方案),或者它们是设备或 API 特定的并且可以作为例外处理?

0 投票
2 回答
1166 浏览

c - HAL_RCC_OscConfig 花费的时间太长(大约 170 μS),从 STOP 唤醒时我需要它小于 50 μS

在 NUCLEO-L053R8 板上开发 STM32L053R8。

我们有一个系统,它每 200 μS 左右从睡眠中“唤醒”,做少量工作然后返回睡眠(停止模式)。理想情况下,我希望在 50 μS 内从 STOP 唤醒。该HAL_RCC_OscConfig()函数大约需要 170 μS,这使得这项工作毫无意义。

据我所知,大部分时间都花在了 PLL 配置上,特别是在重新启用 PLL 之后的 while 循环(“等待 PLL 准备就绪”)(大约 98 μS)。

有什么方法可以在 50 μS 以下从 STOP 模式唤醒并恢复到全速 HSI?从 STOP 唤醒时设置时钟的最有效方法是什么?

目前我使用 PWR_STOP 示例中规定的方法,如下所示:

调用SystemClockConfig_STOP()依次调用SystemClock_Config() 来配置时钟并在HAL_RCC_OscConfig(&RCC_OscInitStruct).

非常感谢您提供的任何帮助。

0 投票
3 回答
455 浏览

driver - 替换已弃用的 UpdateSystemActivity() 以重置用于测量空闲时间的计时器。

已弃用的 UpdateSystemActivity() 通过“通知电源管理器已发生活动并且用于测量空闲时间的计时器应更新到此调用的时间”来工作。

文档建议使用 IOPMAssertionCreateWithName(...) 但此方法不会重置空闲时间的计时器;它可以防止机器永远休眠,直到调用 IOPMAssertionRelease(...)。使用 IOPMAssertionCreateWithName(...) 不适合我当前的代码库。

是否有任何不推荐的方法可以重置计时器以测量空闲时间?

谢谢!

0 投票
2 回答
125 浏览

javascript - 如果计算机睡着了,JavaScript Audio() 方法会播放声音吗?

如果网站正在运行一个 JavaScript 函数,该函数将使用 Audio() 方法每小时播放一次声音文件,则客户端计算机最终会进入睡眠状态。即使计算机睡着了,Audio() 方法是否仍会通过客户端扬声器播放声音?谢谢大家的时间和帮助!

0 投票
3 回答
11420 浏览

android - 手机睡着时Android AlarmManager不工作

我遇到了 AlarmManager 的问题。

简而言之,我计划了一个 alarmManager :

并且活动 MyActivity 在指定时间出现。就在设备插入时。当它放在我的口袋里或延迟几分钟时,它也可以工作。但是当我在晚上之前设置 alarmManager 时,它不会在早上工作。但是,只要我拿起手机或解锁屏幕,它就会起作用。

所以,我想这是由于设备的睡眠模式,但如何解决呢?

1)我在myActivity的每个方法中都添加了一个日志,我确信在我手动唤醒设备之前没有人被调用。2)我尝试了 PowerManagement 的唤醒锁(在清单中使用 WAKE_LOCK 权限),但没有任何改变:

请帮忙 !我确定我已经很接近了...

编辑 2016 年 12 月 4 日:感谢 Nick Friskel 和 Vikram Rao,我将初始代码更改为调用广播接收器并在 onReceive 中获取我的唤醒锁。不幸的是,它似乎不起作用。当手机插上电源或计划在 35 分钟后发出警报时,它可以完美运行,但是对于整个晚上,onReceive 甚至都没有被调用。那天晚上我尝试了,计划在上午 9:00 发出警报,但 onReceive 仅在上午 9:46 执行,这意味着我解锁设备的那一刻。这是我的新代码:

也就是说,出于某种原因,我的日志写“onReceive 的开始”并不是真正在侦听器的开头。我只是设法把它放在真正的开头,所以我会看看是否调用了监听器。

编辑 2016 年 12 月 5 日:所以,我在 onReceive 的顶部更改了日志写入,并且发生了同样的问题:一旦我手动唤醒设备,就会调用 onReceive 的开始。我可以实现wakefulBroadcastReceiver,但我担心它不会解决任何问题。如果我理解正确,wakefulBroadcastReceiver 有助于防止设备在 onReceive 和活动或服务启动之间休眠。但是如果 onReceive 甚至没有被调用呢?我有点绝望……也许我应该直接问索尼。此外,我的手机有耐力模式,但它没有被激活。

编辑 2016 年 12 月 11 日: 所以,通过更多测试,我现在确定我什么都不懂......我设置了一个每 5 分钟激活一次的广播接收器(onReceive 会在 5 分钟后重置警报管理器),我可以看到它是完美的工作......有时。它可以持续几个小时,然后睡两个小时,然后可以睡30分钟,然后再睡。(当我的手机打开、拔掉电源并闲置时,所有这些)。我将删除所有代码,但我们感兴趣的是什么。这将更容易理解,我将能够在这里编写所有活动代码。

AndroidManifest.xml

MainActivity.java

MySimpleReceiver.java

MyAlarmPlanner.java

我不认为 MyLogManager.java 有用,它只是无聊的文件管理方法。

长时间空闲后的日志文件内容:

有人能告诉我我的错误在哪里吗?

0 投票
1 回答
1170 浏览

android - 当手机处于睡眠模式时,连接更改广播接收器未触发

Broadcast Receiver为我的应用设置了网络状态更改设置。即使手机处于睡眠模式,我也需要接收 wifi 连接断开事件。这在手机正在充电并处于睡眠状态时有效,但在手机未处于睡眠状态时无效。

这是代码

这是它在清单中的注册方式

我知道 Marshmallow 及以上设备中与打盹模式相关的问题,但当手机处于睡眠状态且未连接到充电器时,我什至没有在 Kitkat 设备中收到事件。

0 投票
2 回答
3811 浏览

ios - Ionic 仅在应用程序运行时防止手机休眠

Insomnia插件承诺让设备保持清醒window.plugins.insomnia.keepAwake()直到window.plugins.insomnia.allowSleepAgain()被调用。

但是对于某些应用程序,只有在应用程序处于活动状态时设备保持清醒才有意义。如果用户暂停应用程序并忘记他们已将其留在后台,那么允许睡眠而不是降低他们的电池电量会很好。

通常应用暂停所需的操作是通过pause事件处理的:

但是根据Cordova docs,iOS 上的 Pause 处理程序不能调用任何本机内容——其中包括 Insomnia 插件。

如何实现想要的功能?

0 投票
1 回答
2299 浏览

windows - 以编程方式将 PC 置于睡眠模式

一个老问题,也许 (?) 已为较旧的 Windows 版本解决,但不适用于 Windows 10!

旧讨论中提出的解决方案(... SetSuspendState 参数为 0,1,0(或睡眠),有或没有事先休眠...)不适用于 Windows 10 系统;至少不是全部:启动模式主要是休眠,而不是睡眠。

我发现了什么:在旧的 Windows 版本中,注册表中有类似的内容: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\sleep\command] @="rundll32.exe powrprof.dll,SetSuspendState睡眠” 这显然是睡眠命令。至少在我的 Windows 10 PC 上没有这样的条目!

有人在这里有新的答案吗?

================== 已编辑:在此之后我的 OP 我发现这不是 Windows 10 问题,而是 Surface 3 问题,与 Surface 上使用的电源选项有关3 作为睡眠模式:

Surface 3 使用的睡眠模式似乎是“现代待机”=“S0 低功耗空闲”=“连接网络待机”。(不是通常的 S3 睡眠模式!!!)

使用SetSuspendState的命令似乎根本无法在 Surface 3 上启动睡眠模式。

我的问题的新措辞:我想要的只是一个命令,它与设置为“电源按钮操作 = 睡眠”的 Surface 3 上的电源按钮或外部设备上的睡眠按钮相同Surface 3 设置为“睡眠按钮操作 = 睡眠”时的 (USB) 键盘。