当app处于后台运行模式,app客户端最多只有5秒的时间做清理资源的工作。为了让app更久的在后台运行,以便做清理本地缓存,发送统计数据等工作,我们可以用下面的方法实现:
// AppDelegate.h 文件
@property (assign, nonatomic) UIBackgroundTaskIdentifier backgroundUpdateTask;
// AppDelegate.m 文件
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[self beingBackgroundUpdateTask];
// 在这里写你要后台执行的代码块
[self endBackgroundUpdateTask];
}
//后台执行任务的方法;
- (void)beingBackgroundUpdateTask
{
__weak typeof(self) weakSelf = self;
self.backGroundUpdateTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[weakSelf endBackgroundUpdateTask];
}];
}
//后台结束任务执行的方法
- (void)endBackgroundUpdateTask
{
[[UIApplication sharedApplication] endBackgroundTask: self.backgroundUpdateTask];
self.backgroundUpdateTask = UIBackgroundTaskInvalid;
}