在以前,当 app 被按 home 键退出后,仅有最多 5 秒钟的时间做一些保存或清理资源的工作。但是应用可以调用 UIApplication 的beginBackgroundTaskWithExpirationHandler方法,让 app 最多有 10 分钟的时间在后台长久运行。这个时间可以用来做清理本地缓存,发送统计数据等工作。
示例代码如下:
// AppDelegate.m文件
#import "AppDelegate.h"
@interface AppDelegate ()
// 程序后台任务标志位
@property (assign, nonatomic) UIBackgroundTaskIdentifier backgroundUpdateTask;
@end
// app已经进入后台
- (void)applicationDidEnterBackground:(UIApplication *)application {
// 开始后台长久运行任务
[self beginBackgroundUpdateTask];
/**
* 添加需要后台长久运行的任务代码
*/
// 结束后台长久运行任务
[self endBackgroundUpdateTask];
}
// 开始后台长久运行任务
- (void)beginBackgroundUpdateTask {
self.backgroundUpdateTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[self endBackgroundUpdateTask];
}];
}
// 结束后台长久运行任务
- (void)endBackgroundUpdateTask {
[[UIApplication sharedApplication] endBackgroundTask:self.backgroundUpdateTask];
self.backgroundUpdateTask = UIBackgroundTaskInvalid;
}