10

次の例を検討してください。

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

OS X で実行するとelectron example.js、ドックバーにアイコンが開き、コンソールに時刻が表示されます。ただし、アプリがフォーカスされていない場合は、しばらくするとスロットリングが始まります。

周りを見回したところ、これは 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-sleepます。 prevent-display-sleepB がリクエストを停止するまで使用されます。その後、prevent-app-suspension使用されます。

これが意味することは、オンに設定prevent-app-suspensionしても、システムはスリープ状態のままで、単純に希望どおりに動作するということです。ただし、関数を 2 回実行して、両方のフラグを渡し、両方のオプションをオンにすることができます。ただし、上記のドキュメントにあるように、両方がオンに設定されている場合、そのフラグが削除されるまでシステムはスリープしません。

于 2016-05-20T05:37:28.583 に答える