How to run a background JavaScript in Phonegap on iPhone – for timer/stopwatch?

My stopwatch script runs flawlessly in the background on Android (counting up the time), but iOS 4.3.2 seems to pause the script. On iOS the stopwatch stops at the time where the application was sent to background.

I need a runnning stopwatch (the time appears updated each second in the view) and some alarm messages in defined points in time.

  • Add iOS speech recognition support for web app?
  • Detect iOS version less than 5 with JavaScript
  • How to prevent reloading of web page from cache while using mobile safari browser?
  • iPhone AVPlayer Streaming from Remote URL in PhoneGap
  • Storing 'long' type in firebase
  • How can I open an external link in Safari not the app's UIWebView?
  • The code for the stopwatch is as below:

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

    I’m aware of native solutions, but would like to stick with a JavaScript solution for the sake of cross-platform compatibility.

    Solutions Collect From Internet About “How to run a background JavaScript in Phonegap on iPhone – for timer/stopwatch?”

    Since setIntervals don’t work in the background I’d use a recursive setTimeout instead.
    Which means you can’t keep track of time with a +=, so you’ll need to use a (new Date).getTime(); or Date.now() instead.

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

    If the setTimeout doesn’t come back to life when the app does it should be simpler to restart.