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ť.
