关于Android流畅度不如iOS的几点看法
openkk 13年前
<p>网上一名据称是前谷歌实习生的人透露了一些关于Android系统硬件加速的内幕。据称,在 Android3.0和4.0之前,并没有完整的硬件加速。他们一直在通过硬件加速绘制某些UI元素,并称效果并不像他们想象中那样乐观。他认 为,Android效率低下的设计框架使得它需要通过更强大的CPU/GPU才能确保具有100%的流畅体验。</p> <p>他表示在iOS系统中,用户界面渲染的过程被赋予了很高的优先级,当触摸屏开始 操作,系统将停止所有进程,将所有资源集中对节目进行渲染。而在Android系统中,就没有这种待遇了。虽然Android手机配置普遍很高,但进程不 会为界面渲染让路,由于资源被分配到不同任务中,造成了Android操作的不流畅。<br /> <br /> 从“前谷歌”“实习生”等定语中大概就可以判断出,这些言论没什么权威性。事实上也正是如此。<br /> <br /> 事实上,Android从1.0版本之后,所有窗口元素的合成和显示,都是通过硬件完成的。按钮的动作、下拉菜单的阴影、弹出窗口和提示框的显示和隐藏等等。同时,各个窗口元素的拼接,类似的任何窗口的移动等,都是通过硬件方式渲染的。<br /> <br /> <a name="p2"></a>Android4.0中最主要的改变是,在面向Android4.0或更高版本的应用中,硬件加速是被默认开启的,而不需要在配置文件中设置。在此之前,考虑到某些特殊的绘制操作光靠硬件加速无法很好的完成,强制开启的话会明显中断应用运行,故而未允许其默认打开。<br /> <br /> <img alt="关于Android流畅度不如iOS的几点看法" src="https://simg.open-open.com/show/eda36f6d7a2a90640ec8183ec552aabd.jpg" width="500" height="467" /> <br /> <br /> Android采用的是Java技术,所有应用在一个叫Dalvik的Java虚拟机中运 行,Dalvik是Android的核心,是google专门为移动设备优化的Java虚拟机,Android应用就是典型的Java应用。可以说 Java应用的优点(成熟、存在大量可重用代码)就是Android的优点,Java应用的缺点(占内存大、运行速度略低)就是Android的缺点。<br /> <br /> 所以Android移动设备要能运行顺畅,必须有高性能CPU+大内存,256M内存刚刚够,512M内存差不多了,要运行得很顺畅则需要1G内存,要知 道iPhone4才512M内存。高性能CPU+大内存给基于Android的移动设备带来成本高和耗电量大两大问题。<br /> <br /> <img alt="关于Android流畅度不如iOS的几点看法" src="https://simg.open-open.com/show/2bbd443fe6d03c6981e20d1827b54a4c.jpg" width="245" height="408" /> <br /> <br /> 硬件加速并不如人们认为的那么完美,他占用的RAM巨大。RAM是有限的,分出一大部分去绘制,那处于运行中的进程就会缺少内存。<br /> <br /> 硬件加速并非流畅的必杀。最初的时候,Android使用了一种完全不同的渲染策略,并做了一些折中:网页被转换成一个”显示列表“,持续的在屏幕上进行绘制,而非使用块(Tiles)的形式。<br /> <br /> <img alt="关于Android流畅度不如iOS的几点看法" src="https://simg.open-open.com/show/3d679a09ce86576e48b2afdeb7bcff36.jpg" width="500" height="406" /> <br /> <br /> 它的优点就是,在滚动或是缩放的时候不会发生有的块还没被渲染出来的现象。而这 个方法的不给力之处就在于页面复杂的时候,帧速就明显低了。例如Android3.0,浏览器中开始使用块的方式进行渲染,于是它可以在滚动或是放大的时 候保持一个稳定的帧速,自然也会出现新的块没有被立即渲染出来的情况。<br /> <br /> 换个角度考虑,不能把所有问题都推到硬件加速身上,让他像个救世主似的,一出手所有问题迎刃而解。首先来说,GPU的性能就限制着渲染速度。随着屏幕分辨率的不断提升,帧数和GPU的速度,尤其是内存总线带宽有很大的关系。随着像素的提升,GPU能更好的处理图像运算。<br /> <br /> <a name="p3"></a>说到iOS,再说说iPhone和iPad。人们普遍认为iOS系统比Android要好,要流畅。像nexus S的硬件几乎比iPhone4先进两到三年,但流畅度比较之下,也难分伯仲。<br /> <br /> 有人说是因为架构不同,这真是没有的事。iOS和Android同属类unix系统,本质上没 有区别,CPU也同为ARM架构。即使说芯片的设计方式,Android高端机的设计也要比苹果的A4处理器要先进。现如今大多数Android机动辄上 G的内存,而iphone4还是512M,而流畅度却完胜,这大概不是硬件的问题了吧。<br /> <br /> <br /> <img alt="关于Android流畅度不如iOS的几点看法" src="https://simg.open-open.com/show/89146eb3a52216a1186363929159fd53.jpg" width="260" height="153" /> <br /> <br /> iOS是苹果长期积累的结果,系统核心、基础服务和应用框架都采用C/C++或object-C开发,而应用采用Cocoa Touch框架,以object- C开发,应用编译后以本机代码在设备上运行,因此具有很高的运行效率。<br /> 依我看,硬件资源的运用不合理,才是导致运行效率底下的原因。<br /> <br /> <img alt="关于Android流畅度不如iOS的几点看法" src="https://simg.open-open.com/show/7b801090411d2b229e77716438b9cd41.jpg" width="367" height="550" /><br /> iOS系统凭借良好的软件监控,对系统资源极端的节约。这也是为什么iOS系统能凭借 512Mb内存,却能战翻很多1G内存手机的原因。特别是在后台上。一般的后台,程序不会被关闭,而是继续在系统内部继续进行。而iOS则是将主程序关 闭,任务交给一个进程,任务完成,则关闭该进程。<br /> <br /> 这样的运行方式将内存的消耗降到最小,它不像一般的方式那样,继续开启住程序,让无用的组件继续占用内存,无法释放。普通方式在处理这些任务时,会将这些任务全部搬入系统缓存压缩或释放。在需要重新加载时,还要重新解压读取。这就导致了加载时间的增加。<br /> <br /> iOS的任务处理方式使得任务的加载和内存的释放更加直接高效。不光如此,内存的有效整理也是 也是iOS系统流畅的原因。它的后台程序占用内存极少,当系统资源不够时,它会自动释放长时间占用内存的进程,包括一些需要保持连接的也会被强行关闭。所 以说,你完全不必刻意去关闭后台中的软件。<br /> <br /> 此外,iOS系统还不允许自定义系统插件,这也是为什么iOS比Android流畅的原因。当你越狱后并装了若干插件,你会发现流畅度略有下降。<br /> <strong>总结</strong><br /> <br /> Android采用使用最广泛java技术,开发人员众多,容易上手,但也需要较强大的硬件支 撑。而Apple iOS的体系架构相对较为传统,但运行效率高,对硬件的要求低,成本优势大,在现有的硬件条件下,应用运行具有最好的顺畅感,也更加省电。Apple iOS自成体系,系统架构朴实无华,但干净清晰,应该算是目前最有效率的移动设备操作系统。 (本文来源:泡泡网 )</p>