的NSTimer保持计数的应用程序在iPhone关闭后(NSTimer Keep counting

2019-06-25 03:36发布

我有一个要数长达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";
}

Answer 1:

你不能 - 一旦你的应用程序被关闭,则它不会跑了,所以计时器就不会被自动运行。

看看当地的通知 ?



Answer 2:

当应用程序进入的背景下,在- (无效)applicationDidEnterBackground:应用委托方法在nsuserdefault添加当前计数器值和当前时间

现在,当应用程序之前被激活- (无效)applicationWillEnterForeground:将调用,所以该方法获得总秒数应用在后台即(应用程序的当前时间) -以秒(当应用程序去后台存储在nsuserdefault时间)计算

所以还添加此 - (空)applicationWillEnterForeground:

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


文章来源: NSTimer Keep counting after app is closed in iPhone