后台程序
基本概念:
IOS4 以后,引入了多任务的概念。在用户按下home键时,当前的app会立即转入后台模式,不会像IOS4之前那样,立即被系统干掉。app仍然驻留在内存中,并且可以向系统注册执行后台任务,比如播放音乐。但是IOS上的多任务与传统的多任务是不同的,app自身在转入后台之后,是被冻结住的,所注册的后台任务,必须放在独立的线程中,并且任务的类型是固定的。也就是说你所能执行的后台代码是有限制的。
基本流程:
当用户按下home键时,当前的应用程序就会立即转入后台模式,流程如下:
资源释放:
当app转入后台模式,系统不会释放app的核心数据,比如自定义的object,view,window,等等这些一但释放,无法回复的东西。但是一些系统维护的后台资源,比如缓存的图片,数据。
applicationDidEnterBackground:
通常在这个函数中,需要做一些数据保存的工作。因为当系统进入低内存状态后,任何后台程序都有可能被系统干掉,从而收回内存。并且如果在后台状态下,被系统干掉,app是不会收到任何通知的。需要注意的是,这个函数最多只能执行5s,如果超过,app就会被系统干掉。
程序终结:
如果你的app不希望进入后台状态,只需要在info.plist中加入UIApplicationExitsOnSuspend。
app就会在home键按下后,立即终结,终结前app会收到 applicationWillTerminate: 。在这个函数中可以做数据保存,同样的该函数最多只能执行5s。