關(guān)于為什么使用SurfaceView,我感覺說的太牽強(qiáng)了,和網(wǎng)上的資料基本都是一個(gè)說法,個(gè)人認(rèn)為,關(guān)于為什么使用SurfaceView主要有兩點(diǎn):
一是,如果屏幕刷新頻繁,onDraw方法會(huì)被頻繁的調(diào)用,onDraw方法執(zhí)行的時(shí)間過長(zhǎng),會(huì)導(dǎo)致掉幀,出現(xiàn)頁(yè)面卡頓。而SurfaceView采用了雙緩沖技術(shù),提高了繪制的速度,可以緩解這一現(xiàn)象。
二是,view的onDraw方法是運(yùn)行在主線程中的,會(huì)輕微阻塞主線程,對(duì)于需要頻繁刷新頁(yè)面的場(chǎng)景,而且onDraw方法中執(zhí)行的操作比較耗時(shí),會(huì)導(dǎo)致主線程阻塞,用戶事件的響應(yīng)受到影響,也就是響應(yīng)速度下降,影響了用戶的體驗(yàn)。而SurfaceView可以在自線程中更新UI,不會(huì)阻塞主線程,提高了響應(yīng)速度。
我認(rèn)為第二點(diǎn),才是為什么使用SurfaceView的主要原因,個(gè)人見解,網(wǎng)上的資料,太千篇一律了。
thinkerzhangyan 評(píng)論自Android中的SurfaceView詳解