SurfaceView与View的区别

Android系统提供了View进行绘图处理,View可以满足大部分的绘图需求,但是在某些时候,却也是心有力而力不足,我们知道View通过刷新来进行重绘图,Android系统通过发出VSYNC信号来进行屏幕的重绘,刷新的时间为16ms,如果子啊16ms内view完成了你所要执行的所有操作,那么用户在视觉上就不会产生卡顿的感觉,而如果执行的操作逻辑过多,特别是需要频繁刷新的街面上,例如游戏界面,那么就会不断的阻塞主线程,从而导致画面卡顿。很多时候会在Log中看到“skipped xxx frames!The application may be doing too much”这句警告。

为了避免这一问题的产生,Android提供了SurfaceView组件来解决这一个问题,SurfaceView可以说是View的孪生兄弟,但是还是与View有所不同。主要在以下的几点:

1.View主要适用于主动更新的情况,而SurfaceView主要适用于被动更新,例如频繁的刷新。

2.View在主线程中队画面进行刷新,而SurfaceView通常会通过一个子线程来进行页面的刷新。

3.View在绘图时没有双缓冲机制,而SurfaceView在底层实现机制上已经实现了双缓冲机制。

总之,如果要是自定义view需要尽心频繁的刷新,或者是刷新数据处理量比较大的,那么就要考虑使用SurfaceView来替代View.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值