Android优化篇之布局优化
绝大部分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优化篇之布局优化相关推荐
- 顺风车Android性能优化之View布局优化
一.问题背景 在开发过程中,往往会听到 "性能优化" 这个概念,这个概念很大,比如网络性能优化.耗电量优化等等,对 RD 而言,最容易做的或者是影响最大的,应该是 View 的性能 ...
- Android优化五:布局优化
1.减少布局层级 Google在API文档中建议View树的高度不宜超过10层. 以前我们用Eclipse写代码时,自动生成的模板是以LinearLayout为根节点的,但是后面变成了Relative ...
- Android性能优化系列之布局优化,Android程序员校招蚂蚁金服
25 26 rInflate方法关键代码 void rInflate(XmlPullParser parser, View parent, Context context, AttributeSet ...
- MySQL优化篇:SQL优化流程
MySQL中SQL优化流程 SQL优化流程如下: 慢查询的开启并捕获 explain+慢SQL分析 show profile查询SQL在MySQL服务器里面的执行细节和生命周期情况 SQL数据库服务器 ...
- C++ 性能优化篇一《优化概述》
1.1 优化是软件开发的一部分 优化是一项编码活动.在传统的软件开发过程中,直到编码完成,项目进入了集成与测试 阶段,能够观察到程序整体的性能时,才会进行优化.而在敏捷开发方式中,当一个带有 性能指标 ...
- 大数据开发之Hive优化篇8-Hive Job优化
备注: Hive 版本 2.1.1 文章目录 Hive job优化概述 一.并行执行 二.本地执行 三.合并输入小文件 四.合并输出小文件 五.控制Map/Reduce数 5.1 控制Hive job ...
- Android 布局优化
在开发过程中我们经常说性能优化,但性能优化是一个比较宽泛的概念.在Android开发中性能优化可能包括:Java代码优化, 算法优化, SQLite优化, 布局优化等.那么这篇博客就来总结并分享下An ...
- 深入探索Android布局优化(上)
前言 成为一名优秀的Android开发,需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样~. Android的绘制优化其实可以分为两个部分,即布局(UI)优化和卡顿优化,而布局优化的核心 ...
- android布局优化方案,Android启动优化-布局优化
Android启动优化-布局优化 安卓应用开发发展到今天,已经成为一个非常成熟的技术方向,从目前的情况看,安卓开发还是一个热火朝天的发展,但高级人才却相对较少,如今移动互联网的开发者也逐渐开始注重插入 ...
最新文章
- 【jsp】页面跳转的两种方法
- PC和手机怎么实现绝对居中?
- python【蓝桥杯vip练习题库】ALGO-140 P1101(提货单)
- qgraphicsview 添加矩形框并拖动改变大小_如何用手机巧影软件为视频添加字幕
- jsp+js实现二级级联
- (十五)深入浅出TCPIP之Hello CDN
- python经典100例(41-60)
- 如何查询linux服务器的网卡,Linux服务器如何查看有没有无线网卡
- dbentry访问带密码的Access
- linux安装opencv
- 软件开发需求整理概要
- “内容为王”时代,游戏渠道商还能“躺赢”吗?
- matlab两个力的合成与分解,[转帖]小波图像分解与合成(例子) - Matlab讨论区 - 振动论坛 动力学,噪声 -......
- 做数据分析,一定会用到的12类实用图表
- Selenium 2自动化测试实战
- 彩虹域名授权平台系统正版源码 带下载更新功能
- IC在測試生產過程的靜電放電(ESD)擊傷及電性過壓(EOS)現象
- 驰骋BPM系统-表单引擎-流程引擎 2020年大换装
- 什么模式下不可使用曝光补偿_难道手动模式下不能调整曝光补偿值吗?
- java事务是基于数据库的么_详解在Spring Boot中使用数据库事务
热门文章
- java制作摄影建模,照片建模的拍摄要求
- 重力感应贪吃蛇(C51 MPU6050 8*8LED点阵)
- C++第三次实验:税收计算
- 2020国开c语言程序设计1075,中央电大秋季C语言程序设计期末试卷及答案代码1075,01(7页)-原创力文档...
- 计算机检索的辅助检索方法有,中国知网等文献检索的一般方法.docx
- 关于移动Web性能的五大神话
- Vertica资源池
- java金额转换函数_将阿拉伯数字转换成人民币大写形式的JAVA工具类
- 企业微信裂变获客,粉丝增长的优势在哪?
- 如何做云班课上的计算机作业,云班课如何提交课后作业 作业提交教程