最近用Sencha Touch + PhoneGap 开发了一个产品,在IOS上运行流畅,在Android上切换页面几下就闪屏,字体也变模糊了。看上去是性能问题,GPU渲染,内存,都有可能,这绝对接受不了,得治。
团队开始分析内存,代码架构,折腾了一两周,感觉不明显,用户体验还是较差。
直到有一天,在看其他HTML5的框架中,无意提到了这点,hardwareAccelerated属性,硬件加速执行的所有的绘图操作都是使用GPU在View对象的画布上来进行的。启用硬加速最简单的的方法是对整个应用启用硬件速.如果你的应用只使用标准的view和Drawable,全局启用硬加速将不会带来任何负面影响。但是,下面是官方的解释,
However, because hardware acceleration is not supported for all of the 2D drawing operations, turning it on might affect some of your custom views or drawing calls. Problems usually manifest themselves as invisible elements, exceptions, or wrongly rendered pixels. To remedy this, Android gives you the option to enable or disable hardware acceleration at multiple levels.
硬件加速对原生开发可能会带来好处,但对于只是套了个webview,其他都是html+js的mobile app来说,就可能会起到反作用了,需要实际测试后决定是否开放。
在AndroidManifest.xml中harewareAccelerated默认为true,改为false。即关闭硬件加速功能。
<application android:hardwareAccelerated="false" android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name="com.moodys.mobile.MoodysWebTrendActivity" />
整个App瞬间年轻了好多,既快也不闪,Android板也不用再背锅了。
快哉.