版权声明:本文为博主原创文章未经博主允许不得转载。 /u/article/details/
本文主要提供一些思路前两种方案在网上搜索具体的实施方法,这里不在赘述
(1)第一种是在调用webview的时候關闭硬件加速,但是这样做会造成webview卡顿不可取
(2)第二种是在view中重写doTabChanged(),这个方法然后可以解决切换屏幕的时候闪屏问题,但是这个解决办法与我的问题不符我这个不是切换不同的fragment,而是webview启动的时候闪屏
后来在网上查到一种思路,在渲染webview的时候关闭硬件加速然后監听滚动屏幕,然后开启硬件加速这个方法最终确实可以先关后开,但是存在很大的bug因为如果webview没有加载完成的时候,滚动屏幕会crash
后來想到先关闭后开启,然后主要是开启的时机问题但是直接用setLayer方法,开启的时候发现是无效的测试发现,如果放到UI线程开启是可以嘚,所以就在webview初始化的时候关闭硬件加速在progress进行到一半的时候在UI线程中开启硬件加速,解决了这个问题
这种解决办法虽然解决了这个問题,但是仍旧会存在一个小bug页面未加载完,这个时候滑动屏幕还是会有卡顿现象,加载完之后屏幕会稍微闪一下然后就不卡了,這可能跟硬件加速layer层渲染有关系不过,目前只想到这个办法
我的问题是在小米八的Android p手机上出现的可能很多软件都会碰到这个现象,这個现象的主要原因是小米用的webview是android system webview,存在兼容性问题但是在华为上不存在这种现象。
如果各位路过的大神有更好的解决办法请与下方留言,非常感谢