【天极网手机频道】

一直以来安卓用户都嘲笑IOS的伪后台,苹果为什么不实现实时后台呢?既不是IOS技术上无法实现,也不是苹果傻到不考虑用户需求,今天通过对Android与IOS的后台与推送机制的简单介绍,相信大家一定会有答案。

  简单来说,iOS后台类型可以分为三种:

1. 保存现场。按下Home键10秒内直接杀死进程,并释放内存,大多数第三方APP(非内置APP)都属于此类,APP会保存关闭时的状态以便保存数据和下次打开时恢复。

2. iOS系统支持的“多任务”。按下Home键转入多任务状态,保留在内存中,但只能进行系统允许的动作:比如GPS,比如VoIP,比如流媒体播放等等,例如打开一个第三方音乐播放器,播放歌曲并按Home推出,音乐仍可以继续播放。

3. 真正的桌面级别的多任务。只有Safari/Mail是,苹果嫡系大都都不是。这个级别的APP在后台没有任何限制动作。

无限制后台动作的程序,一会在用户无察觉的情况下耗光电力,二会有安全上面的问题,所以苹果杜绝了绝大多数APP的后台动作,并且引入了推送服务器的概念。

由于iOS不允许大多数的APP在后台实时运行,那么例如QQ这类软件是如何实现实时聊天的呢?IOS的推送(APNS,即 Apple Push Notification Service)依托iOS系统常驻进程运作,全局接管所有APP的消息推送,所以可看作是独立于应用之外,而且是设备和苹果服务器之间的通讯,而非应用的提供商服务器。例如,你的QQ好友给你发了一条消息,QQ服务器(Provider)会把这条消息转发给苹果对应的服务器(APNs)发出通知,然后再中转传送到你的设备之上。当你接收到通知,打开应用,QQ这个APP才开始从腾讯服务器接收数据,跟你之前看到通知里内容一样,但却是经由两个不同的通道而来。

 


  我们再来看看Android:

当进程被切换到后台时,系统暂停进程。不消耗CPU资源,只在内存保留运行状态,并根据应用本身设置优先级:

七个优先级:
前台进程。顾名思义,你当前屏幕正在显示的进程。
可见进程。随时需要待命的进程,例如随时需要召唤出来的输入法。
主要服务。系统的必须服务,例如电话。
次要服务。与系统关系密切的服务,例如 Gmail 的邮件推送服务。
后台进程。同样顾名思义,就是刚刚被你切换到后台的进程。
内容供应节点。没有应用实体,仅提供内容供别的应用去用的,比如日历供应节点,邮件供应节点等。
空进程。没有任何东西在运行的进程,有些应用在退出后,依然会在进程中驻留一个空进程,这样的作用是提高该应用下次的启动速度或记录一些历史信息。

正常的Android应用在退出之后要不就成为后台进程,要不就成为空进程。这些进程已经暂停了运行,不占用 CPU 资源和电量。在内存不足,用户需要打开另外的应用时,就会自动清除掉,所以完全不需要清理内存。

那些不正常的应用,就会在后台开各种主要服务和次要服务,导致用户退出后继续运行,最常见的例子就是各种占据任务栏的xx电池助手、xx手机助手……

还有我们熟悉的微信、微博,关闭后仍然会在后台驻留后台进程,以接受推送消息,并且不断唤醒处于深度睡眠中的CPU。

我们仍以QQ为例,QQ在后台时会保留相关进程以及服务,并且与QQ服务器实时通讯以便获得好友发送来的消息。

  iOS的聪明之处在于系统集成的推送服务接管了所有APP的推送消息,开发APP时只需遵循这一API接口即可,任何iOS设备如iPhone可以在这个统一的系统服务上获得各类APP的推送消息,占用资源小巧,并且省电。而Android上如果有100个APP需要获取通知消息,就可能需要在后台运行100个进程或者服务,这对内存以及处理器的占用是相当巨大的,而且对电池的耗费也是比iOS更为严重。

综上所述,苹果不允许绝大多数APP实现实时的真后台,无非是从安全性、系统流畅度与耗电三方面考虑,再加上推送服务器的架构,既让用户感觉到后台应用程序的相互切换是没有断层感,又实现了资源的有效利用,可谓是聪明之举。而Android的开放给予了APP更多权限,虽说耗电、系统资源占用高于IOS,不过Android的开放也不正是他获得成功的原因吗?

作者 admin