PhoneGap navigator.compass.getCurrentHeading вызывается несколько раз на iPhone - PullRequest
1 голос
/ 23 августа 2011

Я был бы признателен за любую помощь в решении этой проблемы - или, по крайней мере, где искать решение этой проблемы.

То, что у меня есть, вызывает на iPhone navigator.compass.getCurrentHeading (succ, fail) , функция успеха вызывается каждый раз, когда устройство перемещается даже незначительно.В журнале отладки XCode я вижу множество записей navigator.compass.setHeading вызовов, генерируемых для каждого движения.Если я попытаюсь снова опросить данные заголовка - запрос просто зависнет.Вот код:

function onBodyLoad() {
    if (typeof navigator.device == "undefined") {
        document.addEventListener("deviceready", onDeviceReady, false);
    } else {
        onDeviceReady();
    }
}

function succ(heading) {
    alert("compass " + heading);
}

function fail() {
    alert('fail');
}

function onDeviceReady() {
    navigator.compass.getCurrentHeading(succ, fail);
}

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

Я используюPhoneGap 1.0.0.Тот же код на Android работает отлично.Я удалил весь пользовательский код JS, чтобы предотвратить возможность конфликтов.

1 Ответ

1 голос
/ 15 сентября 2011

Странно, что никто другой, кажется, не сталкивался с этим. В любом случае это (хакерское) решение может помочь любому, кто придет в поисках ответа.

Нам пришлось прекратить использовать getCurrentHeading из-за этой проблемы и заменить его на navigator.compass.watchHeading. При очистке часов мы также вызываем функцию navigator.compass.stop () для предотвращения дальнейшего спама по компасу (только для платформы iPhone - с Android хорошо), и перед повторным вызовом watchHeading мы вызываем navigator.compass.stop () и navigator.compass .start (), для повторной инициализации компаса «на всякий случай» (опять же, только на iPhone).

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

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