说说原文:深夜调bug,终于被我找到导致界面UI卡顿的问题,原来是硬件加速所导致的,不知道什么鬼,竟然在主界面设置了android:hardwareAccelerated="false",排查了几天,从UI渲染,到代码逻辑全翻了遍,先是以为是动态计算控件大小导致的问题,再后来以为是增加了侧边栏导致的问题,再后来以为是UI线程被阻塞,然后把数据库查询操作全扔子线程,无论怎么改UI还是卡顿,各种工具轮流上阵都没有找到问题所在,我都开始怀疑人生,怀疑自己能力,直到今晚在重构代码的时候,才发现有一条很诡异的配置,把它去掉之后,整个app都好了,不辜负我难得熬夜调代码。不说了,这个周六不用去加班了.
Android的2D显示管道被被设计得更加支持硬加速了.硬加速使用GPU承担了所有在View的canvas上执行的绘制操作. 启用硬加速最简单的的方法是对整个应用启用硬件速.如果你的应用只使用标准的view和Drawable,全局启用硬加速将不会带来任何负面影响.然而,因为硬加速不是被所有的2D绘制所支持,所以启用它时可能对你的自定义绘制产生影响.出现的问题经常是不可见的,也可能是异常,或错误地显示了像素.为了避免这些问题,Android提供了在以下各级别上启用或禁止硬加速的能力:ApplicationActivityWindowView 如果你的应用使用了自定义绘制,需要在真实的设备上启用硬加速进行测试来找出问题.