屏幕休眠时的JavaScript setInterval延迟

时间:2014-10-06 14:48:00

标签: javascript mobile setinterval tizen

我正在Tizen开发一个计时器应用程序,我目前正在使用 setInterval 函数来安排下次带有数字的文本将被更新:

   chrono : function() {
       SecondsChrono += 1;
   },
   setInterval(chrono(), 1000);

但是当设备的屏幕进入“睡眠模式”时,计时器会延迟。 我想知道是否有人经历过这个,如果你有办法避免它,或者你有任何建议我以另一种方式实现这个天文台。

1 个答案:

答案 0 :(得分:1)

你应该只使用setInterval来更新屏幕,看看自计时器首次启动以来已经过了多少时间你应该这样做:

var SCREEN_UPDATE_REFRESH_RATE= 1000;
var startTime= (new Date()).getTime();
var updateScreen= function() {
    var currentTime= (new Date()).getTime();
    var timeEllapsed = currentTime - startTime; //this value is in milliseconds
    document.write("Ellapesed time in seconds: " timeEllapsed / 1000);
    setTimeout(updateScreen, SCREEN_UPDATE_REFRESH_RATE);
}
updateScreen();

在这种情况下,最好使用setTimeout而不是setInterval。两者之间的区别在于setInterval调度函数每隔X毫秒执行一次,而setTimeout调度执行一次然后再也不会,在这种情况下,函数设置一个新的超时保持更新过程永远。如果您的用户系统过载,可以将各种setInterval回调链接在一起,这可以冻结用户浏览器。有关详细信息,请参阅this