当前位置: 华文问答 > 数码

为什么iOS伪后台,但是有很多软件也会在后台一直运行?

2015-12-26数码

iOS是伪后台没错,但是那是很多年前的事了。

大概是iOS3的时候,iOS引进了push notification。实现了应用即使不启动也能收到推送消息。

iOS4的时候,引进了后台墓碑,实现了多任务功能。后台应用以墓碑的形式保存在内存中,用户可以快速恢复。当内存不够的时候,系统会自动退出最早的应用程序。

这一时期,一些特殊类型的应用也是可以在后台运行的,比如后台音频播放类,VoIP类,newsstand,位置服务等。

然后是2013年发布的iOS7,对多任务功能进行了极大的增强。

后台任务

iOS7以前的应用退到后台后是允许运行一段时间的。但是iOS7开始,一旦手机休眠,后台应用将被尽快暂停。之后系统会在特定时间进行系统应用的操作被唤醒时(比如检查邮件或接到电话),将之前暂停的后台应用一起执行。这样,系统就不会单独为第三方应用而使手机处于活动状态,从而延长了待机时间。

后台获取(background fetch)

iOS7以前的应用在后台是不能获取信息的。应用必须再打开的时候才能联网获取信息。iOS7以后,应用在后台就可以直接获取网络上的信息。比如天气可以在后台获取信息进行刷新,微信也可以在后台自动更新朋友圈的信息。不过同样为了保证续航,更新的间隔时间由系统根据用户使用情况自行决定,不会让第三方应用随意的在后台启动和获取信息的。

推送唤醒(remote notifications)

iOS7以前,当你收到推送消息时,你需要先打开应用,等待应用从网络上获取推送的信息之后,才能将信息呈现出来。而iOS7改变了这一过程。当系统收到推送消息时,不是首先提醒用户,而是唤醒对应的应用,让应用在后台获取对应的信息。当信息处理完成后,再提醒用户。一个很小的改变,但是可以很大的提升用户体验。同样,iOS系统也会限制这种推送消息的频率,防止系统被频繁唤醒影响续航。

后台传输(background transfer services)

iOS7以前,应用程序在大量数据的上传下载这方面限制是比较多的。应用只能在前台进行这种数据传输,你不能做其他事情。因为一旦退到后台之后,应用只能被允许运行一段时间(最长10分钟),很难完成这种大量数据的传输。而iOS7推出了后台传输功能,应用在退到后台之后,可以将这种上传和下载数据交给iOS系统来维护和管理。这种后台数据传输没有时间的限制,传输过程中用户也可以继续使用其他应用。同样为了保持电力续航和保护数据流量,这种后台传输仅限WIFI网络。

可以看出,苹果非常用心,采用了非常复杂的设计思路,目的就是为了实现真后台才能实现的那些功能(推送,后台更新,上传下载等功能其实都有了),同时又不让后台应用影响耗电,最大程度的保证手机续航能力。 而这一切,是两年前的iOS7就推出的功能了。(居然还有人说iOS7主要改动就是界面?)

所以,iOS是有后台的。只是很多人对iOS的后台印象其实还停留在两年以前。