Уничтожить фоновый таймер на переднем плане

Я новичок в ios. Я делаю приложение, в котором мне нужно считать время в фоновом режиме, но моя проблема - время не останавливаться на переднем плане. Подскажите пожалуйста, как остановить фоновый таймер на переднем плане? Спасибо заранее.

2 ответа

Решение

Чтобы остановить таймер где-то в том же классе:

- (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];
}

Как правило, не используйте таймер. Используйте NSDate сохранить время начала, которое вас интересует (например, приложение переходит в фоновый режим), а затем сравнить эту дату с [NSDate date] (т.е. текущая дата), чтобы увидеть, сколько времени прошло.

На самом деле нет веской причины для запуска таймера, пока приложение находится в фоновом режиме.

Другие вопросы по тегам