【发布时间】:2018-10-31 20:34:07
【问题描述】:
开发人员,
我正在设计一个Timer,它应该能够在屏幕旋转的情况下保持时间,但是我注意到以下代码的一个非常奇怪的行为:
function startTimer() {
var setTime = setInterval(function () {
console.log('increasing');
if (isPaused)
clearInterval(setTime);
else {
counter++;
setLocalStorage("counter", counter + 1);
}
}, 1000);
}
function setLocalStorage(key, val) {
if (getLocalStorageValue(key) !== null)
removeLocalStorage(key);
localStorage.setItem(key, val);
}
function getLocalStorageValue(key) {
return localStorage.getItem(key);
}
function removeLocalStorage(key) {
localStorage.removeItem(key);
}
我发现旋转屏幕后,计数器仍在不断增加,并且控制台中甚至没有打印console.log。我想 setInterval 在某处继续并行运行,我找不到停止它的方法,因为我可以将 isPaused 的变量更改为 true,但计数器仍在没有正当理由的情况下继续运行,它会停止直到应用程序已完全关闭。有没有人经历过类似的事情?
另外,从 Android 方面来看,我每次 HTML 页面都会完全重新加载,那么它不应该保留任何内容,或者您知道每次完全重新加载浏览器的任何方法吗?
另外,我在 Android 中添加了这段代码,但没有任何反应:
@Override
protected void onDestroy() {
super.onDestroy();
WebView.pauseTimers();
}
感谢您的建议或支持。
【问题讨论】:
-
似乎缺少代码的重要部分.... startTime 是否被多次调用?
-
另外setInterval也不准确...
-
嗨@epascarello,不,只有当我点击播放时才会多次调用它。
-
你上面的 setInterval 代码是错误的......所以很难看代码。
-
@epascarello,我添加了缺失的部分。
标签: javascript android timer setinterval screen-rotation