Android 5.0 Lollipop系统,按back键返回前一个Activity或者Fragment的时候,Android屏幕就出现了花屏,看日志发现是OpenGLRenderer报错,猜测是硬件加速导致的,经过测试果然如此。WebView开启硬件加速之后会导致花屏,Android 4.0(API级别14)中,硬件加速首次在所有应用程序默认开启,所以只需要关闭硬件加速就可以解决这个问题了。
1 2 |
D/OpenGLRenderer(10887): GL error from OpenGLRenderer: 0x501 E/OpenGLRenderer(10887): GL_INVALID_VALUE |
硬件加速分为四个级别
Application级别
1 |
<application android:hardwareAccelerated="true"...> |
Activity级别
1 |
<activity android:hardwareAccelerated="true"...> |
window级别
1 2 3 |
getWindow().setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED); |
View级别
1 |
view.setLayerType(View.LAYER_TYPE_HARDWARE, null); |
解决方案
那么为了在保证性能的前提下解决前面提到的问题,那么可以采用第四种级别,关闭webview的硬件加速。
1 |
webview.setLayerType(View.LAYER_TYPE_LAYER_TYPE_SOFTWARE, null); |