关于Android流畅度不如iOS的几点看法
Android4.0中最主要的改变是,在面向Android4.0或更高版本的应用中,硬件加速是被默认开启的,而不需要在配置文件中设置。在此之前,考虑到某些特殊的绘制操作光靠硬件加速无法很好的完成,强制开启的话会明显中断应用运行,故而未允许其默认打开。
Android采用的是Java技术,所有应用在一个叫Dalvik的Java虚拟机中运行,Dalvik是Android的核心,是google专门为移动设备优化的Java虚拟机,Android应用就是典型的Java应用。可以说Java应用的优点(成熟、存在大量可重用代码)就是Android的优点,Java应用的缺点(占内存大、运行速度略低)就是Android的缺点。
所以Android移动设备要能运行顺畅,必须有高性能CPU+大内存,256M内存刚刚够,512M内存差不多了,要运行得很顺畅则需要1G内存,要知道iPhone4才512M内存。高性能CPU+大内存给基于Android的移动设备带来成本高和耗电量大两大问题。
硬件加速并不如人们认为的那么完美,他占用的RAM巨大。RAM是有限的,分出一大部分去绘制,那处于运行中的进程就会缺少内存。
硬件加速并非流畅的必杀。最初的时候,Android使用了一种完全不同的渲染策略,并做了一些折中:网页被转换成一个”显示列表“,持续的在屏幕上进行绘制,而非使用块(Tiles)的形式。
它的优点就是,在滚动或是缩放的时候不会发生有的块还没被渲染出来的现象。而这个方法的不给力之处就在于页面复杂的时候,帧速就明显低了。例如Android3.0,浏览器中开始使用块的方式进行渲染,于是它可以在滚动或是放大的时候保持一个稳定的帧速,自然也会出现新的块没有被立即渲染出来的情况。
换个角度考虑,不能把所有问题都推到硬件加速身上,让他像个救世主似的,一出手所有问题迎刃而解。首先来说,GPU的性能就限制着渲染速度。随着屏幕分辨率的不断提升,帧数和GPU的速度,尤其是内存总线带宽有很大的关系。随着像素的提升,GPU能更好的处理图像运算。