面试系列——App启动性能优化总结

本文总结了App启动性能优化的需求背景、衡量方法、耗时查找、优化措施及设计的启动器解决循环依赖问题。通过SDK延迟初始化、任务调度器等手段,实现了启动时间的显著提升,平均优化幅度超过35%。

启动性能优化总结

需求背景

随着业务增多,引入很多SDK或一些业务模块,导致启动性能急速下降,用户体验感下降,数据指标越来越难看。

衡量启动时间

  • 线上统计
    attachBaseContext 首页的 onWindowsFocusChanged 方法 上报打点

  • 线下打点:

  • adb 脚本 自动化 统计
    adb shell am start -S -W -R 6 [启动的targetMainActivity]
    WaitTime 返回从 startActivity 到应用第一帧完全显示这段时间. 就是总的耗时,包括前一个应用 Activity pause 的时间和新应用启动的时间;
    ThisTime 表示一连串启动 Activity 的最后一个 Activity 的启动耗时;
    TotalTime 表示新应用启动的耗时,包括新进程的启动和 Activity 的启动,但不包括前一个应用Activity pause的耗时。

找到耗时方法

分析耗时 线下method trace 按照耗时进行排序, 问题在于 method trace 拖慢程序运行,JVM 需要增加 额外的开销,获得的时间不是真正执行的时间,只能获得一个相对耗时排行;

优化启动耗时

分析启动耗时 推动 三方SDK 优化,IM SDK ,直播SDK 延迟初始化等;

设计启动器 解决循环依赖问题

SDK之间的项目依赖 通过 LauncherStarter 启动器框架来解决;

  1. 抽象出来task 定义初始化SDK 依赖关系;
  2. 抽象 有向无环图 并检查是否合法;
  3. 任务调度器 取入度为0的任务交给执行器去执行;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值