我使用window.setInterval实现了一个简单的倒计时器。在我的桌面浏览器中它完美地运行,但在我的智能手机(Fairphone 2)的PhoneGap/Cordova应用程序中它不能正确工作。根据我的调查和网络研究,当手机进入睡眠/待机状态时,间隔/超时会被打断,这就是为什么它不能工作的原因。
令人惊讶的是,当我的手机通过USB电缆连接到电脑时,间隔/超时并没有被打断。所以很可能是一种节能功能导致了这种不良行为。
那么,我迷失了。我不知道如何实现我的简单倒计时器,当然它也应该在手机睡眠时(显示关闭)工作。是否有window.setInterval() / window.setTimeout() 的替代方法?
以下是我的简单代码(同样不起作用:window.setTimeout):
令人惊讶的是,当我的手机通过USB电缆连接到电脑时,间隔/超时并没有被打断。所以很可能是一种节能功能导致了这种不良行为。
那么,我迷失了。我不知道如何实现我的简单倒计时器,当然它也应该在手机睡眠时(显示关闭)工作。是否有window.setInterval() / window.setTimeout() 的替代方法?
以下是我的简单代码(同样不起作用:window.setTimeout):
...
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/libs/jquery.js"></script>
<script>
var min = 25;
$(document).ready(function(){
intervalID = window.setInterval(function () {
--min;
if (min > 0) {
$("#countdown").text(min);
}
}, 6000);
});
</script>
...
<p id="countdown">0m</p>
setInterval
和setTimeout
只保证最小延迟。浏览器可以将其所有延迟都推迟,正如您所想的那样:“所以可能是一种节能功能导致了不良行为。”与其递减计数器,您需要知道开始时间并将当前时间与其进行比较。 - James Thorpe