SurfaceView和普通View的区别、以及TextureView
SurfaceView和普通View的区别、以及TextureView
SurfaceView和普通View的区别
首先,SurfaceView是在一个新开的子线程中可以重新绘制画面,而view必须在UI的主线程中更新画面。
出现 SurfaceView 的原因在于:虽然说通常情况下 View 已经可以满足大部分的绘图需求,但还是有缺陷,View 是通过刷新来重绘视图的,Android 系统通过发出 VSYNC 信号来进行屏幕的重绘,刷新的时间间隔是16ms,果在 16ms 内刷新完成的话是没有什么影响的,但是如果刷新的时候执行的操作逻辑太多,那么会出现卡顿的现象,将无法响应按键、触屏等消息。SurfaceView 就是解决这个问题的,使用SurfaceView由于是在子线程中更新画面所以不会阻塞UI主线程,但这也带来了另一个问题,就是事件同步,比如触屏了一下,需要在SurfaceView中的thread处理,一般就需要有一个event queue的设计来保存touchevent,这会稍稍复杂一点,因为涉及到线程安全。
View 主要用于主动更新的情况下,而 SurfaceView 主要用于被动更新,例如频繁的刷新;
View 在主线程中对画面进行更新,而 SurfaceView 通常会通过一个子线程来进行更新;
View 在绘图的时候是没有使用双缓冲机制的,而 SurfaceView 在底层实现中使用了双缓冲机制;
参考
Android自定义View之双缓冲机制和SurfaceView
SurfaceView和TextureView的区别
菜甜二的学习笔记and总结啊。。。总会遇到挫折,可是还是要保持开阔的心态才能开心的学习啊,坚持吧。