启动分类
冷启动 热启动
启动监控
- 生命周期监控 起点:attachBaseContext
- 首屏渲染监控 首屏终点:onWindowFocusChange
- 用户可交互监控 首页金刚位的view的onViewAttachedToWindow回调
启动报表
50分位,90分位图 分段图,1s到2s,2s到3s 不同Android版本,不同设备,不同app版本启动时间
4.启动优化
4.1 Application优化
4.1.1 懒加载
- 非必要任务懒加载
- 精细化处理,任务内部拆分为创建和启动,将启动部分延迟执行,对象内部成员变量延迟初始化。
- 首页成功展示后再向IdleHandler中添加延迟执行的任务
4.1.2任务有向无环图并行加载
使用alpha架构来执行任务。
4.1.3 线程收敛
- 创建线程创建工具类,所有的单线程使用都丢入到核心线程数是0,阻塞线程队列是空,最大线程数是最大值的线程池,也就是newCachedThreadPool
- 线程管理,每个线程必须有命名,方便后面问题排查。
- 统一管理线程池,设计cpu线程池和IO线程池,cpu线程池是以cpu核数为核心线程数,IO线程池是以64位为核心线程数。
4.2 首页优化
- 图片OSS裁剪后下载
- xml优化
- 减少不必要的IO,收敛启动后接口请求,减少多接口相同的冗余数据
- 使用moshi json库优化json序列化,反序列化(使用jsonAdapter减少反射,效率更高)
4.3 GC抑制
- 使用android提供的优化后的容器,ArrayMap,SparseArray
- 启动时内存泄露的检测
- 使用profile查看高内存占比对象,进行优化,减少内存抖动(在RecycleView的onbindViewHolder中创建对象)