我完全理解它们是否是,但我正在寻找的是一个计时器,它在应用程序进入后台时暂停并在用户返回应用程序后取消暂停。我不需要后台任务;我只是想确保在应用程序内大约 x 分钟后,无论是今天还是明天,都会发生某个动作。
谢谢!布雷特
我完全理解它们是否是,但我正在寻找的是一个计时器,它在应用程序进入后台时暂停并在用户返回应用程序后取消暂停。我不需要后台任务;我只是想确保在应用程序内大约 x 分钟后,无论是今天还是明天,都会发生某个动作。
谢谢!布雷特
后台应用程序(假设您没有后台任务)不会“暂停”计时器。理论上它仍然在倒计时,所以如果重新打开应用程序,如果经过足够的时间,它将触发。这也适用于 NSTimer。(如果您想了解有关原因的更多详细信息,请告诉我,我将编辑答案)。
考虑使用以下代码:
@implementation MyCustomClass {
int elapsedTime;
NSTimer *timer;
}
- (id) init {
if ( ( self = [super init] ) ) {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationEnteredBackground)
name:UIApplicationDidEnterBackgroundNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationEnteredForeground)
name:UIApplicationDidBecomeActiveNotification
object:nil];
}
return self;
}
- (void) applicationEnteredForeground {
timer = [NSTimer timerWithTimeInterval:1
target:self
selector:@selector(timerTicked)
userInfo:nil
repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
}
- (void) applicationEnteredBackground {
[timer invalidate];
}
- (void) timerTicked {
elapsedTime += 1;
// If enough time passed, do something
}