Android性能

232 阅读1分钟

业界优秀的平台化实践

Crash收集平台: Bugly:数据采集,上报成功率高;包含Java,Native崩溃。

APM平台: 听云:通用的性能解决方案,数据采集完善,方便接入,但个性化程度低。

应用启动分类:

  1. 冷启动
  2. 热启动
  3. 温启动

测试应用启动时间的命令: 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的方法,实现了监控与业务的分离

异步初始化:

  1. 常规异步
  2. 启动器

延迟初始化:

  1. 常规方法
  2. 结合IdleHandler,系统没有message的时候,再执行。

其他启动速度优化方案:

  1. 提前异步SharedPreferences
  2. 启动阶段不启动子进程
  3. 提前异步类加载