NSTimer在睡眠模式下继续

时间:2013-11-24 16:34:26

标签: nstimer sleep

我有一个计时器应用程序,它使用NSTimer来跟踪分钟数。即使设备进入睡眠模式,如何保持定时器运行?谢谢!

2 个答案:

答案 0 :(得分:6)

唤醒通知后调整

计划的NSTimer实例将在睡眠期间暂停。您的应用程序需要响应NSWorkspace的唤醒通知并调整其计时器。

如果您没有回复唤醒通知,您的计时器将会恢复,但不会考虑睡眠时间。

请参阅Apple的技术说明QA1340 Registering and unregistering for sleep and wake notifications以获取相应的通知。

实施例

考虑这种情况:

  • 创建一个在5分钟内触发的计时器
  • 等1分钟
  • 让计算机暂停一小时
  • 唤醒电脑
  • 计时器在醒来时恢复
  • 定时器在唤醒后4分钟触发

从计时器的角度来看,已经过了五分钟。请注意NSTimer使用的语言,它使用相对持续时间而不是绝对时间scheduledTimerWithTimeInterval:invocation:repeats:

答案 1 :(得分:1)

看一下这个类,它通过“沙漏”行为处理睡眠/唤醒:https://github.com/jmah/MyLilTimer