如何在电脑睡眠或用户注销时启动NSTimer。

问题描述 投票:-1回答:1

我想在6小时后启动定时器。但是由于我的电脑处于睡眠模式,所以6小时后没有启动定时器。我在6小时后登录电脑2分钟后才启动定时器。是否可以在用户处于注销或系统睡眠模式下也能启动定时器?

objective-c macos cocoa nstimer
1个回答
0
投票

这是一个简单的方法。创建一个 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 醒来后,但似乎不再是这样了。

© www.soinside.com 2019 - 2024. All rights reserved.