破坏前景中的背景计时器

时间:2014-05-14 12:31:45

标签: objective-c ios7 nstimer background-foreground

我是ios的新手。我正在做一个应用程序,我必须在后台计算时间,但我的问题是时间不要停在前台。请告诉我如何在前台停止后台计时器? Thnx in advnce。

2 个答案:

答案 0 :(得分:1)

要在同一个班级的某处停止计时器:

- (void)applicationWillEnterForeground:(UIApplication *)application
{

[Timer invalidate];
    Timer = nil;
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    NSLog(@"Background process is Start(EnterBackground)!");
    __block UIBackgroundTaskIdentifier bgTask ;
    UIApplication  *app = [UIApplication sharedApplication];
    bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
        [app endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    }];
    Timer = [NSTimer scheduledTimerWithTimeInterval:4.0f target:self  selector:@selector(process)  userInfo:nil repeats:YES];
}

答案 1 :(得分:0)

通常,请勿使用计时器。使用NSDate存储您感兴趣的开始时间(例如应用程序转到后台),然后将该日期与[NSDate date](即当前日期)进行比较,看看有多少时间已经过去了。

当应用程序在后台运行时,没有充分的理由运行计时器。