在部分Android5的设备上,Webview内核版本为37,有一个系统bug,就是Webview的渲染会出现花屏和分块渲染,具体现象就是页面内容一个方块一个方块的出现,体验很不好。
这个bug的成因是因为渲染内存不足时,Webview内部策略不当造成的。
检查Webview版本,可以看ua。
可选的解决方案如下:
- 降低内存占用
最重要的是降低App内存占用,此话题篇幅较长,另见文章http://ask.dcloud.net.cn/article/12836 - 使用截屏来稳定窗体动画
在动画api的参数里均可以设置截屏属性:见Webview的WebviewExtraOptions里的acceleration:capture。
配置该属性后,窗体动画的启动时间会在不同手机上延迟几十到几百毫秒不等,因为截屏需要时间。
截屏完成后,动画会变成截屏画面的移动,而不是真实Webview的移动,这种动画更平顺,能避免掉花屏和分块渲染。
如果只是Webview37有花屏问题,那么建议判断仅在此时启动截屏动画。 - 关闭硬件加速
判断在Webview内核版本为37时,关闭硬件加速。也可以解决花屏和分块渲染问题。但会有其他影响,具体参考http://ask.dcloud.net.cn/article/55 - 提示用户升级Webview
Android5起,Webview可以单独安装升级。比如从华为应用市场或应用宝上下载一个Webview的apk,提示用户安装升级。
这些方法不用全部使用,最佳的方案是降低内存占用,并友情提示用户升级Webview,毕竟那个版本的Webview是真有bug。
2 个评论
要回复文章请先登录或注册