Android项目中的优化 -- 启动时间

2018-01-20  本文已影响119人  gzfgeh

0. 概念

冷启动:启动应用时,后台没有该应用的进程(首次安装、手工强制杀死APP进程、系统强制杀死APP进程等操作)。
热启动:启动应用时,后台已有该应用的进程(home键、back键退出等操作)。

1. 优化工具

既然是优化,肯定要能看到效果,所以要有数据显示证明优化确实起到了作用。

adb shell am start -S -W com.android.diaodiao/.MainActivity
-c android.intent.category.LAUNCHER
-a android.intent.action.MAIN
reportFullyDrawn()

告诉系统结束加载了,系统会打印出APP启动到这个函数调用的时间。

2. 冷启动分析

启动过程:

前两个主要过程是:

  1. 点击APP桌面图标,通过Binder IPC调用ActivityManagerService
  2. ActivityManagerService会孵化出一个Zygote进程.
  3. Zygote进程会实例化ActivityThread对象
  4. ActivityThread对象会调用Looper.prepareLoop()和Looper.loop()来开启消息循环
  5. ActivityThread对象会调用bindApplication方法,这个方法里面会发送BIND_APPLICATION到消息队列
  6. handleBindApplication会处理刚才发送的消息,然后调用makeApplication来加载APP的classes到内存
  7. 在刚才启动的Application进程会发送LAUNCH_ACTIVITY消息到消息队列
  8. 通过handleLaunchActivity来处理消息启动Activity.

从以上部分可以得知主要是第三部分的优化。

首先Android Studio提供强大工具来分析trace文件,查看各个函数执行的时间,所以要先生成trace文件。

以上两个方法都能很明显的找到性能瓶颈和主要耗时的操作。

3. 项目中遇到的问题

4.总结

上一篇 下一篇

猜你喜欢

热点阅读