iOS7 之前的后台任务流程如下:
可以看到,应用其实有十分钟后台的权利。
除此之外还有两种所谓的伪后台,一种是系统推送机制,另一种是墓碑式后台(在关闭程序时保存现场,下次启动时还原,给人一种后台的假象)
ios7之后(一个app可以混合调用多种模式):
- Background Audio,VoIP
属于不后台会死的类型;
- Location Services
是地点服务,系统统一管理;
- Newsstand
是苹果自家应用,定时更新。这些都是早就有,没变化。
- Background Task Completion
- Background Fetch
这个智能体现在系统会根据用户启动应用的频率和时间以及当前的网络和电量情况来分配。
每个应用的获取频率和时间,数据刷新是统一的,
即系统可以在一个进程内获取多个应用所需的数据而不是一个应用一个进程(类似统一的推送机制,都是为了省电)
统一刷新这方面有点类似小米说的对齐唤醒和Deep Sleep Battery Saver,
不同应用后台唤醒时刻不同会导致cpu无法进入deep sleep,
某些Android用户会发现自己的手机一夜掉电超多,其实就是某些糟糕的app让cpu没睡好
- Remote Notification
- Background Transfer Service
应用被Background Fetch、Remote Notification、Background Transfer Service三类唤醒时,只被给予几秒钟时间来处理更新。
可以看到对于Remote Notification和 Background Transfer Service还是有一定风险的。