安卓系统是谷歌在Linux系统的基础上开发的一款移动操作系统,而安卓系统的应用程序则是在运行在一个基于Linux系统内核之上的虚拟机之中,这个虚拟机属于谷歌自己开发的一个Java虚拟机,在其中运行的应用程序也继续Java进行编写的。Java的跨平台性和兼容性虽然非常好,但是Java的内存应用机制却是不太合适使用在移动设备上
Java的内存管理使用了一个垃圾回收机制,系统中有一个规则是用来回收内存的,这个机制规定内存在低于某个值时会选择性的关闭程序,而在平常程序会常驻在内存中,在下次使用会直接从内存中读取,加快程序打开速度。这个机制虽然很好用,但是当运行大型软件时,就会因为内存不足而选择关闭其他应用,这样会频繁的访问内存,于是就造成了运行大型软件时会出现卡顿的现象。
第二个原因就是安卓目前使用的Dalvik虚拟机是在运行程序时,每次都需要将程序代码编译为机器码运行,这样就多加了一个步骤而且更加耗电。不过在最新的Android4.4.4开始谷歌新加了一个ART模式,在安卓时就将软件直接编译为机器码,加快了系统的运行速率
于苹果来说,却和安卓的内存管理机制有着本质上的区别,iOS系统没有所谓的垃圾回收机制和Mac系统类似,将内存分为自由(Free)、空闲(inactive)、活跃(active)以及固定(wired)四个类型,并且根据系统需要进行相互转化,当用户点击Home键返回桌面后,程序就会被暂停,而不会在后台运行,并且会按照程序在内存中的属性然后进行关闭不需要的程序,所以很多用户说苹果的系统是假后台,对于苹果系统来说,系统优化和关后台是不需要的操作,清理的效果和系统自己对内存管理产生的效果没有区别。这也就为什么苹果用1GB内存但是流畅度秒杀安卓3GB手机的原因
优先级区别:iOS最先响应屏幕
当我们使用手机时,解锁、滑动等操作iOS系统就表现出了流畅的一面,但Android产品却给人一种反应慢、不跟手的情况,这是为什么?
其实这与两个系统的优先级有关,iOS对屏幕反应的优先级是最高的,它的响应顺序依次为Touch--Media--Service--Core架构,换句话说当用户只要触摸接触了屏幕之后,系统就会最优先去处理屏幕显示也就是Touch这个层级,然后才是媒体(Media),服务(Service)以及Core架构。
而Android系统的优先级响应层级则是Application(应用)--Framework(框架)--Library(图像处理)--Kernal架构,和显示相关的图形图像处理这一部分属于Library,你可以看到第三位才是它,当你触摸屏幕之后Android系统首先会激活应用,框架然后才是屏幕最后是核心架构。
因此,优先级不同导致了iOS产品以及Android产品在操控过程中表现的差异。在滑动屏幕是,iOS系统会优先处理Touch层级,而Android系统则是第三个才响应Library层级,这是造成它们流畅度不同的因素之一,但不是绝对的。
硬件工作区别:iOS基于GPU加速
目前手机的处理器等硬件配置已经达到了瓶颈期,各大旗舰产品在硬件比拼中基本上没有太大变化,而GPU就成为了差异化最重要的体现。
一般来说一些大型3D游戏对于GPU要求较高而,苹果的Power VR SGX系列GPU一直是以高性能著称的。
为iOS系统对于图形的处理都是基于GPU硬件加速,可以减轻CPU运算的压力但是Android为了适配不同硬件的手机,需要满足各种差异配置。
所以很多图形特效处理大部分都要靠程序本身进行加速和渲染,并严重依赖CPU运算的操作自然会加大处理器的负荷,从而出现卡顿的问题。
虽然在Android4.0以后的系统中都默认开启了硬件加速,但依旧无法做到运用GPU加速全部的图形特效。
屏幕优先响应,再加上iSO本身GPU加速程序的特性,使得iOS系统在操作中拥有不错的流畅性,iOS系统的这些流程本身都是在为流畅服务。而GPU加速这点特性,应该是它优于Android系统流畅性的又一个因素。
系统设计区别:安卓APP无法统一
上面的两个原因,似乎已经可以大概解释为什么iOS相比Android更为流畅的原因。但最终还有一个问题是应用程序,在Android上似乎系统自带的软件很少出现卡顿,而一旦安装一些第三方应用后,卡顿问题就逐渐出现,这究竟是为什么?
因为iOS系统的封闭性,对于APP的开发框架有极为严格的限制,所以APP在iOS系统上运行对象比较单一。
还有就是苹果设备的硬件供应商比较固定,CPU也是有规律更新,不像Android终端不停地在变,开发者很难针对一款设备开发专用的软件,需要兼容多个CPU或GPU的硬件平台,这就导致了Android应用开发成本较高且收益慢。
反观iOS应用开发则因为软硬件垂直整合而受益,这样一来苹果自然就保证了应用本身其与硬件产品之间的完美结合程度。
简单地说,如果有Android开发者专门针对某款旗舰手机开发出的大型游戏,那么在流畅度上来说,理论上不会出现卡顿延迟的问题。
因此,开发者不可能针对所有的机器型号进行开发,只能在比较主流的机器上进行测试并保证运行效果,所以他们为了兼顾整个产品线,不得不降低游戏体验以达到高中低产品可以共用的效果
因为Android终端高中低档手机的用户数量多,自然而然就会产生Android产品不如iOS流畅的抱怨。
总结一句话:Android考虑更多的是“怎么让系统能够运行”,而iOS无时无刻想着“怎么让系统高效地运行”。