性能优化之UI重绘卡顿"/>
Android性能优化之UI重绘卡顿
UI离不开我们的工作,一个好的布局展示给人一种耳目一新的感觉,但是如果重复嵌套就会给人一种很槽糕的感觉。
为了避免这种糟糕的局面出面,我们就需要好好的了解你要实现的UI界面,明白是什么原因造成的,就可以避免这种情况的出现。
- 界面重绘严重
再次首先要介绍一个词:
FPS:即表示每秒传递的帧数。理想情况下,60 FPS 就感觉不到卡顿,意味着每个绘制时长应该在16ms 以内,如果超过这个时间,就会出现丢帧现象(多出现在复杂的动画上边)。
关于View的绘制流程:Measure、Layout、Draw
出现以及解决方案:
- view层级相同的情况下,尽量使用LinerLayout而不是RelativeLayout,因为RelativeLayout在测量的时候会测量二次,而LinerLayout测量一次,具体看源码。
- 绘制UI时,尽量减少绘制UI层次,减少不必要的view嵌套。
- 使用RelativeLayout 和 LinerLayout时,合理使用Merge,可以避免自己的布局和系统的布局重叠造成重复计算(measure和layout)。
- 提高显示速度,使用ViewStub,加载的时候才会占用。不加载的时候就是隐藏的,仅仅占用位置。
- 删除控件中无用的属性。
- View的复用。
- 不要在ui主线程进行耗时的操作。
重绘有时候不是很好的发现,尤其不是自己写的代码,这种时候我们就需要使用工具。
这种工具一般手机自带,首先打开手机的开发者选项:
- 在您的设备上,转到 Settings 并点按 Developer Options。
- 向下滚动到 Hardware accelerated rendering 部分,并选择 Debug GPU Overdraw。
- 在 Debug GPU overdraw 对话框中,选择 Show overdraw areas
打开显示重绘区域,就可以看到手机的UI界面重绘的部分了。
看一张图片就明白重绘的情况!
原色:没有过度绘制
蓝色:1 次过度绘制
绿色:2 次过度绘制
粉色:3 次过度绘制
红色:4 次及以上过度绘制
更多情况请参考官网之检查 GPU 渲染速度和绘制过度
参考:
Android 性能优化之减少UI过度绘制
Android性能全面分析与优化方案研究—几乎是史上最全最实用的
android APP性能优化总结
更多推荐
Android性能优化之UI重绘卡顿
发布评论