Android基础-秒懂SurfaceView的双缓冲机制

最近在重温Android的一些基础知识,看到SurfaceView的原理中有用到双缓冲机制,那么接下来我将带领大家学习什么是双缓冲模式。

什么是双缓冲模式?

通俗来讲就是有两个缓冲区,一个后台缓冲区和一个前台缓冲区,每次后台缓冲区接受数据,当填充完整后交换给前台缓冲,这样就保证了前台缓冲里的数据都是完整的。

双缓冲模式常用来做帧缓冲区交换。我们几乎可以在任何一个图形API中找到双缓冲模式的应用。如OpenGl中的 swapBuffers() 函数,Android中SurfaceView双缓冲机制。

那么SurfaceView中的双缓冲机制是什么样子呢?

看下图:

Android基础-秒懂SurfaceView的双缓冲机制

可以看出来SurfaceView的双缓冲机制还是稍有不同,前/后台缓冲区交替成为后/前台缓冲区。同时需要注意每次在绘制的时候都需要清除Canvas画布,不然会出现画面叠加的现象。

那么这样有什么好处呢?
1. 提高渲染效率
2. 可以避免刷新频率过高而出现的闪烁现象