2

我有一个计时器,它必须在 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";
}
4

2 回答 2

2

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

看看本地通知

于 2012-06-03T11:18:21.917 回答
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
 }
于 2012-06-03T12:20:19.093 回答