Android APP启动速度优化

使用traceview跟踪启动速度

1.在application的onCreate中添加

2.在首个展示的页面中添加

3.从sdk从获取trace文件并使用android studio打开

call chart图,按调用栈分开

call chart图 , 按调用栈和时序来绘制,适合分析一个流程中的耗时

flame chart 图,调用栈从底部到顶部,一般遇到平顶的情况表示可能有性能问题

flame chart 图 相同调用栈合并,适合看频繁callback导致耗时问题

4.分析call chart图或者flame chart

从call chart图可以看到,每个第一列都是一次主线程的消息循环,

第一次循环回调了Application.oncreate,鼠标移动到目标位置可以看到 Application .onCreate耗时500毫秒

第二次消息循环做了hanldeLunchActivity,耗时1.4秒

第三次消息循环是做了performtraversals ,耗时130毫秒

整个启动时间耗时两秒左右,从这里可以看出 hanldeLunchActivity 和 Application.oncrate是非常耗时的

再分析这两次回调, 可以从下一格图,占用上一格的百分比 看出执行耗时比例。

Application 的创建过程中,基本时间都是消耗在RequestManager.get().init()。这个是需要优化的如图

而回调oncreate的时候有大量的时间消耗在 loopcaculate中

traceview总结

traceview 对性能的消耗比较大,使用的时间并不是实际真正运行的时间,因此,最好是结合systrace一起分析

启动慢的解决办法

1.初始化放到支线程

2.不重要的任务延迟启动,如push处理等

3.使用mmkv代替sharedpreference

4.降低后台任务的线程优先级

5.不在主线程进行binder调用,如广播注册等可以放到支线程