最近接了一个新 bug,说是开机的时候会闪一下黑屏才进入主页。乖乖,闪黑屏耶,一听就不简单,于是我各种学习,查找资料。发现,好像没什么用,只能自己层层debug了。
于是发现,好家伙,是它,罪魁祸首是它
就是在这里造成的黑屏,view的绘制被拦截了,于是我就把FALSE改成TRUE,你猜怎么着,嘿嘿,好了。
本来以为事情就这么简单的解决了,但是后面发现adb reboot会概率性闪黑屏,测试也说还是会闪黑屏。没办法,还得再看看,再分析分析。
于是又通过层层debug,发现
inflate的时候会卡住,耗费很多时间,我估摸着这估计就是黑屏的原因,inflate的时候进行xml的解析,io操作,对机器的性能要求比较高,但凡配置不好的机器,那不是分分钟解析过久卡住黑屏吗。
硬件不好,软件来解,于是我又学习查找资料,什么AsyncLayoutInflater啊,发现统统不行,搞进去不是编译报错就是运行报错。
后面又是层层debug,最终发现了,卡在这里!
没错,就是这个 search box,inflate的时间老久了,于是对它进行改造,
直接就是 ViewStub 安排上,延迟加载,不要影响Launcher3的oncreate。那么到这里问题就解完了,adb reboot十次完全不闪黑屏,简直很nice。你学费了吗?