android 性能优化 总结

16毫秒原则:

Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染,如果每次渲染都成功,这样就能够达到流畅的画面所需要的60fps,为了能够实现60fps,这意味着程序的大多数操作都必须在16ms内完成。

超过16ms 就会出现丢针的情况,因为他要在下一个信号量开始进行绘制

http://hukai.me/images/vsync_over_draw.png

12fps大概类似手动快速翻动书籍的帧率,这明显是可以感知到不够顺滑的。24fps使得人眼感知的是连续线性的运动,这其实是归功于运动模糊的效果。24fps是电影胶圈通常使用的帧率,因为这个帧率已经足够支撑大部分电影画面需要表达的内容,同时能够最大的减少费用支出。但是低于30fps是无法顺畅表现绚丽的画面内容的,此时就需要用到60fps来达到想要的效果,当然超过60fps是没有必要的。

卡顿常见的原因:

1,卡顿 ui线程去做 耗时的操作,开启子线程然后用handler 的机制去通知主线程更新。

2,layout层级太高。j

3,view的过度绘制。Show GPU Overdraw 打开过度绘制图。蓝色,淡绿,淡红,深红

https://blog.csdn.net/sheng2459704496/article/details/52044867

Profile GPU Rendering

On screen as bars的选项 显示条形图模式

背景问题

4,频繁的触发  view的measure 和layout操作。

5,频繁的触发gc操作  gc每次进行垃圾回收的时候线程都暂停。

 

 

 

图像绘制流程:

Resterization栅格化是绘制那些Button,Shape,Path,String,Bitmap等组件最基础的操作。它把那些组件拆分到不同的像素上进行显示。这是一个很费时的操作,GPU的引入就是为了加快栅格化的操作。

 

http://hukai.me/images/gpu_cpu_rasterization.png

 

内存泄漏问题:

java 中的内存环境,

1.对象的引用

堆:对象,还有每个方法的变量

方法区,所有的静态变量,

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值