iOS 后台任务(终于有讲得不错的了)q

来源:互联网 发布:初级java项目开发案例 编辑:程序博客网 时间:2024/05/07 17:35

iOS7 之前的后台任务流程如下:


可以看到,应用其实有十分钟后台的权利。

除此之外还有两种所谓的伪后台,一种是系统推送机制,另一种是墓碑式后台(在关闭程序时保存现场,下次启动时还原,给人一种后台的假象)

ios7之后(一个app可以混合调用多种模式):

 

  • Background Audio,VoIP

属于不后台会死的类型;

  • Location Services

是地点服务,系统统一管理;

  • Newsstand

是苹果自家应用,定时更新。这些都是早就有,没变化。

  • Background Task Completion
              ios4中开始加入的限时后台,允许应用连续后台十分钟,ios7改为允许在开屏下运行十分钟,关屏会暂停,直到开屏后重启继续凑足十分种。

  •  Background Fetch 
ios7新增,在系统认为合适的时候激活应用,具体什么时候合适,开发者不可知,使用者不可控,由系统智能判断,适合获取及时性不强的信息。

这个智能体现在系统会根据用户启动应用的频率和时间以及当前的网络和电量情况来分配。

每个应用的获取频率和时间,数据刷新是统一的,

即系统可以在一个进程内获取多个应用所需的数据而不是一个应用一个进程(类似统一的推送机制,都是为了省电)

 统一刷新这方面有点类似小米说的对齐唤醒和Deep Sleep Battery Saver,

不同应用后台唤醒时刻不同会导致cpu无法进入deep sleep,

某些Android用户会发现自己的手机一夜掉电超多,其实就是某些糟糕的app让cpu没睡好

  •  Remote Notification 
ios7新增,由统一推送通知激活后台,支持silent notification,适合实时类强的应用,有频率限制(每小时几次)

  • Background Transfer Service
ios7新增,可以由应用直接激活的无限制后台,权限大,但是只限于下载上传类服务,只会在WiFi 环境下才进行传输需要特别注意的是:

应用被Background Fetch、Remote Notification、Background Transfer Service三类唤醒时,只被给予几秒钟时间来处理更新。

可以看到对于Remote Notification和 Background Transfer Service还是有一定风险的。


0 0
原创粉丝点击