Android性能优化之总括篇

Android性能优化之总括篇_第1张图片
Paste_Image.png

本文先总括Android性能优化的主要几个方面,后续再逐条详细说明。

1.启动页面优化:

  • 启动页面网络请求优化(可以根据启动页面所需,有针对的优化网络请求)
  • 启动页面特效优化(添加启动动画,在视觉效果上造成“启动页面加载速度很快”的效果)
  • 启动页面无黑屏(配合Android Theme使用)
  • Application启动速度优化(尽量不将一些业务逻辑放于Application中)
  • 启动页返回键的屏蔽

2.布局优化:

  • 减少布局文件的层级(测量、布局、绘制的时间减少):可以使用RelativeLayout来减少嵌套,从而达到减少层级的目的,另外在相同层级的情况下使用LinearLayout(相比RelativeLayout更高效)

  • 使用include标签复用,merge标签降低层级,ViewStub来实现懒加载,另外Space用来可以占位。

3.绘制优化

  • 减少太多重叠的背景
  • 减少太多层叠的View
  • 减少复杂的Layout层级
    注:设置->其它高级设置->开发者选项->调试CPU过度绘制,可以查看过度绘制

4.内存泄漏优化:

参考之前文章:http://www.jianshu.com/p/2511077ba946

5.优化工具介绍:

Android性能优化之总括篇_第2张图片
Paste_Image.png
  • StrictMode:
    主要用来做主线程优化分析,开启StrictMode后, 如果线程中做一些诸如读写文件,,网络访问等操作,将会在Log console输出一些警告, 警告信息包含Stack Trace来显示哪个地方出了问题。文档:https://developer.android.com/reference/android/os/StrictMode.html
  • SystraceMode:
    Systrace是一个收集和检测时间信息的工具,它能显示CPU和时间被消耗在哪儿了,每个进程和线程都在其CPU时间片内做了什么事儿。而且会指示哪个地方出了问题, 以及给出Fix建议。用来分析UI的绘制时间,结合Hierarchy Viewer来提升UI性能。也可以用来发现耗时操作。
    文档:
    https://developer.android.com/studio/profile/systrace.html
    https://developer.android.com/studio/profile/systrace-walkthru.html
    https://developer.android.com/studio/profile/systrace-commandline.html?hl=fy
  • Hierarchy Viewer:
    Hierarchy Viewer提供了一个可视化的界面来观测布局的层级,让我们可以优化布局层级,删除多余的不必要的View层级,提升布局速度。用来做View层级分析,可以分析出View Tree中的性能阻塞点,以便对症下药,提升布局性能。Hierarchy Viewer需要Root的机器(产品机没有开启ViewServer)才可以执行。可以使用第三方的开源的ViewServer来协助我们在未Root的机器上使用Hierarchy Viewer分析。
  • TraceView
    一个图形化的工具, 用来展示和分析方法的执行时间.
    文档:
    https://developer.android.com/studio/profile/traceview.html
    https://developer.android.com/studio/profile/traceview-walkthru.html
  • Memory Monitor:
    内存使用检测器,可以实时检测当前Application的内存使用和释放等信息,并以图形化界面展示.用来做内存分析,内存泄露排查的不二之选。可以结合heap viewer,allocation tracker来分析,可以导出hprof文件结合第三方的MAT工具分析泄露点。
  • Other Motinor:
    Android Studio的Monitor还提供了其他三个Motinor --- CPU, GPU, Network.分别用来跟踪监测CPU,GPU和Network的使用极其变化, 可以作为网络优化, 流量优化和渲染优化等的一个指导.
    文档:
    https://developer.android.com/studio/profile/am-cpu.html
    https://developer.android.com/studio/profile/am-gpu.html
    https://developer.android.com/studio/profile/am-network.html

6.反射优化:

  • 在代码中减少反射调用;
  • 对频繁调用的返回值进行Cache;

7.稳定性优化:

  • 连续48小时monkey不应出现闪退,anr问题。
  • 如果应用接入了数据埋点的sdk,比如百度统计sdk等,这些sdk都会将应用的崩溃信息上报回来,开发者应每天关注这些统计到的崩溃日志,严格控制应用的崩溃率;

8.耗电优化:

  • 应用进入后台后不应异常消耗电量;
  • 操作应用后,退出应用,让应用处于后台,一段时间后通过adb shell dumpsys batterystats查看电量消耗日志看是否存在异常。

9.其他优化:

  • 慎用异常,异常对性能不利
  • Adapter优化
  • 节制地使用Service等等

参考:

http://blog.tingyun.com/web/article/detail/155
http://blog.tingyun.com/web/article/detail/155

你可能感兴趣的:(Android性能优化之总括篇)