android P 小米八,weview闪屏问题解决

     本文主要提供一些思路,前两种方案在网上搜索具体的实施方法,这里不在赘述。 

     解决这个问题的方法,能查到的主要有两种:

   (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,存在兼容性问题,但是在华为上不存在这种现象。

       科普一下小知识,硬件加速分为四个层级,application、activity、window、view。本文的操作主要在view级别。

       如果各位路过的大神有更好的解决办法,请与下方留言,非常感谢。

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值