当屏幕超时时,setInterval在Android Browser/Mobile Safari中暂停

mja*_*gda 2 javascript mobile-safari setinterval mobile-website android-browser

我为移动webapp构建了一个简单的基于JavaScript的计时器; 为了举例:

var a = 0;
setInterval(function() {
    console.log('a', a);
    a++;
}, 1000);
Run Code Online (Sandbox Code Playgroud)

这在Mobile Safari和Android Browser中运行良好.它将每秒登录到控制台并相应地增加a的值.(好吧,Android浏览器没有console.log支持,但让我们假设它.)

问题:如果屏幕超时(即用户停止与页面交互),则setInterval函数暂停.当用户再次打开屏幕时,它会恢复.这对我不起作用,因为我需要计时器才能继续运行.

问题:有没有办法阻止setInterval函数在屏幕超时时暂停?如果没有,是否可以防止屏幕超时?还有其他选择吗?

提前致谢!

Yan*_*min 5

基本上没有.当屏幕超时时,手机进入睡眠状态以节省电池电量.由于无论如何都看不到任何东西,因此停止了大量的处理任务.更改选项卡/窗口时会发生类似的事情(页面从内存中卸载).现在无法请求设备从Web应用程序保持打开状态.Android中用于访问硬件的未来支持可能会提供此功能,但我个人对此表示怀疑.

如果您需要始终运行支持,则需要为两个系统编写本机应用程序(在Android上它总能运行).