深入Android架构(从线程到AIDL)_17 SurfaceView的UI多线程01
1、 View与SurfaceView 之区别
- SurfaceView是View的子类,其内嵌了一个用来绘制的Surface。
- 当SurfaceView成为可见时,就会诞生Surface;反之当SurfaceView被隐藏时,就会删除Surface,以便节省资源。
- 程序里可以控制Surface的大小,SurfaceView可控制Surface的绘图位置。
- View组件是由UI 线程(主线程所执行)。如果需要去迅速更新UI画面或者UI画图需要较长时间(避免阻塞主线程),就使用SurfaceView。
- 它可以由背景线程(background thead)来执行,而View只能由UI(主)线程执行。这SurfaceView内含高效率的rendering机制,能让背景线程快速更新surface的内容,适合演示动画(animation)。
- 在程序里,可以通过SurfaceHolder接口来处理Surface,只要调用getHolder()函数就可以取得此接口。
- 当SurfaceView成为可见时,就会诞生Surface;反之当SurfaceView被隐藏时,就会删除Surface,以便节省资源。当Surface诞生和删除时,框架互调用SurfaceCreated()和 SurfaceDestroyed()函数。