Уничтожить фоновый таймер на переднем плане
Я новичок в 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]
(т.е. текущая дата), чтобы увидеть, сколько времени прошло.
На самом деле нет веской причины для запуска таймера, пока приложение находится в фоновом режиме.