为什么80%的码农都做不了架构师?>>>   

原文作者:鸿洋
原文地址:点我跳转原文

一般情况下,我们谈性能优化基本上会从以下几个方面:

  • App启动速度优化
  • UI流畅度优化
  • 内存优化
  • apk瘦身
  • 电量优化

还有些网络速度优化、以及特定类型app的一些针对性的优化,比如播放器起播速度等…

我们重点谈论上面5个方面。

性能优化正常的流程是,发现自己某方面与竞品差距比较大,比如UI渲染速度,需要通过某种方式去发现为什么比别人慢,往往需要利用一些工具,然后可以做一些针对性的调优(代码优化、实现方式改变等),当然了在调优的过程中会有一些通用性的调优方式可以帮助你。

所以本文从共性的角度来看,主要介绍的就是针对以上5个方面的检测工具以及调优方式了。

App启动速度优化

对于App启动速度优化,一般情况下我们会利用主题去防止出现白屏;针对启动速度慢,需要尽可能减少Application的onCreate中所要做的事情,比如一些不重要的SDK延迟或者异步加载;多进程情况下一定要可以在onCreate中去区分进程做一些初始化工作;部分将要使用到的类异步加载;还有针对multidex专门做优化的(当然这个随着5.0以上的设备越来越多,影响倒是没有那么大了)。

下面针对各个方面推荐一些文章:

  • Android性能优化(一)之启动加速35%
    http://www.jianshu.com/p/f5514b1a826c

  • Android冷启动白屏解析,带你一步步分析和解决问题
    http://blog.csdn.net/guolin_blog/article/details/51019856

  • Android APP启动优化
    http://wuxiaolong.me/2017/03/13/appStart/

  • App启动速度优化之耗时检测处理
    http://www.jianshu.com/p/a0e242d57360

上面几篇文章基本上描述了应用的启动流程,如何优化白屏,以及一些SDK的懒加载等等…

  • 美团Android DEX自动拆包及动态加载简介,
    https://tech.meituan.com/mt-android-auto-split-dex.html

  • Android MultiDex初次启动APP优化,
    http://blog.csdn.net/synaric/article/details/53540760

  • 其实你不知道MultiDex到底有多坑,
    http://t.cn/RjjhD95

这3篇可以帮助你对multidex做一定的了解,以及提供了优化方案供参考。

当然了,在检测启动优化上,除了利用adb命令去检测总时间,还有就是去发现耗时的方法,可以利用TraceView,或者打开StrictMode,如果你喜欢使用Log,还可以去使用hugo,或者自己写一个类似的AOP日志框架。

关于TraceView的使用可以参考:

  • TraceView 简介及其案例实战,
    https://www.cnblogs.com/sunzn/p/3192231.html

  • 使用 TraceView 找到卡顿的元凶,
    http://blog.csdn.net/u011240877/article/details/54347396

  • Android App优化之提升你的App启动速度之实例挑战,
    http://www.jianshu.com/p/4f10c9a10ac9

StrictMode比较简单,就不描述了,hugo是Jake大神的一个开源库,主要是利用aspectJ,源码很少,也比较简单,不过使用起来还不错,直接看readme就够了,感兴趣可以看下~
https://github.com/JakeWharton/hugo

UI流畅度优化

谈到UI流畅度,一般就是不要在主进程去做耗时的操作,提升UI的绘制速度(减少View的布局层级,避免过渡绘制等)…TraceView、Lint、Hugo、StrictMode等…

这里很容易想起Google在15年初google发布了Android性能优化典范,还好视频还被我找到了,文末有下载…

对于优化方案可参考:

  • Android性能优化(二)之布局优化面面观
    http://www.jianshu.com/p/4f44a178c547

  • Android UI性能优化实战 识别绘制中的性能问题
    http://blog.csdn.net/lmj623565791/article/details/45556391/

  • 性能优化之布局优化
    http://www.trinea.cn/android/layout-performance/

  • Android性能调优
    http://www.trinea.cn/android/android-performance-demo/

当然了对于UI卡顿,不可避免的要引入检测的方案:

一般有监听Looper的日志

利用Choreographer

可参考我之前编写的:
Android UI性能优化 检测应用中的UI卡

当然也相应的有一些开源工具:

https://github.com/markzhai/AndroidPerformanceMonitor [方式1]

https://github.com/wasabeef/Takt [方式2]

https://github.com/friendlyrobotnyc/TinyDancer [方式2]

内存优化

内存优化那么主要就是去消除应用中的内存泄露、避免内存抖动;常用工具就是AS自带的内存检测,可以很好的发现内存抖动;leakcanary可以非常方便的帮助我们发现内存泄露;MAT可以做更多的内存分析。

当然了,你还可以了解一些内存相关的基础知识。

  • Android性能优化(三)之内存管理
    http://www.jianshu.com/p/c4b283848970

  • Android性能优化第(二)篇—Memory Monitor检测内存泄露
    http://www.jianshu.com/p/ef9081050f5c

  • 内存泄露实例分析 – Android内存优化第四弹
    http://www.jianshu.com/p/cbe2ee08ca02

  • Android最佳性能实践(一)——合理管理内存
    http://blog.csdn.net/guolin_blog/article/details/42238627

  • Android最佳性能实践(二)——分析内存的使用情况
    http://blog.csdn.net/guolin_blog/article/details/42238633

  • Android性能优化-内存泄漏的8个Case
    https://mp.weixin.qq.com/s?__biz=MzAxMTI4MTkwNQ==&mid=2650822597&idx=1&sn=462b116f97623f239ecf667d3bdef446&chksm=80b7835bb7c00a4d4cbc9f7e19829d9a99f3cf58c1bc43dace16ffec58c98668927c9fa8dcda&scene=21#wechat_redirect

  • Android 内存优化总结&实践
    https://mp.weixin.qq.com/s/2MsEAR9pQfMr1Sfs7cPdWQ

  • Android内存优化之OOM
    http://hukai.me/android-performance-oom/

  • Android应用内存泄露分析、改善经验总结
    https://zhuanlan.zhihu.com/p/20831913

  • 内存泄露从入门到精通三部曲之基础知识篇
    http://dev.qq.com/topic/59152c9029d8be2a14b64dae

  • 内存泄露从入门到精通三部曲之排查方法篇
    http://dev.qq.com/topic/591522d9142eee2b6b9735a2

  • 手把手教你在Android Studio 3.0上分析内存泄漏
    https://mp.weixin.qq.com/s?__biz=MzAxMTI4MTkwNQ==&mid=2650824544&idx=1&sn=2fc3cc16806bd1ddd9902ccef2cd12f5&chksm=80b78bfeb7c002e822314661aa0df8e8d7981fb2ff3bc362c129bbf2952a87ff59a6213b821c&scene=21#wechat_redirect

apk瘦身

关于Apk瘦身,主要由以下几个方式:

利用ProGuard压缩代码去除无用资源

andresguard进一步压缩与混淆资源

第三方开源库的瘦身,仅保留自己需要的部分

极致的图片压缩与webp的使用

合理配置去除不必要的配置,仅保留中文配置等…

so的优化与配置,只保留一类so

动态下发一些资源:字库、so、换肤包等;

以上仅有7比较麻烦,需要服务端的配合,此外对于动态下发So,可以参考tinker对So热修复部分代码。

其余都是常规方式,且1 ,5,6都比较简单,build.gradle最下配置即可,当然了也有一些参考文章:

App瘦身最佳实践http://www.jianshu.com/p/8f14679809b3#Android APP终极瘦身指南http://t.cn/RGjNpamAndroid性能优化(十)之App瘦身攻略http://www.jianshu.com/p/99f3c09982d4[Android技术专题]APK瘦身看这一篇文章就够了http://www.jianshu.com/p/6be4f98162d7安装包立减1M--微信Android资源混淆打包工具http://t.cn/RjjVe4f爱奇艺Android移动客户端app瘦身经验http://t.cn/RjjfzrYAndroid Webp 完全解析 快来缩小apk的大小吧App优化攻略-用TextView显示图片Android IconFont全攻略

电量优化

电量优化说实在的关注度较低,一般情况就是合理的使用一些传感器、谨慎的使用Wake Lock、减少后台的不要的操作等…检测可以利用battery-historian

Android性能优化(九)之不可忽视的电量http://www.jianshu.com/p/5d83d8649c98Android性能优化之电量篇http://hukai.me/android-performance-battery/Android性能优化-电量优化Android性能优化系列之电量优化http://blog.csdn.net/u012124438/article/details/74617649Android App优化之电池省着用http://www.jianshu.com/p/c55ef05c0047https://github.com/google/battery-historian

好了,大家可以将每个方案的所采用的实际的优化策略记录下来,对每种方式提到的工具一定要自己去体验,用起来肯定不会有多么的困难,实操起来印象会更加深刻。

性能优化并不困难,重要的还是要去实际的去操作一把,基本上也是面试常见的问题了。

最后,好文非常多,本文希望仅起到抛砖引入的效果,感谢所有作者~

想起来了16年MDCC上明云凶做过一个性能优化的分享,所以每次谈到性能优化我都能想到当年演讲的ppt。

这里提供一下该ppt的下载以及Google的性能优化典范视频,链接:https://pan.baidu.com/s/1kVHyCUb,懒得复制的可以公众号内回复1118即可。

对了,腾讯有个非常强大的手机上的“集成调测环境”,就是手机上的软件,可以用于性能检测,叫GT。
http://gt.tencent.com/download.html

关注公众号:

转载于:https://my.oschina.net/qxf323/blog/1843412

Android 性能优化相关推荐

  1. Android性能优化系列 + Android官方培训课程中文版

    Android性能优化典范 - 第6季 http://hukai.me/android-performance-patterns-season-6/ Android性能优化典范 - 第5季 http: ...

  2. Android性能优化——腾讯、字节、阿里、百度、网易等互联网公司项目实战+案例分析(附PDF)

    前言 当我们还在用按键.滑盖.翻盖手机的时候,全触屏手机来了; 当我们觉得二维码这项发明没有意义的时候,支付宝和微信等狠狠地给了我们响亮的耳光; 当我们以为扫码支付只有支付宝的时候,微信支付来了; 当 ...

  3. Android性能优化典范第二季

    原文链接:http://hukai.me/android-performance-patterns-season-2/ 1)Battery Drain and Networking 对于手机程序,网络 ...

  4. Android性能优化之渲染篇(一)

    前言 工作有半年多了,自己的技术没有很大的长进,平时也没有注意学习,只是完成了工作任务就可以了,这样下去的话,自己将很难有提高.面对现在激烈的竞争环境以及技术不断的更新,自己真的要去学习,不断的提高自 ...

  5. Android性能优化典范笔记(1)-GPU绘制性能优化

    Android性能优化典范笔记(1)-GPU绘制性能优化 你还可以再Github上找到我的这篇文章:https://github.com/onlynight/ReadmeDemo/tree/maste ...

  6. Android性能优化:手把手教你如何让App更快、更稳、更省(含内存、布局优化等)...

    2019独角兽企业重金招聘Python工程师标准>>> 前言 在 Android开发中,性能优化策略十分重要 因为其决定了应用程序的开发质量:可用性.流畅性.稳定性等,是提高用户留存 ...

  7. Android性能优化

    Android性能优化 一.布局优化: 1.优化方式: 减少不必要嵌套,尽可能使用LinearLayout.ConstraintLayout等控件 减少颜色覆盖,子控件背景足够,不要在其父控件加颜色 ...

  8. Android主线程耗时动画卡顿,Android性能优化实战之界面卡顿

    原标题:Android性能优化实战之界面卡顿 作者:红橙Darren https://www.jianshu.com/p/18bb507d6e62 今天是个奇怪的日子,有三位同学找我,都是关于界面卡顿 ...

  9. 【Android 性能优化】布局渲染优化 ( CPU 渲染优化 | 减少布局的嵌套 | 测量布局绘制时间 | OnFrameMetricsAvailableListener | 布局渲染优化总结 )

    文章目录 一. 减少布局嵌套 二. 布局渲染时间测量 1. FrameMetrics 使用流程 2. FrameMetrics 参数解析 3. FrameMetrics 代码示例 三. 布局渲染优化总 ...

最新文章

  1. android中方法调用super(..)的相关知识
  2. (HDU)1091 --A+B for Input-Output Practice (III)(输入输出练习(III))
  3. Ubuntu下安装配置Hadoop独立模式和伪分布式
  4. java遍历集合选择题_Java集合知识测试B
  5. JavaWeb-综合案例(用户信息)-学习笔记06【复杂条件查询功能】
  6. 【uni-app】动态计算图片高度且保持宽高比
  7. 州 选择国家_青海的三大城市:海南州、海北州和海西州,谁的风景更美?
  8. 计算机网络(十九)-IEEE802.11无线局域网
  9. 年薪50W不是梦,100天掌握BAT前端中高级工程师必备技能
  10. BitAdminCore框架更新日志20180529
  11. 52 - 算法 - LeetCode 20 数据结构类 stack
  12. 涨姿势了!delete后加 limit是个好习惯么?
  13. 史上最经典Java入门基础视频,没有之一!
  14. 数字单片机的技术发展
  15. 一个基于QT的开源串口调试工具
  16. 九位皇子对于皇帝的宝座争斗不休,那么是哪九位呢?
  17. python 伪造源ip_Python实现爬虫设置代理IP和伪装成浏览器的方法共享
  18. H3C设备查看信息命令
  19. CocosCreator 物理引擎-关节
  20. 如何适配处理iphoneX底部的横条 - ios

热门文章

  1. git 切换分支_简单git操作
  2. php flock 死锁了,php – 防止由flock引起的死锁
  3. 为什么手机升级系统反应慢了_win7系统鼠标右键刷新反应慢原因【解决方法】...
  4. linux install命令文件夹,详解Linux系统中的install命令的用法
  5. break、continue在switch以及循环中的作用
  6. OFDM专题之输入的复信号从何而来?
  7. [CF.Skills]播放嵌入资源的声音文件
  8. vue 实践技巧合集
  9. 迭代器、生成器、面向过程编程思想
  10. 50个查询系列-第二个查询