绝大部分APP的设计中,都是提供界面与用户进行交互通信,如何保证页面流畅不卡顿也成为我们需要关注的重点,本篇将介绍如何针对布局进行优化。

1.捕获定位界面是否存在卡顿掉帧的情况

1.1 打开Android Device Monitor工具

1.2 设置要捕获的信息

1.3 捕获信息

点击OK后在手机上进行操作,期间的操作过程信息将被记录,捕获时间结束后自动保存到trace.html文件中。此处我的操作是捕获进入一个消息界面过程的情况。

2.分析trace.html文件

2.1 使用Google Chrome 打开生成的文件,具体信息如下

可以通过W(放大)S(缩小)A(左移)D(右移)进行操作。

横坐标是以时间为单位,纵坐标是以进程-线程的方式来划分,同一进程的线程为一组放在一起。

2.2 帧信息

一般情况下,在60hz频率中完成一帧的绘制工作需要控制在16.6ms内,绿色图标代表此帧能在16.6ms正常完成绘制工作,而黄色和红色图标表示此帧并未能在16.6ms完成绘制工作,导致掉帧情况,红色代表掉帧情况严重,需要我们去优化处理。

2.3 线程信息

通过线程信息可以方便我们查看某个时刻的线程状态,四种颜色分别对应四种不同的线程状态:

2.4 分析具体信息

选取一个红色标志放大信息可以查看到measure过程所耗时间比较多,点击measure区域可以查看详细信息。初步猜想可能是界面层级过多造成。

Description给出具体优化建议

2.5 使用Hierarchy View查看Tree View 情况

可以看出确实有部分分支层级过深,此外可以借助手机自带的GPU过度渲染功能定位到具体的控件。

3.0 优化措施

1.减少页面布局嵌套,优先采用ConstraintLayout。

2.自定义View时尽可能减少过度绘制。

3.合理采用include、merge、viewstub。

对页面层级进行优化后的效果如下:

Android优化篇之布局优化相关推荐

  1. 顺风车Android性能优化之View布局优化

    一.问题背景 在开发过程中,往往会听到 "性能优化" 这个概念,这个概念很大,比如网络性能优化.耗电量优化等等,对 RD 而言,最容易做的或者是影响最大的,应该是 View 的性能 ...

  2. Android优化五:布局优化

    1.减少布局层级 Google在API文档中建议View树的高度不宜超过10层. 以前我们用Eclipse写代码时,自动生成的模板是以LinearLayout为根节点的,但是后面变成了Relative ...

  3. Android性能优化系列之布局优化,Android程序员校招蚂蚁金服

    25 26 rInflate方法关键代码 void rInflate(XmlPullParser parser, View parent, Context context, AttributeSet ...

  4. MySQL优化篇:SQL优化流程

    MySQL中SQL优化流程 SQL优化流程如下: 慢查询的开启并捕获 explain+慢SQL分析 show profile查询SQL在MySQL服务器里面的执行细节和生命周期情况 SQL数据库服务器 ...

  5. C++ 性能优化篇一《优化概述》

    1.1 优化是软件开发的一部分 优化是一项编码活动.在传统的软件开发过程中,直到编码完成,项目进入了集成与测试 阶段,能够观察到程序整体的性能时,才会进行优化.而在敏捷开发方式中,当一个带有 性能指标 ...

  6. 大数据开发之Hive优化篇8-Hive Job优化

    备注: Hive 版本 2.1.1 文章目录 Hive job优化概述 一.并行执行 二.本地执行 三.合并输入小文件 四.合并输出小文件 五.控制Map/Reduce数 5.1 控制Hive job ...

  7. Android 布局优化

    在开发过程中我们经常说性能优化,但性能优化是一个比较宽泛的概念.在Android开发中性能优化可能包括:Java代码优化, 算法优化, SQLite优化, 布局优化等.那么这篇博客就来总结并分享下An ...

  8. 深入探索Android布局优化(上)

    前言 成为一名优秀的Android开发,需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样~. Android的绘制优化其实可以分为两个部分,即布局(UI)优化和卡顿优化,而布局优化的核心 ...

  9. android布局优化方案,Android启动优化-布局优化

    Android启动优化-布局优化 安卓应用开发发展到今天,已经成为一个非常成熟的技术方向,从目前的情况看,安卓开发还是一个热火朝天的发展,但高级人才却相对较少,如今移动互联网的开发者也逐渐开始注重插入 ...

最新文章

  1. 【jsp】页面跳转的两种方法
  2. PC和手机怎么实现绝对居中?
  3. python【蓝桥杯vip练习题库】ALGO-140 P1101(提货单)
  4. qgraphicsview 添加矩形框并拖动改变大小_如何用手机巧影软件为视频添加字幕
  5. jsp+js实现二级级联
  6. (十五)深入浅出TCPIP之Hello CDN
  7. python经典100例(41-60)
  8. 如何查询linux服务器的网卡,Linux服务器如何查看有没有无线网卡
  9. dbentry访问带密码的Access
  10. linux安装opencv
  11. 软件开发需求整理概要
  12. “内容为王”时代,游戏渠道商还能“躺赢”吗?
  13. matlab两个力的合成与分解,[转帖]小波图像分解与合成(例子) - Matlab讨论区 - 振动论坛 动力学,噪声 -......
  14. 做数据分析,一定会用到的12类实用图表
  15. Selenium 2自动化测试实战
  16. 彩虹域名授权平台系统正版源码 带下载更新功能
  17. IC在測試生產過程的靜電放電(ESD)擊傷及電性過壓(EOS)現象
  18. 驰骋BPM系统-表单引擎-流程引擎 2020年大换装
  19. 什么模式下不可使用曝光补偿_难道手动模式下不能调整曝光补偿值吗?
  20. java事务是基于数据库的么_详解在Spring Boot中使用数据库事务

热门文章

  1. java制作摄影建模,照片建模的拍摄要求
  2. 重力感应贪吃蛇(C51 MPU6050 8*8LED点阵)
  3. C++第三次实验:税收计算
  4. 2020国开c语言程序设计1075,中央电大秋季C语言程序设计期末试卷及答案代码1075,01(7页)-原创力文档...
  5. 计算机检索的辅助检索方法有,中国知网等文献检索的一般方法.docx
  6. 关于移动Web性能的五大神话
  7. Vertica资源池
  8. java金额转换函数_将阿拉伯数字转换成人民币大写形式的JAVA工具类
  9. 企业微信裂变获客,粉丝增长的优势在哪?
  10. 如何做云班课上的计算机作业,云班课如何提交课后作业 作业提交教程