移动浏览器上的Angular 2应用程序(睡眠检测)

时间:2017-08-29 12:03:35

标签: javascript android angular

手机将浏览器置于睡眠状态并保持较长时间后,唤醒后会显示错误数据,否则会完全更新页面上的所有数据。有没有办法检测唤醒事件以及在这种情况下重新加载页面/组件的最佳Angular方式是什么?

2 个答案:

答案 0 :(得分:1)

实现此目的的一种简单方法是运行计时器来检测浏览器是否处于睡眠状态。

使用RxJS timeinterval运算符,

http://reactivex.io/documentation/operators/timeinterval.html

Rx.Observable.timer(0, 1000).timeInterval().subscribe(timer => {
    if (timer.interval > (1000 + SLEEP_THRESHOLD)) {
        console.log ('wake-up from sleep detected');
    }
});

其他简单的方法可能是,

var now = new Date().getTime();
setInterval (function () {
    if ((new Date().getTime() - now) > SLEEP_THRESHOLD) {
        console.log ('wake-up from sleep detected');
    }
    now = new Date().getTime();
}, 1000);

答案 1 :(得分:0)

您只需调用JS函数

即可重新加载应用程序
location.reload()

或者如果你想要更多Angular风格的方法,你可以尝试打电话给你 路线再次

this.router.navigate(["myRoute"]);

关于在移动浏览器上的睡眠问题,您可以查看NoSleep.js它可能符合您的目的。