iOS UIWebView Javascript计时器

Ste*_*eve 7 iphone uiwebview ios ios7 ios8

如果加载到的页面UIWebView包含Javascript setInterval()调用,那么当手机进入睡眠状态时该计时器的行为是什么?

所有计时器停止时有没有时间点?

当手机被唤醒时,定时器会重启吗?如果是这样,计时器是从它暂停的地方开始,还是从0开始?

Leo*_*ica 9

WebKit内部计时器管理有点奇怪,特别是在iOS中.它们以NSDefaultRunLoopMode模式注册,因此,例如,在UI中滚动时,Javascript事件不会触发,但它们也不会聚合,就像常规计时器(NSTimer)一样.

要回答您的问题,当应用程序进程暂停时,计时器也会暂停,因此在进程暂停时它们不会触发.一旦该过程因任何原因(用户打开应用程序,后台获取等)而恢复,计时器将恢复运行,并将恢复到最后一次打勾的相对点.

因此,如果您每隔10秒设置一个计时器,并在t + 1秒关闭应用程序,然后在t + 35秒再次打开它,计时器将在5秒后启动; 你不会追溯到t + 10,t + 20和t + 30秒的嘀嗒声.

注意:这是UIWebView/ WebKitLegacy /的基于进程内模型的计时器管理; 我对WKWebView/ WebKit2/如何处理它们并不十分熟悉.