直接上代码:
- (void)applicationDidEnterBackground:(UIApplication *)application {
UIApplication *app = [UIApplication sharedApplication];
__block UIBackgroundTaskIdentifier bgTask;
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
}
1、首先,程序正在运行时按Home键进入后台,此时程序会被挂起(如:定时器会被暂停),再次点开程序后定时器会从中断的地方再继续跑
2、想向系统借一点时间的话,需要在applicationDidEnterBackground中加代码,核心方法是beginBackgroundTaskWithExpirationHandler,借的时间约在3分钟不到。3分钟后会触发该方法的Handler回调,在回调需要[app endBackgroundTask:bgTask],然后程序会被重新挂起。注意:如果Handler回调里不加[app endBackgroundTask:bgTask]这句代码的话,那么3分钟后程序会被杀死,亲测有效。
3、最后bgTask = UIBackgroundTaskInvalid;标志任务完成