1、简述
之前这篇文章仅仅只是抛出来一些案例,没有深度,而且并不一定效果良好(充其量只是参照牛人积累了一点案例),这里我需要在这里重新调整书写,力求有更好的说明,让自己对该块只是理解的更深刻透彻一点(2020/07/23)
我对启动优化存在如下困惑
- 什么是app启动?app的启动分类?
- 如何统计app启动时长?方式多种可以吗?
- app启动的流程熟悉?我们针对优化的重点应放在哪呢?
- 你平时是如何做app启动优化的呢?效果好吗?
2、 启动优化知识积累
我们针对上述提出的问题,积累一下启动优化的知识,最终达到我们进行优化的目的。
闪屏优化、业务梳理、业务优化、线程优化、GC 优化和系统调用优化
工具主要是 systrace
2.1、应用启动定义
应用启动是从点击图标到用户可操作的整个过程
2.2、启动分类
- 冷启动
1.场景:开机后第一次启动应用 或者 应用被杀死后再次启动
2.生命周期 Process.start->Application创建->attachBaseContext->onCreate->onStart->onResume->Activity生命周期
3.启动速度:在几种启动类型中最慢,也是我们优化启动速度最大的拦路虎 - 温启动
1.场景:应用已经启动,返回键退出(应用进程存在)
2.生命周期:onCreate->onStart->onResume->Activity生命周期
3.启动速度:较快 - 热启动
1.场景:Home键最小化应用
2.生命周期:onResume->Activity生命周期
3.启动速度:快
启动流程
针对启动流程简单绘制了流程图
启动分析方式
启动耗时检测
- adb 检测
ThisTime 最后一个Activity的启动耗时
TotalTime 所有Activity启动耗时
WaitTime AMS启动Activity的总耗时 - 代码打点
1、oop代码统计方式
实践
2、使用AOP检测方法运行时间
工具
TraceView
特点: 图形的形式展示执行时间、调用栈等
信息全面包含所有线程
缺点 性能耗损太大,得出的结果并不真实
//打桩开始
Debug.startMethodTracing("test");