当计算机处于睡眠状态或用户注销时如何启动NSTimer

我想在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的时间,但现在似乎不再如此了

本文链接:https://www.f2er.com/2221909.html

大家都在问