У меня есть веб-приложение jQuery Mobile, которое предназначено для устройств iOS и Android. Компонент приложения - это фоновая задача, которая периодически проверяет наличие.) Изменений в локальных данных и b) подключение к серверу. Если оба значения истинны, задача меняет изменения.
Я использую простую функцию setTimeout() для выполнения этой задачи. Каждое условие отказа или успеха вызывает setTimeout() в фоновом задании, гарантируя, что он работает с интервалом в 30 секунд. Я обновляю div состояния с отметкой времени последней задачи выполнения задачи для отладки.
В любом настольном браузере это работает отлично; однако на iOS или Android после определенного периода времени задача перестает выполняться. Мне интересно, связано ли это с настройками энергосбережения устройств - когда iOS входит в режим ожидания, завершает ли он выполнение JavaScript? Вот что происходит.
Если да, то каков наилучший способ возобновления? Есть ли событие, на которое я могу подключиться? Если нет, то какие существуют другие опции, которые не связаны с подключением к событиям, зависящим от взаимодействия с пользователем (я не хочу привязывать всю страницу к событию клика только для перезапуска фоновой задачи).