前言
当使用Electron开发的客户端,如果长时间处于后台,会进入休眠状态,暂停JS的执行。
禁止窗口休眠
Electron 窗口默认在后台时会进入「休眠状态」(暂停渲染进程的 JS 执行)。
通过配置 backgroundThrottling: false 可禁用该行为,让后台窗口继续运行任务。
1 | // main.js 主进程 |
防止应用休眠
定时发送消息
这个是为了防止应用休眠。
1 | if (mainWindow) { |
窗口置顶(无效)
那么设置窗口指定能阻止休眠吗?
窗口「置顶显示」(始终悬浮在其他窗口上方),并不会直接禁用窗口的后台休眠。
1 | mainWindow.setAlwaysOnTop(true); |
防止系统休眠
Electron自带的API。
阻止系统进入低功耗 (休眠) 模式。
1 | powerSaveBlocker.start(type) |
参数说明:
type(string) - 阻止方式:
prevent-app-suspension- 阻止应用被暂停。 保持系统活动状态,但允许屏幕关闭。实例:下载文件或播放音频。
prevent-display-sleep- 防止显示器进入休眠状态。 保持系统和屏幕的活跃性。实例:播放视频。
主进程触发
运行
1 | const powerSaveBlocker = require('electron').powerSaveBlocker; |
渲染进程触发
如果需要在渲染进程(如 Vue/React 页面)通过按钮 “开启 / 关闭防休眠”,需通过 IPC 与主进程通信:
主进程(main.js)
运行
1 | const { ipcMain } = require('electron'); |
渲染进程
运行
1 | const { ipcRenderer } = require('electron'); |