GPU过度绘制

  • 打开开发者选型,“调试GPU过度绘制”,蓝、绿、粉红、红,过度绘制依次加深
  • 粉红色尽量优化,界面尽量保持蓝绿颜色
  • 红色肯定是有问题的,不能忍受

使用HierarchyView分析布局层级

  • 删除多个全屏背景:应用中不可见的背景,将其删除掉
  • 优化ImageView:对于先绘制了一个背景,然后在其上绘制了图片的,9-patch格式的背景图中间拉伸部分设置为透明的,Android 2D渲染引擎会优化9-patch图中的透明像素。这个简单的修改可以消除头像上的过度绘制。
  • 缩短View层级结构
    • 删除非必须View,不仅仅能提高帧率还能降低对内存的消耗、同时还能加速应用的启动
    • TextView组合图标,代替LinearLayout+TextView+ImageView
    • 使用mearge标签
    • 使用RelativeLayout扁平化布局
    • 特别是ListView item布局,一定要扁平化

不要吝啬发现Android Device Monitor的功能

  • Start Method Profiling

    • 可以观察每个线程的方法调用情况,
    • 可以通过观察,方法的调用次数、每次方法执行时间
    • 找到有是否死循环,是否为耗时操作

使用LeakCanary发现内存溢出

  • 在开发阶段一定要集成LeakCanary,而且非常容易集成
  • 及时发现Activity页面内存溢出地方法
  • 详细的内存溢出方法跟踪,便于定位异常点

使用lint工具给APK包减肥

使用OneAPM监控App性能

使用SVG代替图片

  • 需要和设计配合

使用xml代替图片

代码规范制定并遵守

  • 一致的代码风格,有利于代码维护、查看和发现问题所在

[原] Android性能优化方法的更多相关文章

  1. Android性能优化方法(九)

    通常我们写程序,都是在项目计划的压力下完成的,此时完成的代码可以完成具体业务逻辑,但是性能不一定是最优化的.一般来说,优秀的程序员在写完代码之后都会不断的对代码进行重构.重构的好处有很多,其中一点,就 ...

  2. Android性能优化方法(八)

    Android SDK tools目录下提供一个观察布局的工具,层级观察器(Hierarchy Viewer).Hierarchy Viewer工具是一个非常好的布局优化工具,同时,你也可以通过它学习 ...

  3. Android性能优化方法(七)

    Java从JDK1.2版本开始,就把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期.这四种级别由高到低依次为:强引用.软引用.弱引用和虚引用. 这里重点介绍一下软引用和弱引用. 如果 ...

  4. Android性能优化方法(六)

    ContentProvider优化改进 1.索引简单的说,索引就像书本的目录,目录可以快速找到所在页数,数据库中索引可以帮助快速找到数据,而不用全表扫描,合适的索引可以大大提高数据库查询的效率.(1) ...

  5. Android性能优化方法(五)

    有时候,我们的页面中可能会包含一些布局,这些布局默认是隐藏的,当用户触发了一定的操作之后,隐藏的布局才会显示出来.比如,我们有一个Activity用来显示好友的列表,当用户点击Menu中的“导入”以后 ...

  6. Android性能优化方法(四)

    在一个应用程序中,一般都会存在多个Activity,每个Activity对应着一个UI布局文件.一般来说,为了保持不同窗口之间的风格统一,在这些UI布局文件中,几乎肯定会用到很多相同的布局.如果我们在 ...

  7. Android优化—— Google 发布 Android 性能优化典范

    阅读目录 0)Render Performance 1)Understanding Overdraw 2)Understanding VSYNC 3)Tool:Profile GPU Renderin ...

  8. Android性能优化典范(转)

    转载自oschina. 2015年伊始,Google发布了关于Android性能优化典范的专题, 一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App.课程专题不仅仅介绍 ...

  9. Android性能优化典范(二)

    Google前几天刚发布了Android性能优化典范第2季的课程,一共20个短视频,包括的内容大致有:电量优化,网络优化,Wear上如何做优化,使用对象池来提高效率,LRU Cache,Bitmap的 ...

随机推荐

  1. SQL Server在更改计算机名后的设置

    把原来的账号删除 再添加现有的账号 添加权限 搞定了上面的账号配置,接下来就是设置服务器名称 参考:http://www.cnblogs.com/EasonJim/p/6114249.html 后话: ...

  2. Bzoj3004 吊灯

    Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 72  Solved: 46 Description        Alice家里有一盏很大的吊灯.所 ...

  3. 本地连接虚拟机上面的redis

    想做一个抓取系统,想到用redis存储临时数据可能会比较好些,就想着装个虚拟机,在虚拟机上面安装redis,通过本地来访问虚拟机上面的redis. 虚拟机和redis安装成功之后,发现本地怎么都连接不 ...

  4. GridView控件RowDataBound事件的一个实例

    实现点击两个按钮,跳转到同一个界面,HyperLink显示不同的东西,主要代码段如下 前台代码: <asp:TemplateField HeaderText="操作"> ...

  5. 一次奇怪的T-shirt展示

    因为这次的第一也是上次的第一然后顺延下来又正好跟女神并列第二,拿到了一件T-shirt.总之,还是应该继续加油.

  6. TreeMap按照key排序

    package test.tool.gui.common; import java.util.Comparator; import java.util.TreeMap; public class Te ...

  7. css006 文本格式化

    css006 文本格式化 文本格式化:字体(font-family).颜色(color).字号(font-size). 行距(line-height).粗体(font-weight).斜体(font- ...

  8. 访问cv::Mat中的数据时遇到的指针类型问题

    在用Opencv的时候由于下图原本的图像尺寸是1111*1111,要进行resize,代码如下: cv::Mat img = cv::imread("//Users//apple//td3/ ...

  9. Jint .net平台的javascript引擎

    使用需求 有时候一段Javascript代码写的很棒,而我们又无法将之翻译成.net或翻译之成本很高的时候 我们就可以使用Jint引擎来运行Javascript代码,来得到我们想要的结果 或者上 ht ...

  10. Latent Semantic Analysis (LSA) Tutorial 潜语义分析LSA介绍 一

    Latent Semantic Analysis (LSA) Tutorial 译:http://www.puffinwarellc.com/index.php/news-and-articles/a ...