最近在重溫Android的一些基礎(chǔ)知識,看到SurfaceView的原理中有用到雙緩沖機制,那么接下來我將帶領(lǐng)大家學(xué)習什么是雙緩沖模式。
什么是雙緩沖模式?
通俗來講就是有兩個緩沖區(qū),一個后臺緩沖區(qū)和一個前臺緩沖區(qū),每次后臺緩沖區(qū)接受數(shù)據(jù),當填充完整后交換給前臺緩沖,這樣就保證了前臺緩沖里的數(shù)據(jù)都是完整的。
雙緩沖模式常用來做幀緩沖區(qū)交換。我們幾乎可以在任何一個圖形API中找到雙緩沖模式的應(yīng)用。如OpenGl中的 swapBuffers() 函數(shù),Android中SurfaceView雙緩沖機制。
那么SurfaceView中的雙緩沖機制是什么樣子呢?
看下圖:
SurfaceView雙緩沖區(qū)機制
可以看出來SurfaceView的雙緩沖機制還是稍有不同,前/后臺緩沖區(qū)交替成為后/前臺緩沖區(qū)。同時需要注意每次在繪制的時候都需要清除Canvas畫布,不然會出現(xiàn)畫面疊加的現(xiàn)象。
那么這樣有什么好處呢?
- 提高渲染效率
- 可以避免刷新頻率過高而出現(xiàn)的閃爍現(xiàn)象