亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【九月打卡】第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 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
移動開發工程師
手記
粉絲
12
獲贊與收藏
17

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消