使用 block 的另一个用处是可以让程序在后台较长久的运行。在以前,当 app 被按 home 键退出后,app 仅有最多 5 秒钟的时候做一些保存或清理资源的工作。但是应用可以调用 UIApplication 的beginBackgroundTaskWithExpirationHandler
方法,让 app 最多有 10 分钟的时间在后台长久运行。这个时间可以用来做清理本地缓存,发送统计数据等工作。
让程序在后台长久运行的示例代码如下:
| // AppDelegate.h 文件 @property (assign, nonatomic) UIBackgroundTaskIdentifierbackgroundUpdateTask; // AppDelegate.m 文件 - (void)applicationDidEnterBackground:(UIApplication *)application { [self beingBackgroundUpdateTask]; // 在这里加上你需要长久运行的代码 [self endBackgroundUpdateTask]; } -(void)beingBackgroundUpdateTask { self.backgroundUpdateTask = [[UIApplicationsharedApplication] beginBackgroundTaskWithExpirationHandler:^{ [selfendBackgroundUpdateTask]; }]; } - (void)endBackgroundUpdateTask {[[UIApplication sharedApplication] endBackgroundTask:self.backgroundUpdateTask]; self.backgroundUpdateTask = UIBackgroundTaskInvalid;}
|