Как запустить фоновый JavaScript в Phonegap на iPhone - для таймера / секундомера? - PullRequest
6 голосов
/ 05 мая 2011

Мой скрипт секундомера безупречно работает в фоновом режиме на Android (считая время), но iOS 4.3.2, кажется, останавливает скрипт.На iOS секундомер останавливается в то время, когда приложение отправляется в фоновый режим.

Мне нужен бегущий секундомер (время отображается обновленным каждую секунду в представлении) и некоторые аварийные сообщения в определенные моменты времени.

Код для секундомера следующий:

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

Я знаю о нативных решениях, но хотел бы придерживаться решения JavaScript для кросс-платформенной совместимости.

1 Ответ

6 голосов
/ 05 мая 2011

Поскольку setIntervals не работают в фоновом режиме, я бы вместо этого использовал рекурсивный setTimeout.
Это означает, что вы не можете отслеживать время с помощью + =, поэтому вам нужно использовать (новую дату) .getTime (); или Date.now () вместо.

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

Если setTimeout не возвращается к жизни, когда приложение делает это, должно быть проще перезапустить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...