如何检测我的表盘何时出现在前台?
How do I detect when my watchface comes to the foreground?
当我的表盘(基于 Web)进入后台时,用于保持时间更新的计时器暂停。
当你回来时,这会导致滞后效应。让用户看到过时的时间几秒钟。
我的理想解决方案,为了不搞砸更多的事情,也不必将一堆动画调整为 0.1 秒计时器或以下内容:
- 检测表盘何时回到前台
- 然后重新设置时间和间隔
当然,要使它起作用,第一步当然是检测我的表盘何时回到前台,但我完全一无所知,而且我还没有真正发现太多。再说我的网络真的很差,在我的手表上测试是个问题,所以我只需要知道已经证明了什么。
如何检测我的表盘何时回到前台?
提前致谢
你可以试试这个方法。
var timer=0;
var visible_time=0;
var timer1 = 0;
var PERIOD_VISIBLE = 1000;
var PERIOD_NOT_VISIBLE = 2000;
var hidden, visibilityChange;
window.onload = function() {
document.addEventListener('tizenhwkey', function(e) {
if (e.keyName === "back") {
try {
tizen.application.getCurrentApplication().exit();
} catch (ignore) {}
}
});
var mainPage = document.querySelector('#main');
// Sample code
console.log("Foreground");
if (typeof document.hidden !== "undefined") {
hidden = "hidden";
visibilityChange = "visibilitychange";
} else if (typeof document.webkitHidden !== "undefined") {
hidden = "webkitHidden";
visibilityChange = "webkitvisibilitychange";
}
function handleVisibilityChange(){
if (document[hidden]){
console.log("Background");
console.log("Page was visible for : "+visible_time+" seconds");
visible_time = 0;
timer = new Date().getTime();
} else {
console.log("Foreground");
console.log('You were away for ' + (new Date().getTime()-timer)/1000+ ' seconds.');
}
}
document.addEventListener(visibilityChange, handleVisibilityChange, false);
timer1 = setInterval(checkVisibility, (document.hidden) ? PERIOD_NOT_VISIBLE : PERIOD_VISIBLE);
document.addEventListener("webkitvisibilitychange", visibilityChanged, false);
function visibilityChanged() {
clearInterval(timer1);
timer1 = setInterval(checkVisibility, (document.hidden) ? PERIOD_NOT_VISIBLE : PERIOD_VISIBLE);
}
function checkVisibility() {
/*$('#timer').empty();*/
visible_time++;
/*$('#timer').append("<center>Page is visible for : "+visible_time+" seconds</center>");*/
}
mainPage.addEventListener("click", function() {
var contentText = document.querySelector('#content-text');
contentText.innerHTML = (contentText.innerHTML === "Basic") ? "Tizen" : "Basic";
});
};
谢谢。
当我的表盘(基于 Web)进入后台时,用于保持时间更新的计时器暂停。 当你回来时,这会导致滞后效应。让用户看到过时的时间几秒钟。
我的理想解决方案,为了不搞砸更多的事情,也不必将一堆动画调整为 0.1 秒计时器或以下内容:
- 检测表盘何时回到前台
- 然后重新设置时间和间隔
当然,要使它起作用,第一步当然是检测我的表盘何时回到前台,但我完全一无所知,而且我还没有真正发现太多。再说我的网络真的很差,在我的手表上测试是个问题,所以我只需要知道已经证明了什么。
如何检测我的表盘何时回到前台?
提前致谢
你可以试试这个方法。
var timer=0;
var visible_time=0;
var timer1 = 0;
var PERIOD_VISIBLE = 1000;
var PERIOD_NOT_VISIBLE = 2000;
var hidden, visibilityChange;
window.onload = function() {
document.addEventListener('tizenhwkey', function(e) {
if (e.keyName === "back") {
try {
tizen.application.getCurrentApplication().exit();
} catch (ignore) {}
}
});
var mainPage = document.querySelector('#main');
// Sample code
console.log("Foreground");
if (typeof document.hidden !== "undefined") {
hidden = "hidden";
visibilityChange = "visibilitychange";
} else if (typeof document.webkitHidden !== "undefined") {
hidden = "webkitHidden";
visibilityChange = "webkitvisibilitychange";
}
function handleVisibilityChange(){
if (document[hidden]){
console.log("Background");
console.log("Page was visible for : "+visible_time+" seconds");
visible_time = 0;
timer = new Date().getTime();
} else {
console.log("Foreground");
console.log('You were away for ' + (new Date().getTime()-timer)/1000+ ' seconds.');
}
}
document.addEventListener(visibilityChange, handleVisibilityChange, false);
timer1 = setInterval(checkVisibility, (document.hidden) ? PERIOD_NOT_VISIBLE : PERIOD_VISIBLE);
document.addEventListener("webkitvisibilitychange", visibilityChanged, false);
function visibilityChanged() {
clearInterval(timer1);
timer1 = setInterval(checkVisibility, (document.hidden) ? PERIOD_NOT_VISIBLE : PERIOD_VISIBLE);
}
function checkVisibility() {
/*$('#timer').empty();*/
visible_time++;
/*$('#timer').append("<center>Page is visible for : "+visible_time+" seconds</center>");*/
}
mainPage.addEventListener("click", function() {
var contentText = document.querySelector('#content-text');
contentText.innerHTML = (contentText.innerHTML === "Basic") ? "Tizen" : "Basic";
});
};
谢谢。