SurfaceView与View的区别

来源:互联网 发布:mysql免费可视化工具 编辑:程序博客网 时间:2024/05/13 05:37

1.为什么提出SurfaceView?

Android系统提供了View进行绘图处理,那么为什么还要提出SurfaceView呢?因为Android系统通过发出VSYNC信号来进行屏幕的重绘,刷新时间间隔为16ms。如果View在16ms内完成绘图的逻辑,那么用户在视觉上就不会出现卡顿感觉;反之如果执行逻辑繁琐,需要频繁刷新页面,例如:游戏界面,那么就会不断阻塞主线程,从而导致画面卡顿。在自定义Log中经常会出现警告:"Skipped 47 frames! The application may be doing too much work on its main thread"为了避免这一问题产生,Android系统提供了SurfaceView组件来解决这个问题。

2.SurfaceView与View的区别?

  View适用于主动更新,SurfaceView适用于被动更新,例如频繁更新

  Viwe在主线程中对画面更新,而SurfaceView 通常会通过子线程来刷新

  View在绘图过程中没采用双缓冲机制,而SurfaceView在底层就实现了双缓冲机制

总结一句话:如果你自定义View需要频繁更新,进行繁琐的绘图逻辑,刷新时处理数据量大,都可以考虑使用SurfaceView替代

3.自定义SurfaceView模版







0 0
原创粉丝点击