当Electron在后台时,避免应用程序节流

当Electron在后台时,避免应用程序节流,electron,throttling,power-saving,Electron,Throttling,Power Saving,考虑以下示例: setInterval(function() { console.log(new Date()); }); 如果我在OSX下使用electron example.js运行它,它会在dockbar中打开一个图标,并开始在控制台上打印时间。但是,如果应用程序没有聚焦,过一段时间它就会开始节流 我环顾四周,发现这是由于OSX的节能策略。现在,如果我需要它来继续在后台工作呢?我的应用程序将是一个守护进程,时不时地做一些事情,我不能让我的用户长时间盯着我的应用程序发呆 我发现我能做

考虑以下示例:

setInterval(function()
{
   console.log(new Date());
});
如果我在OSX下使用
electron example.js
运行它,它会在dockbar中打开一个图标,并开始在控制台上打印时间。但是,如果应用程序没有聚焦,过一段时间它就会开始节流

我环顾四周,发现这是由于OSX的节能策略。现在,如果我需要它来继续在后台工作呢?我的应用程序将是一个守护进程,时不时地做一些事情,我不能让我的用户长时间盯着我的应用程序发呆

我发现我能做到

electron.powerSaveBlocker.start('prevent-app-suspension');
这实际上解决了我的问题。然而,这是相当侵入性的,因为据我所知,它阻止了系统的睡眠!我不需要这么多,我只需要我的应用程序在电脑处于活动状态和在线状态时做一些事情,而不需要强迫它永远保持清醒


在我的用户把应用程序保持在前台,让他们的电脑永远不眠的时候,难道没有任何东西吗?

< P>根据当前的文档:

注意:
防止显示休眠
的优先级高于
防止应用程序暂停
。只有优先级最高的类型才生效。 换句话说,
防止显示休眠
始终优先于
防止应用程序暂停

例如,调用请求以防止应用程序暂停的API,以及 另一个呼叫B请求
阻止显示睡眠
阻止显示睡眠
将一直使用,直到B停止其请求。之后 使用了
防止应用程序暂停


这意味着,将
阻止应用程序暂停
设置为on,仍将允许系统睡眠,并且只需执行您希望的操作。但是,您可以运行函数两次,传递两个标志,同时打开两个选项。然而,正如上面的文档所说,如果两者都设置为on,那么系统将不会休眠,直到该标志被移除。

我正在竭尽全力想弄清楚我的应用程序到底发生了什么。非常感谢你提出这个问题!“这意味着,将“阻止应用程序暂停”设置为“开”,仍将允许系统睡眠,并且只执行您希望的操作”