Android启动优化

74 阅读2分钟

启动分类

冷启动 热启动

启动监控

  1. 生命周期监控 起点:attachBaseContext
  2. 首屏渲染监控 首屏终点:onWindowFocusChange
  3. 用户可交互监控 首页金刚位的view的onViewAttachedToWindow回调

启动报表

50分位,90分位图 分段图,1s到2s,2s到3s 不同Android版本,不同设备,不同app版本启动时间

4.启动优化

4.1 Application优化

4.1.1 懒加载

  1. 非必要任务懒加载
  2. 精细化处理,任务内部拆分为创建和启动,将启动部分延迟执行,对象内部成员变量延迟初始化。
  3. 首页成功展示后再向IdleHandler中添加延迟执行的任务

4.1.2任务有向无环图并行加载

使用alpha架构来执行任务。

4.1.3 线程收敛

  1. 创建线程创建工具类,所有的单线程使用都丢入到核心线程数是0,阻塞线程队列是空,最大线程数是最大值的线程池,也就是newCachedThreadPool
  2. 线程管理,每个线程必须有命名,方便后面问题排查。
  3. 统一管理线程池,设计cpu线程池和IO线程池,cpu线程池是以cpu核数为核心线程数,IO线程池是以64位为核心线程数。

4.2 首页优化

  1. 图片OSS裁剪后下载
  2. xml优化
  3. 减少不必要的IO,收敛启动后接口请求,减少多接口相同的冗余数据
  4. 使用moshi json库优化json序列化,反序列化(使用jsonAdapter减少反射,效率更高)

4.3 GC抑制

  1. 使用android提供的优化后的容器,ArrayMap,SparseArray
  2. 启动时内存泄露的检测
  3. 使用profile查看高内存占比对象,进行优化,减少内存抖动(在RecycleView的onbindViewHolder中创建对象)