Android性能优化之UI重绘卡顿

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性能优化总结

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android系统性能优化对于解决卡顿、提升稳定性和优化续航方面起着重要的作用。 首先,在解决卡顿问题上,开发人员需要关注应用程序的UI线程。为了确保应用程序的流畅运行,可以采用以下优化措施:优化布局文件,减少层级嵌套;使用异步加载图片,避免在主线程中进行网络请求等耗时操作;合理利用缓存机制,避免重复加载数据。此外,还可以针对卡顿问题进行性能分析,通过工具查找耗时操作,并进行相应的优化。 其次,在提高系统稳定性方面,开发人员需要考虑异常崩溃的处理和内存管理。异常崩溃处理可通过捕获并记录崩溃异常来及时解决问题和改进代码。内存管理方面,应避免内存泄漏和过度分配内存,使用系统提供的工具来进行内存管理和优化。 最后,在续航优化上,需要考虑电源管理和资源使用的合理分配。通过使用省电模式、灵活控制后台任务和限制应用程序在后台运行等方式,最大程度地延长设备的电池寿命。另外,合理管理资源,避免过度使用CPU、网络和图形渲染等资源,有助于降低能耗并优化系统续航。 总之,Android系统性能优化是一个综合性的工作,需要开发人员关注卡顿问题、提升稳定性和优化续航方面的问题。通过合理使用工具和采取相应的优化措施,可以实现系统性能的有效提升。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值