Android 应用启动速度优化方向总结

自己在开发过程中,感觉到项目 App 的冷启动速度实在太慢了,于是向领导申请了启动速度优化专项。下面把自己优化的手段大概总结一下,要说明一点的是,每个项目结构都不一样,实质优化的内容也不一样,但是可以说优化的思路是一样的。

Application 优化

  • onCreate 放置的 sdk 或者 单利初始化的东西一定要严格克制,仔细思考是否有必要提前初始化或者去拉取数据。因为现在大部分应用都是有3s左右的闪屏时间,这个时间足够你做一些初始化的操作。
  • onCreate 里面的一定要初始化的东西要判断是否能够放置在线程池中。
  • 是否一些初始化的东西,可以延迟到使用时才去进行。
  • 另外,并不是所有东西放置在子线程都是 ok 的,子线程本质上也会与主线程去竞争 CPU 资源的,所以在对 App 中的线程池,可以设置稍微低一点的优先级。

SplashActivity优化

  • 白屏或者黑屏的现象一定要处理下。
  • 不要设置应用启动页面为透明主题,这个会让你的 App 显得非常慢。这一点网上资料比较多,可以搜索查阅一下。
  • 同样,在 SplashActivity 中耗时操作可以放在子线程,设置如果 3s 广告是必须显示的,可以延时执行一些操作。
  • 如果,广告显示是有时机限制的,比如说这次只显示默认的 Theme,那么默认的 Bg 和 Button 我们是不是可以用 viewStub 来初始化?
  • 闪屏资源的是不是做了缓存?

MainActivity优化

  • 首先同样,onCreate 是不是做了耗时操作,是不是有些初始化可以放在子线程。
  • onResume 里面的东西是不是可以放在 onWindowsFocusOn 中,这里才是页面真正显示的时候。
  • IdleHandler 的利用,等到主线程空闲的时候再执行操作。
  • 首页布局的优化,减少复杂布局和过渡绘制优化,另外要利用好 viewStub 功能。
  • 去掉无用的老代码,另外一些测试时候的代码也要及时清理,类似用 trace 和 sp 记录耗时。

优化这个东西,是阶段性和长期性的,后续有什么更好的优化,再继续更新。