2016-03-18 16 views
7

Si consideri il seguente esempio:Evitare app throttling quando Electron è in background

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

Se l'eseguo con electron example.js sotto OS X, si apre un'icona nella mia dockbar e inizia a stampare il tempo sulla console . Se l'app non è focalizzata, tuttavia, dopo un po 'inizia a rallentare.

Mi sono guardato intorno e ho scoperto che ciò è dovuto alla strategia di risparmio energetico OS X. Ora, e se ne avessi avuto bisogno per continuare a lavorare in background? La mia app sarà un demone che fa un po 'di qualcosa ogni tanto, e non posso permettere ai miei utenti di fissare a lungo la mia app per anni.

ho scoperto here che posso fare

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

che in realtà consente di risolvere il mio problema. Questo, tuttavia, è abbastanza invasivo, dal momento che, per quanto ne so, impedisce al sistema di dormire per niente! Non ho bisogno di così tanto, vorrei solo che la mia app faccia qualcosa quando il computer è attivo e online senza costringerlo a rimanere sveglio per sempre.

Non c'è niente nel mezzo, tra il fatto che i miei utenti mantengano l'app continuamente in primo piano e rendano il loro computer insonne per sempre?

+1

Mi stavo strappando i capelli cercando di capire cosa stava succedendo con la mia app. Grazie mille per questa domanda! –

risposta

3

Come per la documentazione attuale:

Nota: prevent-display-sleep ha elevato la precedenza su prevent-app-suspension. Solo il tipo di precedenza più alta ha effetto. In altre parole, prevent-display-sleep ha sempre la precedenza su prevent-app-suspension.

Ad esempio, un'API che chiama A richieste per prevent-app-suspension e un'altra chiamata B richieste per prevent-display-sleep. prevent-display-sleep verrà utilizzato fino a quando B interrompe la richiesta. Dopo viene utilizzato, prevent-app-suspension.

Ciò significa che l'impostazione prevent-app-suspension su on, consente comunque al sistema di sospendere e fa semplicemente ciò che si desidera. È tuttavia possibile eseguire la funzione due volte, passando entrambi i flag, attivando entrambe le opzioni. Tuttavia, come dicono i documenti sopra, se entrambi sono impostati su on, il sistema non dormirà fino a quando quel flag non sarà stato rimosso.

+0

"Ciò significa che l'impostazione prevent-app-suspension su on, permetterà comunque al sistema di dormire, e fa semplicemente ciò che desideri" <=== Sei sicuro di ciò? La documentazione apparentemente afferma che entrambe le bandiere impediranno al sistema stesso di dormire, visualizzare da parte. https://github.com/electron/electron/blob/master/docs/api/power-save-blocker.md –

Problemi correlati