我有一个计时器,最多可以计算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";
}
答案 0 :(得分:2)
你不能 - 一旦你的应用程序关闭,它就不再运行,所以计时器也不会运行。
答案 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
}