收到用户反馈vivo手机打开某个页面有时会崩溃,也不是必现,查收集到的崩溃日志也没法定位到工程代码,都是底层的,网上查有可能是硬件加速引起,担心其他页面也会有问题,就把整个应用的硬件加速关闭了,测试其他页面不会出现性能或其他问题。上线后一段时间没收到户反馈崩溃问题。
后来开发其他功能发现有个页面有异常,点击按钮把某view(ViewGroup类型)设为不隐藏时,竟然没有完全隐藏,还会显示部分,需要再点击页面获取焦点才隐藏,第一次碰到这样的问题,不理解,换了手机试试,小米不会出现,华为、5X、三星都有,开始怀疑会不会跟有动画有关,尝试了postInvalidate和postInvalidateDelayed都不行,因为点击重新获取焦点可以完全隐藏,就在设置隐藏后获取某个控件焦点requestFocusFromTouch,临时解决问题。
但后来测试也发现了类型的问题,都是比较隐藏的功能,所以没有很快暴露出来,有几个页面都出现了。怀疑是整个应用受影响,开始对比是哪个版本开始的,对比发现,是最近几个版本出现的。对比代码,主题、打包配置都没变化,唯一影响全局的就只有硬件加速关闭了。去掉应用级别的关闭硬件加速后,问题完美解决。
另外,测试也发现了在关闭硬件加速的版本上,PtrFrameLayout嵌套WebView的滚动也有体验问题,轻轻的滑动可能会回弹,滑动不顺畅。也是硬件加速关闭后引起的。
解决:应用级别不加硬件加速配置,对有问题的页面禁止硬件加速。
android硬件加速器及其问题小结:
https://blog.youkuaiyun.com/maybe_windleave/article/details/8946368
Android硬件加速 问题和错误:
https://blog.youkuaiyun.com/growing_tree/article/details/19974851