为了账号安全,请及时绑定邮箱和手机立即绑定
首页 手记 【九月打卡】第14天 Android UI 卡顿面试问题讲解

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

2022.09.18 21:55 367浏览

课程名称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 的绘制,可以借助一些三方的监测工具,辅助我们来排查问题。

图片描述
图片描述

点击查看更多内容
0人点赞

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

评论

作者其他优质文章

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

关注TA,一起探索更多经验知识

同主题相似文章浏览排行榜

风间影月说签约讲师

50篇手记,涉及Java、MySQL、Redis、Spring等方向

进入讨论

Tony Bai 说签约讲师

146篇手记,涉及Go、C、Java、Python等方向

进入讨论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消