当Electron处于背景中时,避免使用app限制

Mat*_*nti 7 throttling power-saving electron

请考虑以下示例:

setInterval(function()
{
   console.log(new Date());
});
Run Code Online (Sandbox Code Playgroud)

如果我electron example.js在OS X下运行它,它会在我的停靠栏中打开一个图标并开始在控制台上打印出时间.但是,如果应用程序没有聚焦,一段时间后它会开始限制.

我环顾四周,发现这是由于OS X节电策略造成的.现在,如果我需要它继续在后台工作怎么办?我的应用程序将是一个守护进程,偶尔做一些事情,我不能让我的用户茫然地盯着我的应用程序多年.

我在这里发现我可以做到

electron.powerSaveBlocker.start('prevent-app-suspension');
Run Code Online (Sandbox Code Playgroud)

这实际上解决了我的问题.然而,这是非常具有侵略性的,因为就我的理解而言,它可以防止系统完全沉睡!我不需要这么多,我只需要我的应用程序在计算机处于活动状态和在线状态时执行某些操作而不会强制它永远保持清醒状态.

让我的用户不断地将应用程序保持在前台,让他们的计算机永远失眠之间,中间是不是有什么东西?

Mat*_*Way 4

根据当前文档:

注意:prevent-display-sleep具有比 更高的优先级 prevent-app-suspension。仅最高优先级类型生效。换句话说,prevent-display-sleep始终优先于 prevent-app-suspension

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

这意味着,设置prevent-app-suspension为打开后,仍将允许系统休眠,并且仅执行您希望的操作。但是,您可以运行该函数两次,传递两个标志,打开两个选项。然而,正如上面的文档所说,如果两者都设置为打开,那么系统将不会休眠,直到该标志被删除。