Приложение PhoneGap Accelerometer для Android отстает как сумасшедший, что не так с моим кодом? - PullRequest
2 голосов
/ 18 февраля 2012

Я использую пример приложения, скомпилированного PhoneGap и развернутого на Android.Значительно отстает - мое время обновления установлено на 100 мс, и все же вы можете почувствовать, что показания ускорения обновляются каждые 1-2 секунды довольно «скачкообразно».Телефон представляет собой одноядерный телефон HTC под управлением ОС Android 2.xx.(не имею больше информации - сейчас нет телефона).

Пример ускорения

<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
<script type="text/javascript" charset="utf-8">

var watchID = null;

// Wait for PhoneGap to load
document.addEventListener("deviceready", onDeviceReady, false);

// PhoneGap is ready, start watching
function onDeviceReady() {
    startWatch();
}

// Start watching the acceleration
function startWatch() {
    // Update acceleration every 3 seconds
    var options = { frequency: 100};

    watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, 
         options);
}

// Stop watching the acceleration
function stopWatch() {
    if (watchID) {
        navigator.accelerometer.clearWatch(watchID);
        watchID = null;
    }
}

// onSuccess: Get a snapshot of the current acceleration
function onSuccess(acceleration) {
    var element = document.getElementById('accelerometer');
    element.innerHTML = 'Acceleration X: ' + acceleration.x + '<br />' +
                        'Acceleration Y: ' + acceleration.y + '<br />' +
                        'Acceleration Z: ' + acceleration.z + '<br />' + 
                        'Timestamp: '      + acceleration.timestamp + '<br />';
}

// onError: Failed to get the acceleration
//
function onError() {
    alert('oooops!');
}

</script>

Ожидание акселерометра ... Остановить просмотр

Ответы [ 2 ]

1 голос
/ 18 февраля 2012

Я не знаю, может ли это помочь, но кажется, что innerHTML меняется только со значением вместо целого string, чтобы повысить производительность.

Проверьте этот jsperf: http://jsperf.com/innerhtml-perf

1 голос
/ 18 февраля 2012

Вы тестируете на устройстве или на симуляторе?

У симулятора всегда было отставание для меня на osx.

Вы можете попытаться выделить больше памяти для симулятора, илиищите более эффективный способ кодирования вашего приложения.

...