Ako spustiť JavaScript na pozadí v Phonegape na iPhone - pre časovač/stopky?


Môj skript stopiek funguje bezchybne na pozadí na Androide (počítanie času nahor), ale iOS 4.3.2 sa zdá, že skript pozastaví. Na iOS stopky zastavia v čase, kedy bola aplikácia odoslaná na pozadie.

Potrebujem bežiace stopky (čas sa vo zobrazení aktualizuje každú sekundu) a niekoľko alarmov na definovaných časových bodoch.

Kód pre stopky je nasledovný:

        this.timer = window.setInterval(function(){
            instance.runtime += Stopwatch.INCREMENT;
            instance.doDisplay();
        }, Stopwatch.INCREMENT);

Som si vedomý natívnych riešení, ale rád by som zostal pri riešení v JavaScripte kvôli kompatibilite medzi platformami.

Odpoveď č. 1

Keďže setIntervals nefungujú na pozadí, použil by som namiesto toho rekurzívny setTimeout.
To znamená, že nemôžete sledovať čas pomocou +=, takže budete musieť použiť (new Date).getTime(); alebo Date.now().

this.timer = function myTimer () {
  instance.currentTime = (new Date).getTime();
  instance.doDisplay();
  setTimeout( myTimer, Stopwatch.INCREMENT ); 
}

Ak sa setTimeout nezotaví, keď sa aplikácia spustí, malo by byť jednoduchšie ho reštartovať.