对android中的surfaceview的困惑,双缓冲区该怎么理解

2025-04-28 23:25:33
推荐回答(1个)
回答1:

很多人对SurfaceView的双缓冲理解并不对。
一般游戏里说的双缓冲防止画面闪烁,只是每一帧先绘制到bitmap再绘制到SurfaceView的canvas。
而框架中的Surface的双缓冲是另一个概念。 事实上不管是View还是SurfaceView都会使用到Surface双缓冲技术,在4.1以后更是引入了三缓冲。

楼主看到的画面实际上就是Surface的三缓冲造成的。使用SurfaceView每次lockCanvas获取到的画布都是1,2,3个画布轮流切换。
Surface的多缓冲是系统可以指定的, 4.1以前默认是2个,4.2以后默认是3个,厂商可以修改,最多可以使用32个缓冲区。