說說原文:深夜調(diào)bug,終于被我找到導(dǎo)致界面UI卡頓的問題趣斤,原來是硬件加速所導(dǎo)致的,不知道什么鬼,竟然在主界面設(shè)置了android:hardwareAccelerated="false"憨栽,排查了幾天,從UI渲染,到代碼邏輯全翻了遍屑柔,先是以為是動態(tài)計算控件大小導(dǎo)致的問題屡萤,再后來以為是增加了側(cè)邊欄導(dǎo)致的問題,再后來以為是UI線程被阻塞掸宛,然后把數(shù)據(jù)庫查詢操作全扔子線程死陆,無論怎么改UI還是卡頓,各種工具輪流上陣都沒有找到問題所在唧瘾,我都開始懷疑人生措译,懷疑自己能力,直到今晚在重構(gòu)代碼的時候饰序,才發(fā)現(xiàn)有一條很詭異的配置领虹,把它去掉之后,整個app都好了求豫,不辜負(fù)我難得熬夜調(diào)代碼塌衰。不說了,這個周六不用去加班了.
Android的2D顯示管道被被設(shè)計得更加支持硬加速了.硬加速使用GPU承擔(dān)了所有在View的canvas上執(zhí)行的繪制操作. 啟用硬加速最簡單的的方法是對整個應(yīng)用啟用硬件速.如果你的應(yīng)用只使用標(biāo)準(zhǔn)的view和Drawable蝠嘉,全局啟用硬加速將不會帶來任何負(fù)面影響.然而最疆,因為硬加速不是被所有的2D繪制所支持,所以啟用它時可能對你的自定義繪制產(chǎn)生影響.出現(xiàn)的問題經(jīng)常是不可見的蚤告,也可能是異常努酸,或錯誤地顯示了像素.為了避免這些問題,Android提供了在以下各級別上啟用或禁止硬加速的能力:ApplicationActivityWindowView 如果你的應(yīng)用使用了自定義繪制杜恰,需要在真實的設(shè)備上啟用硬加速進(jìn)行測試來找出問題.