在 应用的appdelegate里面的- (void)applicationDidEnterBackground:(UIApplication *)application代理方法中加上:
UIApplication *app = [UIApplication sharedApplication];
__block UIBackgroundTaskIdentifier taskId;taskId = [app beginBackgroundTaskWithExpirationHandler:^{
NSLog(@"后台任务超时被退出");
[app endBackgroundTask:taskId];
}];
if(taskId == UIBackgroundTaskInvalid)
{
return;
}
//队列中等待(类似于等待线程,个人理解)
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^
{
NSLog(@"后台任务据最长时限还有 %f 秒",app.backgroundTimeRemaining);
[NSThread sleepForTimeInterval:32]; //等待32秒
NSLog(@"后台任务据最长时限还有 %f 秒",app.backgroundTimeRemaining);
[app endBackgroundTask:taskId];//通知系统后台任务已处理完毕
});
}
本文介绍了一个iOS应用在进入后台时如何注册并执行后台任务的方法。通过UIApplication的beginBackgroundTaskWithExpirationHandler方法,可以确保在应用进入后台时启动一个任务,并在指定时间内完成,避免因超时而被系统终止。
128

被折叠的 条评论
为什么被折叠?



