Android性能优化之UI重绘卡顿

本文深入探讨了UI性能优化的关键——减少界面重绘与过度绘制。通过理解FPS、View的绘制流程及工具使用,文章提供了具体策略,如使用LinearLayout代替RelativeLayout、减少view嵌套、利用ViewStub等,帮助开发者提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UI离不开我们的工作,一个好的布局展示给人一种耳目一新的感觉,但是如果重复嵌套就会给人一种很槽糕的感觉。
为了避免这种糟糕的局面出面,我们就需要好好的了解你要实现的UI界面,明白是什么原因造成的,就可以避免这种情况的出现。

  1. 界面重绘严重

再次首先要介绍一个词:
FPS:即表示每秒传递的帧数。理想情况下,60 FPS 就感觉不到卡顿,意味着每个绘制时长应该在16ms 以内,如果超过这个时间,就会出现丢帧现象(多出现在复杂的动画上边)。

关于View的绘制流程:Measure、Layout、Draw

出现以及解决方案:

  1. view层级相同的情况下,尽量使用LinerLayout而不是RelativeLayout,因为RelativeLayout在测量的时候会测量二次,而LinerLayout测量一次,具体看源码。
  2. 绘制UI时,尽量减少绘制UI层次,减少不必要的view嵌套。
  3. 使用RelativeLayout 和 LinerLayout时,合理使用Merge,可以避免自己的布局和系统的布局重叠造成重复计算(measure和layout)。
  4. 提高显示速度,使用ViewStub,加载的时候才会占用。不加载的时候就是隐藏的,仅仅占用位置。
  5. 删除控件中无用的属性。
  6. View的复用。
  7. 不要在ui主线程进行耗时的操作。

重绘有时候不是很好的发现,尤其不是自己写的代码,这种时候我们就需要使用工具。
这种工具一般手机自带,首先打开手机的开发者选项:

  1. 在您的设备上,转到 Settings 并点按 Developer Options。
  2. 向下滚动到 Hardware accelerated rendering 部分,并选择 Debug GPU Overdraw。
  3. 在 Debug GPU overdraw 对话框中,选择 Show overdraw areas
    在这里插入图片描述

在这里插入图片描述
打开显示重绘区域,就可以看到手机的UI界面重绘的部分了。
看一张图片就明白重绘的情况!
在这里插入图片描述

原色:没有过度绘制
蓝色:1 次过度绘制
绿色:2 次过度绘制
粉色:3 次过度绘制
红色:4 次及以上过度绘制

更多情况请参考官网之检查 GPU 渲染速度和绘制过度

参考:
Android 性能优化之减少UI过度绘制
Android性能全面分析与优化方案研究—几乎是史上最全最实用的
android APP性能优化总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值