由于苹果的后台机制,当我们按下home键的时候,所有线程包括主线程的任务都会被挂起,一些资源比如socket也会被系统回收,会导致很多问题,比如一个很重要的资源中断下载,或者定时器方法被暂停等等。
苹果在4.0以后提供了一种申请后台时间的机制:
- (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:(void (^)(void))handler
声明:
标记要开始一个新的长期运行的后台任务
参数:
handler
应用程序后台剩余时间快到达为0的时候的一个处理回调,你应该使用这个回调来做一些清理工作和后台任务结束的标记,未能明确地结束任务将导致APP的终止,这个处理回调将在主线程中被同步调用,并立刻阻止app的暂停当app被通知的时候。
返回值:
一个新的后台任务的唯一的标示符,你必须将这个值传给endBackgroundTask:方法来标记任务的结束。