electron 阻止电脑休眠或者阻止显示器黑屏
内容提要
Electron 的 powerSaveBlocker 模块用于阻止系统进入低功耗模式。start(type) 返回拦截器 id,type 有两种:prevent-app-suspension 阻止应用暂停但允许屏幕关闭,适合下载或播放音频;prevent-display-sleep 防止显示器休眠,适合播放视频,且优先级更高,仅最高优先类型生效。stop(id) 停止指定拦截器,isStarted(id) 判断其是否开启。
延伸解读
两种拦截类型的选择依据
文章明确区分了 prevent-app-suspension 和 prevent-display-sleep 的适用场景:前者保持系统活动但允许屏幕关闭,适合下载文件或播放音频;后者同时保持系统和屏幕活跃,适合播放视频。开发者应根据实际需求选择,避免不必要的屏幕常亮造成电量浪费。
优先级机制的实际影响
prevent-display-sleep 的优先级高于 prevent-app-suspension。当两者同时存在时,只有 prevent-display-sleep 生效,直到其被停止后,prevent-app-suspension 才会生效。这意味着多个拦截器共存时,高优先级类型会覆盖低优先级类型,开发者需注意调用顺序和停止时机。
拦截器生命周期管理
start 方法返回一个整数 id 用于标识拦截器,stop 方法通过该 id 停止指定拦截器,isStarted 可判断其是否开启。文章示例展示了完整的启动、检查、停止流程,提醒开发者妥善保存 id 并在适当时机调用 stop,避免拦截器长期运行导致系统无法休眠。
Q&A
Electron 如何阻止电脑进入休眠或显示器黑屏?
使用 Electron 的 powerSaveBlocker 模块。通过调用 powerSaveBlocker.start(type) 并传入合适的类型('prevent-app-suspension' 或 'prevent-display-sleep')来阻止系统进入低功耗模式,返回一个拦截器 id 用于后续控制。
powerSaveBlocker.start 的两种类型有什么区别?
'prevent-app-suspension' 阻止应用被暂停,保持系统活动但允许屏幕关闭,适合下载文件或播放音频;'prevent-display-sleep' 防止显示器休眠,保持系统和屏幕活跃,适合播放视频。
prevent-display-sleep 和 prevent-app-suspension 哪个优先级更高?
prevent-display-sleep 优先级更高。当两者同时存在时,只有 prevent-display-sleep 生效,直到它被停止后,prevent-app-suspension 才会生效。
如何停止 powerSaveBlocker 的拦截?
调用 powerSaveBlocker.stop(id),传入 start 方法返回的拦截器 id,即可停止指定的省电拦截器。
如何检查 powerSaveBlocker 是否已开启?
使用 powerSaveBlocker.isStarted(id),传入拦截器 id,返回布尔值表示该拦截器是否已开启。
播放视频时应该用哪种 powerSaveBlocker 类型?
播放视频时应使用 'prevent-display-sleep' 类型,因为它能防止显示器休眠,保持屏幕活跃,适合视频播放场景。