我完全理解他们是否,但我正在寻找的是一个计时器,当应用程序进入后台时暂停,并在用户返回应用程序后取消暂停。我不需要后台任务;我只是想确保在应用程序中大约x分钟后,无论是今天还是明天都会发生某种行为。
谢谢! 布雷特
答案 0 :(得分:1)
应用程序的背景(假设您没有后台任务)不会“暂停”计时器。它仍然在理论上倒计时,所以如果应用程序重新打开,如果时间已经过去,它将会触发。这也适用于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
}