Избегайте удушения приложений, когда Electron находится в фоновом режиме

Рассмотрим следующий пример:

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

Если я запускаю его с electron example.js в OS X, он открывает значок в моей док-панели и начинает печатать время на приставка. Однако если приложение не сфокусировано, через некоторое время оно начинает регулироваться.

Я оглянулся и обнаружил, что это связано со стратегией энергосбережения OS X. А что если мне нужно, чтобы он продолжал работать в фоновом режиме? Мое приложение будет время от времени делать что-то, и я не могу, чтобы мои пользователи целыми веками смотрели на мое приложение.

Я узнал здесь , что могу сделать

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

Что на самом деле решает мою проблему. Это, однако, довольно агрессивно, поскольку, насколько я понимаю, это вообще не дает системе спать! Мне это не нужно, мне просто нужно, чтобы мое приложение делало что-то, когда компьютер активен и подключен к сети, не заставляя его бодрствовать вечно.

Есть ли что-то посередине между тем, чтобы мои пользователи постоянно держали приложение на переднем плане, и навсегда оставляли их компьютер бессонным?

7 голосов | спросил Matteo Monti 18 MarpmFri, 18 Mar 2016 20:53:18 +03002016-03-18T20:53:18+03:0008 2016, 20:53:18

1 ответ


0

Согласно текущим документам:

  

Примечание: prevent-display-sleep имеет более высокий приоритет над   prevent-app-suspension. Только самый высокий тип приоритета вступает в силу.   Другими словами, prevent-display-sleep всегда имеет приоритет над   prevent-app-suspension

     

Например, API, вызывающий A, запрашивает prevent-app-suspension и   другой вызывающий B запрашивает prevent-display-sleep.   prevent-display-sleep будет использоваться до тех пор, пока B не остановит свой запрос. После   что prevent-app-suspension используется.

Это означает, что если для параметра prevent-app-suspension установлено значение «включено», система все еще будет находиться в спящем режиме и просто сделает то, что вы хотите , Однако вы можете запустить функцию дважды, пройдя оба флага, включив обе опции. Однако, как сказано в документации выше, если оба параметра включены, то система не будет находиться в спящем режиме, пока этот флаг не будет удален.

ответил Matt Way 20 Mayam16 2016, 08:37:28

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132