请考虑以下示例:
setInterval(function()
{
console.log(new Date());
});
如果我在OS X下使用electron example.js
运行它,它会在我的dock栏中打开一个图标并开始在控制台上打印时间。但是,如果应用未聚焦,则一段时间后它将开始限制。
我环顾四周,发现这是由于OS X省电策略。现在,如果我需要它继续在后台工作怎么办?我的应用程序将是一个守护进程,时不时地做一些事情,我不能让我的用户长时间茫然地盯着我的应用程序。
我在这里发现我可以做
electron.powerSaveBlocker.start('prevent-app-suspension');
这实际上解决了我的问题。然而,这是相当侵入性的,因为据我所知,它完全阻止了系统睡觉!我不需要这么多,我只需要我的应用程序在计算机处于活动状态并在线时做一些事情,而不会强迫它永远保持清醒状态。
在让我的用户将应用程序持续保持在前台和让他们的计算机永远不眠之间,难道中间没有任何东西吗?
根据当前文档:
注意:
prevent-display-sleep
的优先级高于prevent-app-suspension
.只有最高优先级类型才会生效。 换句话说,prevent-display-sleep
总是优先于。prevent-app-suspension
.例如,调用 A 请求
prevent-app-suspension
的 API 和 另一个调用 B 请求prevent-display-sleep
。prevent-display-sleep
将一直使用,直到 B 停止其请求。后 那个,prevent-app-suspension
被使用。
这意味着将prevent-app-suspension
设置为打开,仍将允许系统进入睡眠状态,并简单地执行您希望的操作。但是,您可以运行该函数两次,传递两个标志,打开两个选项。但是,正如上面的文档所说,如果两者都设置为 on,那么系统将不会休眠,直到该标志被删除。