2011-02-09 12 views
13

关于iPad事件,如何确定iPad何时/何时从清醒状态变为待机状态?使用Javascript在iPad上处理待机状态

我想要做的就是当iPad变为不活动/待机状态时,将我的Mobile-Safari Web应用程序置于锁定状态,并在再次唤醒时询问PIN。

回答

31

我同意真的应该有一些信号可以帮助您了解应用程序何时进入休眠状态以及何时醒来,但您应该能够确定Safari何时间接唤醒。

当webview进入后台时,Safari将其中的所有内容都置于睡眠状态。它暂停任何视频,延迟网络请求,停止更新UI并暂停所有setInterval/setTimeout操作。 JS本身永远不会意识到(据我所知)这些事情是如何发生的,但它可以说明它已经发生。使用这种方法最简单的方法是构建一个定期调用的方法,并检查自上次更新以来是否出现意外的长时间。如果您希望每10秒钟更新一次,并且已经过了五分钟,则可以确信设备已被唤醒。下面是一个简单的例子,我想起来:

var intTime = new Date().getTime(); 
    var getTime = function() { 
     var intNow = new Date().getTime(); 
     if (intNow - intTime > 1000) { 
      console.log("I JUST WOKE UP") 
     } 
     intTime = intNow; 
     setTimeout(getTime,500); 
    }; 
    getTime(); 

当用户已经从另一个选项卡返回这将检测,驳回开发者控制台,或从后台带回来的Safari浏览器。我已经设定了半秒的时间间隔;您可以将其设置为任何您需要的值,但我认为非常低的值会产生并发问题,并可能会不必要地在设备上烧毁电池。

1

Mobile Safari无法访问此级别的硬件状态。我认为最多的是加速器。

+0

感谢丹尼尔,我刚刚发现这个链接也与此相关的http://stackoverflow.com/questions/4401764/what-event-fires- when-a-webkit-webapp-is-terminated – rcarrier 2011-02-09 02:34:31

+0

我只是无法想象,发送应用程序(包括Mobile Safari)很难接收到“即时终止警告”信号,您可以听取并据此进行规划。我的意思是iOS可能具有这种硬件状态信息本身......“简单地说”把它推到应用层*应该是可行的? – rcarrier 2011-02-09 02:48:29

0

为我工作的一个可能的解决方案是使用

$(window).on('blur', function(){}); 
相关问题