碰到一个奇怪的问题:
WebView在显示本地的一个h5页面时,在Mi 2S可显示,页面上同样属性的按钮有两个可点击,但第三个按钮点击导致Activity必定出现崩溃。崩溃无详细日志,只有如下两句线索:

1
2
// W/crash_handler(19125): Caught a crash, signum=11
// 14594-14594/com.eln.base E/webcore: Report WebCore crash to the ErrorReportUtils at:Wed Oct 28 18:44:51 格林尼治标准时间+0800 2015 //blog from sodino.com

该页面在其它手机包括小米的其它系列手机都正常,只出现在Mi 2S。

H5开发人员跟进后发现崩溃点是在h5界面的渲染阶段发生崩溃;无进一步解决办法。
去吃饭时走在路上考虑到Android上和渲染有关的是硬件加速了;
回来后检查代码发现整个app在AndroidManifest.xml中的application标签处全局开启硬件加速,
所以将其硬件加速开关设置关闭后,android:hardwareAccelerated="false",发现WebView正常。

后续为进一步减少代码改动所引起的影响范围,规避此bug的解决方案设定为:

  1. 判定为Mi 2系列手机时
  2. 对WebView的界面关闭硬件加速
1
2
3
4
//		if ("MI 2SC".equals(deviceName)) {
if (deviceName!= null && deviceName.toLowerCase().startsWith("mi 2")) {
mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}

附:Android官方Hardware Acceleration在不同界面的控制级别说明

hardware.acceleration.controll.level