NSTimer在iPhone关闭应用程序后继续计数

时间:2012-06-03 11:15:36

标签: iphone objective-c xcode nstimer

我有一个计时器,最多可以计算8小时(28800秒) 之后应该发布

我想知道如何让计时器在后台运行和/或应用程序关闭时?

这是NSTimer:

stopWatchTimer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                                      target:self
                                                    selector:@selector(updateTimer)
                                                    userInfo:nil
                                                     repeats:YES];

这是我的条件:

 counter++;

if (counter >= 28800) {
    [stopWatchTimer invalidate];
    counter =0;

    timeLabel.text = @"Time Out";
}

2 个答案:

答案 0 :(得分:2)

你不能 - 一旦你的应用程序关闭,它就不再运行,所以计时器也不会运行。

看看local notifications

答案 1 :(得分:2)

当应用程序进入后台时,在 - (void)applicationDidEnterBackground:应用程序委托方法在nsuserdefault中添加当前计数器值和当前时间

现在当应用程序变为活动状态之前 - (void)applicationWillEnterForeground:将被调用,因此在该方法中获取总秒数应用程序在后台即(当前应用时间) - (时间应用程序进入后台,存储在nsuserdefault中)以秒计算

所以在 - (void)applicationWillEnterForeground:

中添加它
 if((seconds calculated) > (28800 - (current counter value stored in nsuserdefault)))
 {
    // stop timer as it has gone beyond eight hours
 } 
 else
 {
  // continue task
 }