10

考虑以下示例:

setInterval(function()
{
   console.log(new Date());
});

如果我electron example.js在 OS X 下运行它,它会在我的停靠栏中打开一个图标并开始在控制台上打印时间。但是,如果应用程序没有集中注意力,一段时间后它就会开始节流。

我环顾四周,发现这是由于 OS X 的省电策略。现在,如果我需要它继续在后台工作怎么办?我的应用程序将成为一个守护进程,时不时地做一些事情,我不能让我的用户长时间盯着我的应用程序。

我在这里发现我可以做到

electron.powerSaveBlocker.start('prevent-app-suspension');

这实际上解决了我的问题。然而,这是非常具有侵入性的,因为据我所知,它完全阻止了系统睡眠!我不需要这么多,我只需要我的应用程序在计算机处于活动状态且在线时执行某些操作,而不会强迫它永远保持清醒。

在让我的用户将应用程序持续保持在前台和让他们的计算机永远不眠之间,中间没有任何东西吗?

4

1 回答 1

4

根据当前文档:

注意:prevent-display-sleep优先级高于 prevent-app-suspension. 只有最高优先级的类型生效。换句话说,prevent-display-sleep总是优先于 prevent-app-suspension.

例如,一个 API 调用 A 请求prevent-app-suspension,另一个调用 B 请求prevent-display-sleepprevent-display-sleep将一直使用到 B 停止其请求。之后,prevent-app-suspension被使用。

这意味着设置prevent-app-suspension为 on,仍将允许系统进入睡眠状态,并且只是按照您的意愿进行操作。但是,您可以运行该函数两次,传递两个标志,打开两个选项。但是,正如上面的文档所说,如果两者都设置为 on,那么系统将不会休眠,直到该标志被删除。

于 2016-05-20T05:37:28.583 回答