为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第14天 Android UI 卡顿面试问题讲解

标签:
Android

课程名称BAT大牛亲授技能+技巧 Android面试快速充电升级
课程章节:Android基础相关面试问题
主讲老师DocMike

课程内容

人们眼睛所能感觉到最大帧数就是60帧,高于60帧以上人们的视觉无法感觉,但是低于60fps时用户能够感觉到不顺畅,也就是有些卡顿,所以说16ms就是每一次渲染的最大时间。为了保证UI的流畅性,程序的大多操作都需要在16ms内完成。

Android 系统也会每隔16ms发出信号,进行UI的渲染,如果每次渲染都成功,则用户就可以看到流畅的画面。

UI 卡顿原因分析

  1. 人为在 UI 线程中做轻微耗时的操作,导致 UI 线程卡顿;
  2. 布局 Layout 过于复杂,无法在 16ms 内完成渲染;
  3. 同一时间动画执行的次数过多,导致 CPU 或 GPU 负载过重;
  4. View 过渡绘制,导致某些像素在同一帧时间内被绘制多次,从而使 CPU 或 GPU 负载过重;
  5. View 频繁的触发 measure()、layout()、导致 measure、layout 累计耗时过多,以及整个 View 频繁的重新渲染;
  6. 内存频繁触发 GC 过多,造成内存抖动,导致暂时阻塞渲染操作;
  7. 冗余资源及逻辑等导致加载和执行缓慢;
  8. ANR

UI 卡顿总结

  1. 布局优化,避免 layout 嵌套过多;尽量使用 View.GONE 代替 View.INVISIBLE,因为 View.INVISIBLE 虽然不可见,但是也是要完成 measure 和 layout 的过程;合理使用 merge 标签,在布局很复杂的时候可以考虑使用自定义控件。
  2. 列表及 Adapter 优化,主要体现在 ListView 和 RecyclerView,尽量复用 Item,而不是每次都去填充渲染,在滑动的时候避免加载图片等。
  3. 背景和图片等内存分配优化,避免对一个像素点进行多次的渲染,在开发阶段,可以通过开发选项中的过渡绘制功能查看,级别按照从高到底的顺序依次是红黄绿蓝。
  4. 避免 ANR,避免在主线程中做耗时的操作。

课程收获

这一节介绍了造成 UI 卡顿的原因,app 的卡顿直接影响用户的体验,在实际的开发场景中,面对可能造成卡顿的问题可能会更复杂。UI 卡顿的根本原因就是 UI 线程无法在 16ms 内完成 UI 的绘制,可以借助一些三方的监测工具,辅助我们来排查问题。

图片描述
图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
11
获赞与收藏
16

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消