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在底層實現了一個雙緩衝機制,效率大大提升。

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