我想在6小时后启动计时器。但是由于我的计算机处于睡眠模式,因此6小时后定时器不会启动。 6个多小时后我登录计算机后2分钟,它就会被触发。即使用户处于注销或系统睡眠模式下,也可以触发计时器吗?
iCMS 回答:当计算机处于睡眠状态或用户注销时如何启动NSTimer
这是一种简单的方法。为即将发生的事件创建一个NSDate
,并设置一个计时器,用于将当前时间与该时间戳进行比较。此示例每秒运行一次。
- (void) waitFor:(CGFloat)seconds {
// Set the time to wait
NSTimeInterval timeInSeconds = seconds;
__block NSDate *wait = [[NSDate date] dateByAddingTimeInterval:timeInSeconds];
[NSTimer scheduledTimerWithTimeInterval:1.0 repeats:YES block:^(NSTimer * _Nonnull timer) {
NSDate *time = [NSDate date];
if ([time timeIntervalSinceDate:wait] > 0) {
// Do something
}
}];
}
这样,该过程将在唤醒计算机后立即运行。
编辑:较旧的线程(例如NSTimer continue during sleep mode)建议您在唤醒后需要重新安排NSTimer
的时间,但现在似乎不再如此了