SurfaceView理解

1、SurfaceView的作用

大多数情况下我们的自定义View都会选择去继承View或ViewGroup来实现,但是为什么系统还要为我们提供一个SurfaceView呢?
首先我们知道View类如果需要更新视图,必须我们主动的去调用invalidate()或者postInvalidate()方法来再走一次onDraw()完成更新。但是呢,Android系统规定屏幕的刷新间隔为16ms,如果这个View在16ms内更新完毕了,就不会卡顿,但是如果逻辑操作太多,16ms内没有更新完毕,剩下的操作就会丢到下一个16ms里去完成,这样就会造成UI线程的阻塞,造成View的运动过程掉帧,自然就会卡顿了。
所以这些原因也就促使了SurfaceView的存在。毕竟,如果是一个游戏,它有可能相当频繁的有更新画面的需求。

2、SurfaceView的优点

1、SurfaceView的刷新处于主动,有利于频繁的更新画面。
2、SurfaceView的绘制在子线程进行,避免了UI线程的阻塞。
3、SurfaceView在底层实现了一个双缓冲机制,效率大大提升。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章