项目地址:https://github.com/smartzheng/asyncstarter
随着APP的日渐增大,集成的三方库也越来越多,导致APP的启动极其缓慢。最近在慕课get了一些不错的优化方案,将原来的冷启动时间大概提升30%。
启动的时间监测可以直接用adb命令实现:
adb shell am start -W PackageName/ActivityName
下面是我未优化之前的项目debug版本启动时间(华为p10plus),这里介绍一下几个概念
ThisTime:最后一个Activity启动耗时
TotalTime:所有Activity启动耗时
WaitTimeTime:AMS启动Activity启动耗时
可以看到耗时接近1.3s多(1.3s不算长,但是往往应用加固之后还会慢大一截)。
-> ~ adb shell am start -W com.smartzheng/com.smartzheng.activity.SplashActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.
LAUNCHER]cmp=com.smartzheng/.activity.MainActivity }
Warning: Activity not started, its current task has been brought to the front
Status: ok
Activity: com.uoko.mlgb/.mvp.view.activity.MainActivity
ThisTime: 600
TotalTime: 1301
WaitTime: 1330
Complete
优化一:去掉启动页
IPC是个比较耗时的操作,往往我们会设置一个闪屏页,去掉之后可以一定幅度减少启动时间。
我的做法是直接删除SplashActivity,将MainActivity设为启动页。然后在manifests中将其theme设为启动时的theme:
<activity
android:name=".activity.MainActivity"
android:configChan