我想减少时间倒计时。因此,如果用户最小化应用程序,则应用程序加载后台如何在应用程序后台运行计时器?我使用以下代码。当app最小化时,计时器停止。请帮帮我。
timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerCountDown) userInfo:nil repeats:YES];
- (void)timerCountDown
{
if(secondsLeft > 0 ) {
secondsLeft -- ;
hours = secondsLeft / 3600;
minutes = (secondsLeft % 3600) / 60;
seconds = (secondsLeft %3600) % 60;
}
}
答案 0 :(得分:29)
我得到了答案,它工作得很好。
UIBackgroundTaskIdentifier bgTask =0;
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
}];
timer = [NSTimer
scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(timerCountDown:)
userInfo:nil
repeats:YES];
答案 1 :(得分:6)
应用程序不会永远在后台运行;您无法保证在应用关闭时计时器将继续运行。
在app delegate中,在applicationDidEnterBackground中,保存任何允许计时器在applicationWillEnterForeground时继续的数据。在您的特定情况下,使背景上的计时器无效,并在进入前景时再次启动它。使用secondsLeft,您可能希望能够通过NSDates的差异来计算,并保存开始日期和结束日期。