iOS7后台机制详解

在tgfcer看到的技术贴,原地址:http://club.tgfcer.com/thread-6721943-1-1.html,我转载过来并加以整理:

iOS7中的app分为四种后台模式,需要注意的是无论哪一种都需要app本身实现相应的后台接口

level 1 无后台仅有推送 - 参考iOS3.x

level 2 墓碑式后台 - 现场还原,即所谓的伪多任务,绝大多数iOS4以后的app是这种后台模式

level 3 由系统智能调度的后台 - iOS7新增的background fetch,keynote上着重讲过的根据用户行为自动调整达到效率最优的后台模式,用于处理不是很有时效性的信息获取,例如sns,新闻类应用的后台更新等,系统会根据用户启动应用的频率和时间以及当前的网络和电量情况来智能分配每个应用的获取频率和时间,数据刷新是统一的,即系统可以在一个进程内获取多个应用所需的数据而不是一个应用一个进程(类似统一的推送机制,都是为了省电),开发者不能确定数据会在何时被更新所以这个api只能用于处理非敏感信息

level 4 真后台
但此真后台非Android和传统桌面OS的真后台,为了让用户免于进程管理仍然有多种限制,大致分为几种模式
1 Background Task  Completion
iOS4就有的一个通用后台接口,可供任意类型的app使用,其限制是只能后台运行10分钟。iOS7对其作出的改变是原本的10分钟是连续的10分钟,既是说即使在这10分钟内用户关闭了屏幕或是时间到自动关屏了系统也不会进入休眠状态而是等待10分钟后台运行完毕,新的系统则会正常休眠,将剩余的后台时间留到用户下一次唤醒设备。这样后台的运行时间仍是10分钟但不再是连续的。这样做的好处是省电,打个比方现在很多词典带后台复制选词功能,实际上就是用了task  completion,这样一旦用户开启一次词典并退出就意味着设备至少10分钟没法进入休眠状态,对电量是很大的消耗,iOS7以后该休眠照样休眠,并且下次你唤醒设备后台取词还在。
2 Background Audio
后台音频,iOS4就有
3 Location Services
后台定位,iOS4就有,系统统一管理
4 VoIP
后台语音,如Skype通话之类,iOS4就有
5 Newsstand
报刊杂志的后台下载,iOS4就有,后台自动定时更新
6 Background  Fetch
在前面level3处提过,我认为他不能算真后台因为用户和开发者都不能预测何时被系统调度
7 Remote Notification
这是本次较大的一个改进,以往QQ类应用接受推送后点进去需要再收一次信息的情况将不复存在,推送将能够直接启动后台任务,具体的时限我还没仔细看。
值得注意的是remote notification支持silent notification,这样dropbox这类同步应用可以在后台以最节能的模式实时静默同步了,类似布卡漫画这种也可以推送正在追的漫画的新章节并在后台静默下载,待到下载好再给用户发送一个本地推送,用户点开即看无需再联网。
8 Background Transfer Service 
后台上传下载。iOS有史以来最接近传统多任务的后台接口,可供任意类型的app调用,无时间限制。应用场景包括后台上传和下载数据,这使得游戏后台更新数据包,后台上传视频等等都成为可能,但是正如其名字,它只能用于处理上传下载这种传输类的任务,类似后台剪切板监控这种它就无能为力了。

实际应用场景中灵活组合多种后台模式可以实现传统多任务的绝大多数应用模式而无需用户插手进程管理,例如一个地图类应用可以开启location服务,当检测到用户进入一个新的城市后开启一个background transfer service下载该城市的数据包。又比如, remote notification可以和background transfer service组合实现订阅的电视剧甚至电影后台静默更新。例如收到一个推送(推送可静默,不通知用户)启动后台下载。

iOS7的设置里面可以单独禁用某个应用的后台

你可能感兴趣的:(iOS7后台机制详解)