View的视图优化

基本原理:

渲染机制

android的刷新频率是60fps,也就是说要在16ms内完成一次刷新,如果超时刷新,那么就容易看到卡顿的画像,也是丢帧的现象。如果刷新时间短,那么我们就可以看到一个非常流畅的动画,Android系统每16m会向渲染硬件发出VSYNC命令让其渲染,

VSYNC有两个概念:

第一:刷新频率,指的是硬件定义的刷新频率,由硬件参数决定,

第二:GPU每秒绘制的频率,比如60,

如果GPU的频率大于硬件的刷新频率,那么能保证每次刷新都是新数据,如果小于,没那就会出现数据没有刷新,丢帧的现象。

渲染的流程

渲染是有CPU执行生成Texture纹理和Polygons,然后把这些数据交给GPU进行栅格化处理,最后把数据传递给显示器。

渲染优化

第一:内存优化:

出现的问题有:在一个16ms内,由于引发GC次数过多,导致没有完成刷新,导致最后的卡顿现象。那么需要解决内存的优化。优化思路是减少GC次数,那么就要节省内存开销以及及时释放内存。节省内存开销:减少不必要的对象重复创建(循环内部创建对象,使用String进行+操作),减少内存泄漏,增加对象复用。

第二:CPU优化:

如果CPU过多的执行一些操作,导致没有CPU及时生成纹理数据交给GPU处理,那么也会导致源头数据得不到更新,那么CPU优化也很重要,优化思路是:减少CPU空转时间。那么回归操作系统,我们的方法有:使用多线程处理,使用缓存和批处理,优化耗时的算法。对于android来说,需要CPU执行的操作有视图的测量,创建,回收操作,那么我们就需要减少不必要的视图创建工作,那么我们要减少试图嵌套层级,减少重绘,减少Gone的操作导致的重新测量操作。我们的方案有:merge方法减少层级,ViewStub延缓试图加载,

第三:GPU优化:

同样是卡顿现象,GPU主要的工作是栅格化处理,那么减少重绘对GPU来说就显得非常重要。减少重绘就是我们重要的优化方案,解决方案有;对于背景色减少层级设置,自定义的空间要用clipRect方法减少绘制,

 

转载于:https://my.oschina.net/u/195533/blog/898893

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值