Android 性能优化概述

在 APP 功能完成之后,不可避免的需要做一些 APP 的性能优化。

所以,在此做一些 APP 优化知识的整理,也相当于一份优化清单,方便以后对照查阅。

在 Android 中,性能优化一般围绕以下 6 个方面展开:

  1. App 启动优化
  2. UI 绘制优化
  3. 内存优化
  4. apk 瘦身
  5. 电量优化

其实,说到 Android 性能优化,就想到此前 Google 出的一系列关于性能优化典范视频,这里关于性能优化的许多知识,都是来源与此的。


APP 启动优化

说到 APP 启动优化,首先就得了解 APP 启动流程。

简单来说,就是在 startAcitvity() 时,通过 Binder 调用 system service 进程中 ActivityManagerService(简称AMS)satrtActivity() ,通过一系列解析、校验后,判断 Activity 所在进程是否存在,如果不存在,则通过 Socket 通知 zygote 进程创建新的进程,因为创建新进程时间较长,这时会提前启动一个 PreWindows ,来提前展示即将启动的Activity 的 WindowsBackground 。在 zygote 创建新进程后会调用 ActivityThreadmain() ,之后会绑定 ApplicationThread ,然后通过 Handler 调用 handBindApplication() ,在这里会创建 Application 并调用其 onCreate() 。后面就是正常的 Activity 启动流程。

启动优化一般针对三个方面做优化:

  1. 修改 Launcher Activity 主题,提前展示预览画面。
  2. 减少Application的 onCreate() 的方法耗时
  3. 针对 multidex 优化

第三点,随着随着5.0以上的设备越来越多,也没多大影响了。

在检测 APP 启动耗时上,一般会利用一些工具,如 adb命令、TraceView、StrictMode 或者 Jake 大神的hugo。


UI 绘制优化

一个 APP 的 UI 直接影响到用户体验,消除卡顿、提升 UI 流畅度是每个 APP 都要关注的。

在 Google 性能优化典范中,有详细介绍 Android 的 UI 绘制机制。

针对 UI 绘制优化,一般是这几方面:

  1. 优化过度绘制
  2. 减少布局嵌套
  3. 优化绘制过程

除此之外,对于UI卡顿,不可避免的使用一些 UI 检测工具。


内存优化

内存优化在 Google 性能优化典范里面有详细介绍,说是尽量使用 Google 提供的一些工具,不过在实际应用中,效果并不突出,所以说到内存优化,主要就是去消除应用中的内存泄露、避免内存抖动。

同样要借助一些工具,常用工具是 Android Profiler、Leakcanary、MAT。


apk 瘦身

Google 研究发现,更小的 APK 对应着更高的下载转化率 ,所以 apk 瘦身也是经常谈论的话题。

关于 apk 瘦身,一般有这么几种方式:

  1. 利用 ProGuard 压缩代码去除无用资源
  2. 利用微信的资源混淆打包工具 andresguard
  3. 图片压缩与 webp、svg 的使用
  4. so 优化
  5. assets 文件内容压缩

在 apk 占比中 ,最大的一般不是代码,而是 so,其次是资源文件 。


电量优化

电量优化也是 Google 性能优化典范里面的内容,但 APP开发者 一般不会关注,只用系统厂商才比较注重电量优化,毕竟 关于电量方面,用户习惯性认为是手机问题。


此外还有一些优化,如网络优化,播放优化等,以后遇到再添加。


参考

必知必会 | Android 性能优化的方面方面都在这儿

Android App优化, 要怎么做?

Android性能优化

Android性能调优

Android性能优化系列

Android 性能优化必知必会

Google 性能优化典范



坚持分享技术,但行好事,莫问前程 ~^o^~