Android Studido下的应用性能优化总结--布局优化

  • 前言:一个应用的成功=产品设计*性能 ,再此我们不讨论一个应用的设计,那交给我们可爱又可恨的产品经理和UI设计师来决定!所以这里分步骤讨论如何提升一个应用的性能,这里先探讨布局优化问题。

布局优化

  1. 避免过度回执(Overdraw),由于过度绘制会浪费很多的CPU,GPU资源, 
    检查方法:

通过打开开发者选项–>GPU模式呈现分析–>在屏幕上显示为条形图。然后就会看到如下图的情况,最好用真机,模拟器回执有问题。

 
你可以观察一下绘制的条形图 
tips:每一条柱状线都包含三部分,蓝色代表测量回执Display List的时间,红色代表 OpenGL 渲染 Display List所需要的时间,黄色代码CPU 等待GPU的处理的时间。中间的绿线横线代码VSYNC时间 16ms,需要尽量将所有的条形图控制在这条绿线之下。 如果超过了很多就表明你的布局需要优化了。

通过Hierarchy Viewer分析布局优化

  1. 打开Android Device Monitor方式两种,如图 
  2. 进入以前Eclipse经常遇到的界面,然后在Android Device Monitor按图打开 
  3. 打开自己要看的进程 
  4. 如下图,View Hierarcy 同时能帮助你识别渲染性能比较低的部分。View节点中带有红色或黄色的点代表速度较慢的View对象。如单步运行应用程序那样,你可以这样来判断某个View 速度一直很慢,还是只在某个特定环境下速度才慢。 
    请注意,低性能并不表示一定有问题,特别像是ViewGroup对象,View的子节点越多,结构越复杂,性能越差。 
    View Hierarchy 窗口还可以帮助你找到性能问题。只要看每个View节点的性能指标(颜色点)就可以,你可以看到测量(布局或绘制)最慢的View对象是哪个,这样你就能快速确定,要优先察看哪个问题。 

显示GPU过度绘制

  • 你可以在手机打开 设置—->开发者选项—->显示GPU过度绘制,这个开关的作用是按不同颜色值来显示布局的过度绘制,绘制的层次从最优到最差:蓝,绿,淡红,红。如图

  • 图片从上到下代表不同层次的OverDraw,我们在布局时候,尽量减少红色 Overdraw,看到更多的蓝色区域。来看看微信的 Overdraw图和我们自定义的布局Overdraw图吧 

解决布局优化问题

    1. 优化布局层级 
      在Android 中系统对View进行测量布局绘制时,都是对View数的遍历进行操作的。如果一个View的层级数太多,就会严重影响测量布局绘制的速度。Google也在API文档里边中提到讲义View的层级不宜超过10层。tips: 早期Google在Android 中使用LinearLayout为默认的根布局,现在的Android中默认的是RelativeLayout,原因就是因为减少布局层级的原因
    2. 使用< include > 标签重用Layout 
      比如在UI上的Toolbar公用一套布局,而且有些方面也通用一套UI布局的时候,就需要考虑复用标签的问题 tips: 在Android Studio中可以直接提取布局,如图,点击Layout然后起个布局名字就可以提取出include标签了 
    3. 具体情况具体分析,通过上边的三种分析方法分析到需要优化的布局的地方,然后解决优化问题即可…..
时间: 2024-08-23 05:42:56

Android Studido下的应用性能优化总结--布局优化的相关文章

Android Studido下的应用性能优化总结-内存优化

转载请标明出处(请勿转载删除底部微博.微信等信息): http://blog.csdn.net/Y1258429182/article/details/51176424 本文出自:杨哲丶的博客 上一篇文章总结的布局优化的问题,如果对布局优化不是很熟悉的,可以看一下Android Studido下的应用性能优化总结–布局优化, 这周一直筹划总结一下内存优化的问题,因为现在对于应用优化的文章很多,但是还是想完善一下才想分享这篇文章的,我会从项目中遇到的一个问题,通过解决问题的过程来分享知识,希望大家

Android Studio下的应用性能优化总结-内存优化

转载请标明出处(请勿转载删除底部微博.微信等信息): http://blog.csdn.net/Y1258429182/article/details/51176424 本文出自:杨哲丶的博客 上一篇文章总结的布局优化的问题,如果对布局优化不是很熟悉的,可以看一下Android Studido下的应用性能优化总结–布局优化, 这周一直筹划总结一下内存优化的问题,因为现在对于应用优化的文章很多,但是还是想完善一下才想分享这篇文章的,我会从项目中遇到的一个问题,通过解决问题的过程来分享知识,希望大家

Android 性能优化 三 布局优化ViewStub标签的使用

小黑与小白的故事,通过虚拟这两个人物进行一问一答的形式来共同学习ViewStub的使用 小白:Hi,小黑,ViewStub是什么?听说可以用来进行布局优化. 小黑:ViewStub 是一个隐藏的,不占用内存空间的视图对象,它可以在运行时延迟加载布局资源文件.(更多详细的API等信息可以查看官方文档ViewStub),计算机行业一向是实践里面出真知,下面用一个例子演示下效果. 小黑:说说概念只是为了概括性的了解下,还是用个实例来演示下.先来创建一个Activity中使用的布局文件,文件名是:act

Android性能优化之布局优化

由于Android系统对硬件的要求较高,并且上层应用都是用Java(效率要比C++低)编写的,对程序的优化就成了程序员的日常工作了:Android的优化 可以从以下几个地方下手:布局优化.数据库优化.使用异步加载数据.使用缓存技术.算法代码优化.使用线程池 先从比较简单的布局入手 程序目录结构 1.使用 <include>标签复用相同部分的布局文件,就是在一個而已文件中包含另一个布局 activity_main.xml <RelativeLayout xmlns:android=&quo

【转】Android性能优化之布局优化篇

转自:http://blog.csdn.net/feiduclear_up/article/details/46670433 Android性能优化之布局优化篇 分类: andorid 开发2015-06-29 16:28 238人阅读 评论(0) 收藏 举报 性能布局viewStubinclude布局优化 目录(?)[-] Hierarchy View检测布局嵌套层次 显示GPU过度绘制 懒加载布局 ViewStub Android Lint 工具 怎样才能写出优秀的Android App,是

Android性能优化之一 布局优化

本文为Android性能优化--布局优化,主要介绍使用抽象布局标签(include, viewstub, merge).去除不必要的嵌套和View节点.减少不必要的infalte及其他Layout方面可调优点,顺带提及布局调优相关工具(hierarchy viewer和lint). 一.布局复杂度的优化 关于布局的优化,主要分两个大方向 实现相同界面效果并且层级结构相同时,选用何种Layout最好 在Android中单独的布局性能: FrameLayout>LinearLayout>Relat

Android性能优化之布局优化篇

怎样才能写出优秀的Android App,是每一个程序员追求的目标.那么怎么才能写出一个优秀的App呢?相信很多初学者也会有这种迷茫.一句话来回答这个问题:细节很重要.今天我们就从最基础的XML布局来谈谈怎么提高Android性能问题吧! 也许你经常会遇到比较复杂的布局,这种情况下,最简单的方法就是多层嵌套实现效果,但是最简单的方法是否是最优的方法呢? 这里需要打一个大大的问号?????经验告诉我们,往往简单的方法,得到的结果不是最优解,那么我们通过一个例子来研究一下怎么去优化我们的XML布局吧

性能优化之布局优化

1.抽象布局标签 (1) <include>标签include标签常用于将布局中的公共部分提取出来供其他layout共用,以实现布局模块化,这在布局编写方便提供了大大的便利.下面以在一个布局main.xml中用include引入另一个布局foot.xml为例.main.mxl代码如下: Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?xml version="1.0" encoding="utf-8"?> &l

(转载)性能优化之布局优化

来源:http://www.trinea.cn/android/layout-performance/ 本文为Android性能优化的第二篇——布局优化,主要介绍使用抽象布局标签(include, viewstub, merge).去除不必要的嵌套和View节点.减少不必要的infalte及其他Layout方面可调优点,顺带提及布局调优相关工具(hierarchy viewer和lint). 性能优化专题已完成五部分: 性能优化总纲——性能问题及性能调优方式性能优化第三篇——Java(Andro