APP启动优化
启动类型
1.冷启动 第一次开始 或是 重装启动
2.热启动 第二次或之后启动
3.温启动 退到后台,由于某些原因被杀死,但整体数据还保存
Shell命令 检测启动时间
1. shell命令
adb shell am start -S -W [packageName]/[packageName.MainActivity]
1. thisTime 最后一个Act的启动耗时
2. TotalTime 启动一连串Act的总耗时
3. WaitTime 应用创建时间 + TotalTime
4. 应用创建时间 WaitTime - TotalTime
2. Log打印
Android 4.4 开始 ActivityManager增加了 Log TAG= displayed
05-13 10:48:54.758 376-407/? I/ActivityManager: Displayed com.mumu.launcher/.Launcher: +1s494ms
05-13 11:02:45.471 376-407/? I/ActivityManager: Displayed plat.xx.client.education/plat.xx.client.qh.cm.activity.SplashActivity: +2s606ms
05-13 11:02:51.985 376-407/? I/ActivityManager: Displayed plat.xx.client.education/plat.xx.main.activity.MainActivity: +346ms
启动优化手段
1.视图优化 黑屏白屏 治标不治本(见效最快)
1.1 设置主题透明 style中设置 windowIsTranslucent 值为true
1.2 设置启动图片 style中 windowBackground 加一张图片 windowDrawSystemBarBackgrounds 为false
2.代码优化
2.1 优化Application
--必要的组件在程序主页去初始化,不要在Application中
--如果一定在Application中初始化,尽可能延时 handler.postdelay
--必要的组件,子线程中初始化 new Thread().start
2.2 不需要繁琐的布局
2.3 阻塞UI线程的操作
2.4 加载BItmap/ 大图
2.5 其他一些占用主线程的操作
冷启动经过的步骤
1.第一次安装,加载应用程序并启动
2.启动后显示一个空白的窗口
3.启动、创建了应用进程
APP 内部
1. 创建APP 对象、Application对象
2. 启动主线程(Main/UI Thread)
3. 创建应用入口/ LAUNCHER
4. 填充VIewGroup中的View
5. 绘制view measure -> layout-> draw