业界优秀的平台化实践
Crash收集平台: Bugly:数据采集,上报成功率高;包含Java,Native崩溃。
APM平台: 听云:通用的性能解决方案,数据采集完善,方便接入,但个性化程度低。
应用启动分类:
- 冷启动
- 热启动
- 温启动
测试应用启动时间的命令:
adb命令
adb shell am start -W packagename/首屏Activity
ThisTime:最后一个Activity启动耗时
TotalTime:所有Activity启动耗时
WaitTime:AMS启动Activity的总耗时
手动打点
启动优化工具的选择 traceview:图像的形式展示执行时间,调用栈等;信息全面,包含所有线程。 使用方式:Debug.startMethodTracing("") / Debug.stopMethodTracing("") 存放位置Android/data/packagename/files
systrace:
使用方式:python systrace.py -t 10 [other-options] [categories]
获取启动阶段所有耗时的方法 实现方式1:手动埋点 long time = System.currentTimeMisllis(); long cost = System.currentTimeMillis() - time; 或System Clock.currentThreadTimeMillis()。
实现方式2:AspectJ
idleHandler:在空闲的时间,再执行任务。
获取方法耗时:AOP的方法,实现了监控与业务的分离
异步初始化:
- 常规异步
- 启动器
延迟初始化:
- 常规方法
- 结合IdleHandler,系统没有message的时候,再执行。
其他启动速度优化方案:
- 提前异步SharedPreferences
- 启动阶段不启动子进程
- 提前异步类加载