Android系统因为采用虚拟机以及民主化的应用生态,其系统的整体体验一直落后于同时代的iOS,尤其是在系统运行的流畅性方面,早期的Android给大多数用户留下的印象是卡顿且耗电严重,即使是作为Android忠实用户的小雷(微信ID:leitech)也无法否认这一点。


对于这种情况想必Google自己心里也有数,至于各个手机厂家也是苦不堪言,因为Android的卡顿严重影响了产品用户体验,正所谓,兵熊熊一个,将熊熊一窝!


untitled.png


但Google毕竟是有理想有抱负有野心的公司,对于Android这种糟糕的用户体验,不会坐视不管。于是,在Android4.1版本后Google开始花大力气改善Android的用户体验。正是因为Google对历代Android系统不断的优化,如今,最新版的Android7.0版本,其流畅程度甚至已经追平了iOS。


未命名.jpg


那么,为了让Android更加流畅和省电,Google都做了哪些努力呢?


黄油计划


从Android4.1开始,Google推出了“黄油计划”(Project Butter),之所以取名为“黄油计划”是因为Google希望新版的Android如黄油一般丝般润滑。黄油计划通过新的,效率更高的框架使操作系统运行的更快,支持高达60fps的动画效果。而在之前版本的Android中,动画效果最高只有30fps。帧数提高了整整一倍,整个系统当然更流畅。此外,Android4.1系统通过系统框架进行的渲染和动画都将采用垂直同步(vsync)的方式。一切都遵循16毫秒的循环周期,包括应用的渲染、触摸动作、画面构图和现实刷新等等。黄油计划的基础是honeycomb引入的GPU绘图。由于GPU的浮点运算能力远超CPU而且功耗更低,因此也更加省电。


1601575.jpg


在随后推出的Android4.2和4.3版本中Google进一步精简了系统代码,尤其是在4.3版本中Google改进了硬件绘图性能,GPU会自动将画面中同种类型的部件(如文字)打包在一起绘图,减少了调用GPU的开销。发展到到4.3版本,Android的流畅性已经接近于同期的iOS版本。


对齐唤醒


由于Android的开放性,它对第三方的APP限制比较小,这导致了某些不那么老实的APP会长期驻留后台,而且总是定期唤醒系统。随着用户安装的APP越来越多,各个APP都会不断的唤醒处于休眠状态的系统,而每次唤醒CPU都处于高负荷运转的状态,导致手机在待机时也非常耗电。


doze.jpg


为了解决这一问题,Google在Android4.4版本中加入了对齐唤醒功能。这个功能的作用在于把原来需要分别在不同时间唤醒系统的多个APP集中在某个时间一次性唤醒。这样,系统被唤醒的次数大幅减少,CPU也不用频繁的工作,手机在待机时也就不会这么耗电了。


全新的ART虚拟机


上文提到,Android系统的卡顿和其采用虚拟机的架构有着密切的关系,相信不少在PC平台上用过虚拟机的机友都知道,在虚拟机上运行程序比直接在系统上运行程序效率要低得多。换句话说,虚拟机本身要消耗大量的硬件资源。小雷认为虚拟机架构是导致Android系统整体效率不如iOS的根源所在。但对于虚拟机这一基本架构Google无力改变,但可以想办法提高虚拟机的效率。


art-android-5.jpg


于是在Android5.0版本中,原有的Dalvik虚拟机被新的ART虚拟机代替。Dalvik虚拟机在每次运行APP之前都要对大量的程序代码需要进行二次编译,这大大拖慢了APP的加载速度。ART采用的是预编译(Ahead-of-Time compilation),在安装应用的时候,代码中的字节码将被编译成机器码。而由于有了机器码,下次打开的时候就不需要再编译了,这就提高了运行效率。小雷的切身体会是在Android5.0之后,APP的启动速度明显比之前快了。


Doze嗜睡模式


许多“毒瘤”APP会不断在后台活动消耗系统资源和电量。为了杜绝这种情况,Google开发出了Doze模式。它是Android6.0上新出的一种模式,是一种全新的、低能耗的状态,Doze模式可以减少后台的CPU和网络活动减少电量的消耗。在Doze模式下,所有后台APP的活动都被严格限制,这其中包括联网、唤醒、调用CPU和GPU等权限。


maxresdefault2_副本.jpg


曾有外媒分别对运行Android5.1.1和Android6.0的Nexus5进行测试。结果表明,在待机8小时后,安装了Android5.1.1的Nexus5消耗了4%的电量,而Android6.0版则仅消耗了1.5%;在24小时后,Android5.1.1版的Nexus5消耗了12%的电量,Android M版则仅消耗了4.5%;48小时后,Android5.1.1版的Nexus5消耗了24%的电量,而Android6.0版则仅消耗了9%。这证明Doze嗜睡模式确实令手机更加省电。


优化程序安装代码


在最新的Android7.0系统中Google继续优化了系统代码,相比Android6.0其应用安装的速度明显更快。以三星Galaxy S7为例,从外媒的对比视频来看,升级了Android7.0之后的Galaxy S7应用安装速度比原来差不多快了一倍。自从Android5.0换了ART虚拟机开始,因为安装时要对大量的代码进行编译,应用安装速度一直被用户诟病,Google终于在Android7.0上解决了这一问题。


7-5.jpg


Android7.0的序安装代码优化的另一改进是,每次在手机升级完系统之后不用等待漫长的应用优化过程,直接就可以进入系统。这一点,相信不少机友深有体会,Android6.0之前的版本每次在系统更新完之后都有一个漫长的应用优化过程,让人等的揪心。在Android7.0上,这一过程终于消失了。


1_副本.jpg


虽然Android在许多方面相比苹果iOS存在先天不足,但不可否认,近年来Google对Android做出的各项优化都十分给力,这一点我们是有目共睹的。可以说,最新的Android7.0在流畅性方面已经超越了iOS10,而Android的卡顿与耗电逐渐成为历史。小雷相信,在之后的版本中Google会继续优化Android的用户体验,反而是iOS经常出现bug之类的问题,苹果的软件能力是一年不如一年,真是风水轮流转啊。

雷科技