第一部分
1.先说说iOS 应用程序5个状态:
停止运行-应用程序已经终止,或者还未启动。
不活动-应用程序处于前台但不再接收事件(例如,用户在app处于活动时锁住了设备)。
活动-app处于“使用中”的状态。
后台-app不再屏幕上显示,但它仍然执行代码。
挂起-app仍然驻留内存但不再执行代码。
按下Home键时,app从活动状态转入后台,绝大部分app通常在几秒内就从后台变成了挂起。
在内存吃紧的时候,iphone会首先关闭那些挂起的app。
从iOS 4 开始,应用就可以在退到后台后,继续运行一小段时间(10 分钟);
2.还可以把自己声明为需要在后台运行,就能不限时地运行了。
不过限制为播放音乐、使用 GPS 、voip、。 值得一提的是,有的应用为了达到后台不限时运行的目的,在后台播放无声的音乐(审核不一定会被发现)。
iOS 5 开始又多了一种类型:下载报刊杂志。
然后 iOS 7 则可以下载各种玩意和定时抓取。
iOS
7 需要注意的区别:iOS 7 以前,应用进入后台继续运行时,如果用户锁屏了,那么 iOS 会等待应用运行完,才进入睡眠状态。而在 iOS 7
上,系统会很快进入睡眠状态,那些后台应用也就暂停了。如果收到事件被唤醒(例如定时事件、推送、位置更新等),后台应用才能继续运行一会。因为处理过程变成了断断续续的,因此下载时也要使用
NSURLSession 来处理(即下文中的 Background Transfer Service)。
3. 在我看来,苹果限制 app在后台运行,是为了更有效的利用硬件使用当前的app,不然,过多的app驻留后台,对手机资源占用是一大问题。
二. ios7以后提供的后台接口模式
1、Background Audio,这是后台的音频,这个很早之前便有,也是iOS设备中用得最多的后台应用,调用这个接口可以实现后台的音乐播放。
2、Location Services,这是后台的定位,系统会拥有统一页面进行管理。
3、VoIP,后台语音服务,类似Skype通话应用需要调用,可进行后台的语音通话。
4、Newsstand,报刊杂志后台自动下载更新,其能够自动实时更新。
5、Bac