在平时写网页的时候,发现很多动态效果在android机上跑起来都异常费力,这无关硬件性能高低,因为一台iphone5s能够流畅运行的逐帧动画,在5000RMB以上的三星android上依旧出现无法忍受的卡顿现象。
但是我偶然发现在小米2上却突然比较流畅的运行了这个逐帧动画。但是新版本的小米手机却依旧卡顿。
而且android运行网页效率明显低于ios的问题已经存在好几年了,android系统不断更新至今也没有解决这个问题。
结合刚才提到的意外发现老机型小米2能够流畅运行,是不是和手机具体采用的硬件有很大关系?某个品牌或厂家的硬件可以提升webview的性能来支持更加流畅的网页动画?
这确实是一个非常纠结的问题,就算你用一些其它的浏览器核心,比如crosswalk之类的,也还是会遇到这个问题,只是概率会低一点。我知道很多人又要说渲染机制之类的问题,就我个人的经验来说,在android的机器上实现动画,优先级为 canvas > webgl > css。
css动画的效率极低,因为那几乎是用cpu的性能堆出来的,低到啥程度?基本就是ios的几十倍吧。
canvas和webgl这两个特性,都会用到gpu来渲染,但是前者的兼容性比后者好一点,也就是说支持前者的机型会多一些。用gpu渲染那么它的效率就跟ios差不多了。
然并卵,就算你是用canvas写的动画,也还是会遇到浏览器内核不支持该机型gpu的情况(据说chrome有一个gpu型号白名单)。
遇到这种情况还有最后一招,就是用最新版本(beta版)的crosswalk,虽然你的程序会大上20多兆。如果这还救不了你的程序,那你只能呵呵了。。。
不要问我为什么知道这么多。。。