1. 程式人生 > >SurfaceView雙緩衝機制

SurfaceView雙緩衝機制

什麼是緩衝?

在我們的介面中圖形都是在畫布上繪製出來的,所以這個繪製的過程就叫緩衝,而畫布也就可以稱作緩衝區。

緩衝的種類:

無緩衝:不使用畫布的情況下直接在視窗上進行繪圖就叫做無緩衝繪圖。

單緩衝:用了一個畫布,將所有的內容先繪製到畫布上,再整體繪製到視窗,這個就叫做單緩衝繪圖。

雙緩衝:用了兩個畫布,一個進行臨時的繪圖,一個進行最終的繪圖,這樣的就叫做雙緩衝繪圖。

surfaceView緩衝和View緩衝的區別:

surfaceView:通過 surfaceHolder.lockCanvas 鎖定畫布,實現下一張圖片的繪製,再通過另外的執行緒重新整理介面,繪製圖片。

View:直接在ondraw裡繪製圖片,重新整理介面。

ps:其實view也能實現雙緩衝,我們可以在另一個ondraw裡繪製下一張bitmap,或者另開一個執行緒去處理繪圖以外的操作,從而實現view的雙緩衝。

surfaceView為什麼比view好用?

View是在UI主執行緒中進行繪製的,繪製時會阻塞主執行緒,如果onTouch處理的事件比較多的話會導致介面卡頓。而surfaceView是另開了一個執行緒繪製的,再加上雙緩衝機制,所以要比view高效並且介面不會卡頓。

 

以上就是我對雙緩衝機制的理解如果有不足的地方歡迎各位大佬指導~