JavaScript останавливается в неактивной вкладке Android Chrome

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

пока вкладка активна, все работает нормально. Но после того, как вкладка неактивна, тайм-ауты продолжают работать в течение нескольких минут, а затем, как только текущая воспроизводимая песня заканчивается, следующая песня Не загружается или не воспроизводится.

Я предполагаю, что это связано с приостановкой Chrome Выполнение JavaScript для неактивной вкладки, но я не хочу, чтобы мой экран оставался все время, когда я играю музыку.

Я отладил код с помощью мобильного отладчика Chrome, установив тайм-аут для запуска каждые 500 мс, который просто показывает текущую дату. Как только экран становится черным, тайм-аут падает до одного раза в 1000 мс, что ожидается, но через несколько минут тайм-аут останавливается полностью. Но как только вкладка активна снова, все приостановленные таймауты активируются и бежать.

Chrome изменение setInterval / setTimeout на 1000 мс ожидается и учитывается, но приостановка выполнения полностью останавливает работу всей моей страницы.

Я пытался держать вкладку активной, чтобы запускать AJAX-запросы так часто, но они также приостанавливаются. Ничего я пытался держит в JavaScript работает.

в принципе, есть способ обойти это? Есть ли способ сохранить вкладку активной, когда экран выключен?

1 ответов


нет. По соображениям производительности и срока службы батареи мы останавливаем всю обработку на вкладках, которые в настоящее время не активны. Устройства, на которых работают эти страницы, очень ограничены по сравнению с настольным устройством, и мы должны уважать пользователя.

У нас есть возможность сохранить музыку и аудио в фоновом режиме (когда ваш экран выключен), но вы не можете перейти к следующему треку, как вам нужно.