說說原文:深夜調bug,終于被我找到導致界面UI卡頓的問題,原來是硬件加速所導致的,不知道什么鬼,竟然在主界面設置了android:hardwareAccelerated="false",排查了幾天,從UI渲染,到代碼邏輯全翻了遍,先是以為是動態計算控件大小導致的問題,再后來以為是增加了側邊欄導致的問題,再后來以為是UI線程被阻塞,然后把數據庫查詢操作全扔子線程,無論怎么改UI還是卡頓,各種工具輪流上陣都沒有找到問題所在,我都開始懷疑人生,懷疑自己能力,直到今晚在重構代碼的時候,才發現有一條很詭異的配置,把它去掉之后,整個app都好了,不辜負我難得熬夜調代碼。不說了,這個周六不用去加班了.
Android的2D顯示管道被被設計得更加支持硬加速了.硬加速使用GPU承擔了所有在View的canvas上執行的繪制操作. 啟用硬加速最簡單的的方法是對整個應用啟用硬件速.如果你的應用只使用標準的view和Drawable,全局啟用硬加速將不會帶來任何負面影響.然而,因為硬加速不是被所有的2D繪制所支持,所以啟用它時可能對你的自定義繪制產生影響.出現的問題經常是不可見的,也可能是異常,或錯誤地顯示了像素.為了避免這些問題,Android提供了在以下各級別上啟用或禁止硬加速的能力:ApplicationActivityWindowView 如果你的應用使用了自定義繪制,需要在真實的設備上啟用硬加速進行測試來找出問題.