是否有一个替代的设置UIApplication idleTimerDisabled为iOS 6.1简单地表示用户已经主动



我有一个应用程序,如果它有前台,可能会从硬件附件接收定期更新。那个硬件配件上有一个物理硬件按钮。用户认为这是"与设备的交互"(在这种情况下是iPhone或iPad触摸),我希望这些硬件按钮按下重置ui应用程序内的计数器或计时器机制,这样当用户正在积极使用应用程序时,它就不会立即进入睡眠状态。

我该怎么做?目前,我只能完全禁用计时器,然后从一些内部辅助计时器重新启用它。所有这些计时器对计时器的东西看起来都很愚蠢。

我正在寻找一个方法,如[UIApplication userDidSomethingSoPleaseDontGoToSleepYouSillyThing];

现在,如果我的应用程序禁用了空闲计时器,然后忘记重新启用它,用户的设备就会耗尽电池并关闭。这对电池寿命测试很有用,但可能会让最终用户感到不安。我宁愿不碰这个idleTimerDisabled,而只是告诉应用程序保持清醒至少一段时间,然后如果用户再次按下按钮,告诉UIApplication再次重置其内部计时器。

也许我没理解你…但

/* Block idleTimer */
application.idleTimerDisabled = YES;
/* DO ALL YOUR STUFF */
/* AND IF SOMETHING APPEN */
/* Restore idleTimer */
application.idleTimerDisabled = NO;

可以尝试以下方法重置空闲计时器:

[UIApplication sharedApplication].idleTimerDisabled = YES;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  [UIApplication sharedApplication].idleTimerDisabled = NO;
});

0.5表示0.5秒。请注意,我自己并没有尝试这段代码。我不确定是否有(m)任何条件下,gcd块不会执行

最新更新