我想在6小时后启动定时器。但是由于我的电脑处于睡眠模式,所以6小时后没有启动定时器。我在6小时后登录电脑2分钟后才启动定时器。是否可以在用户处于注销或系统睡眠模式下也能启动定时器?
这是一个简单的方法。创建一个 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
}
}];
}
这样一来,在唤醒电脑后,这个过程会立即运行。
EDIT: 旧的线程(如 NSTimer在睡眠模式下继续)建议你需要重新安排时间。NSTimer
醒来后,但似乎不再是这样了。