Что происходит с выполнением JavaScript (settimeout и т. Д.), Когда iPhone / Android переходит в спящий режим?

У меня есть веб-приложение jQuery Mobile, предназначенное для устройств iOS и Android. Компонент приложения - это фоновая задача, которая периодически проверяет а.) Изменения в локальных данных и б.) Возможность подключения к серверу. Если оба верны, задача подталкивает изменения.

Я использую простую функцию на основе setTimeout () для выполнения этой задачи. Каждое условие сбоя или успеха вызывает setTimeout () для фоновой задачи, обеспечивая ее выполнение с 30-секундными интервалами. Я обновляю статусный div с помощью отметки времени последней среды выполнения задачи для целей отладки.

В любом настольном браузере это прекрасно работает; однако на iOS или Android через некоторое время задача перестает выполняться. Мне интересно, связано ли это с настройками энергосбережения устройств - когда iOS переходит в режим ожидания, прекращает ли выполнение JavaScript? Похоже, именно это и происходит.

Если да, то как лучше всего продолжить? Есть ли какое-то событие после пробуждения, к которому я могу подключиться? Если нет, то какие есть другие варианты, которые не включают привязку к событиям, зависящим от взаимодействия с пользователем (я не хочу привязывать всю страницу к событию щелчка только для перезапуска фоновой задачи).

37
задан Christopher 1 July 2011 в 03:36
поделиться