SurfaceView雙緩衝機制
阿新 • • 發佈:2018-11-13
什麼是緩衝?
在我們的介面中圖形都是在畫布上繪製出來的,所以這個繪製的過程就叫緩衝,而畫布也就可以稱作緩衝區。
緩衝的種類:
無緩衝:不使用畫布的情況下直接在視窗上進行繪圖就叫做無緩衝繪圖。
單緩衝:用了一個畫布,將所有的內容先繪製到畫布上,再整體繪製到視窗,這個就叫做單緩衝繪圖。
雙緩衝:用了兩個畫布,一個進行臨時的繪圖,一個進行最終的繪圖,這樣的就叫做雙緩衝繪圖。
surfaceView緩衝和View緩衝的區別:
surfaceView:通過 surfaceHolder.lockCanvas 鎖定畫布,實現下一張圖片的繪製,再通過另外的執行緒重新整理介面,繪製圖片。
View:直接在ondraw裡繪製圖片,重新整理介面。
ps:其實view也能實現雙緩衝,我們可以在另一個ondraw裡繪製下一張bitmap,或者另開一個執行緒去處理繪圖以外的操作,從而實現view的雙緩衝。
surfaceView為什麼比view好用?
View是在UI主執行緒中進行繪製的,繪製時會阻塞主執行緒,如果onTouch處理的事件比較多的話會導致介面卡頓。而surfaceView是另開了一個執行緒繪製的,再加上雙緩衝機制,所以要比view高效並且介面不會卡頓。