【问题标题】:Avoid app throttling when Electron is in background当 Electron 在后台时避免应用程序限制
【发布时间】:2016-07-05 14:35:44
【问题描述】:

考虑以下示例:

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

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

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

我发现here我可以做到

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

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

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

【问题讨论】:

  • 我正忙着想弄清楚我的应用程序发生了什么。非常感谢您提出这个问题!

标签: electron throttling power-saving


【解决方案1】:

根据当前文档:

注意: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,那么系统将不会休眠,直到该标志被删除。

【讨论】:

  • “这意味着将 prevent-app-suspension 设置为 on,仍将允许系统休眠,并且只是按照您的意愿进行操作” github.com/electron/electron/blob/master/docs/api/…
猜你喜欢
  • 2013-09-09
  • 1970-01-01
  • 2018-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-04
相关资源
最近更新 更多