Остановка фоновой активности javascript при пробуждении по центральному iOS, инициированному по местоположению
Я использую плагин Cordova Gimbal для мониторинга маяков Bluetooth в фоновом режиме. iOS запускает приложение в фоновом режиме и отправляет события наблюдения маяка Bluetooth; Gimbal SDK обрабатывает их и вызывает в плагине функцию обработчика objc. Я удалил любой код, который запускает события в объекте окна, чтобы предотвратить запуск любого javascript в 10-секундном окне выполнения.
Тем не менее, JavaScript в любом случае выполняется на этих фоновых событиях: мое приложение использует Angular, и дорого $digest
циклы продолжаются в фоновом режиме. $interval
(обертка для setInterval()
) тоже работает. Кажется, что пока приложение работает в 10-секундном окне, оно просто продолжает запускать движок javascript, как если бы он был на переднем плане. Это существенно влияет на использование батареи для приложения. Как я могу заставить цикл событий Cordova просто прекратить выполнение, когда он завершил обработку обнаружения маяка?
версии: cordova 6.5.0 cordova-ios 4.3.1
1 ответ
Я обнаружил, что движок javascript не работает подобным образом, если мы переключимся на использование WKWebView. Таким образом, добавление этого плагина (и устранение последствий от коммутатора) устранило проблему.