ep1介绍了Application启动过慢的原因,本节分析Activity启动过慢的原因,启动速度标准以及工具。
link
启动MainActivity过慢
原因可能有多个,如下图。
- 加载布局
- 加载 Bitmap(引起GC)
- 网络请求
- 读写 User Preference
分析问题
Method tracing tool
Method Tracer 工具被用来查看每个方法的执行时间。
如果onCreate
的执行超过了16ms~30ms,那么它很可能是有问题的。
Inserting Trace Commands
使用trace
来记录开始/截止时间,所记录的时间会显示在Systrace中。
1 | trace.beginSection(); |
造成Activity启动过慢的原因
Complex Layouts
首当其冲的是复杂布局导致加载过慢,布局越复杂,越多的资源文件(图片、主题)需要加载。
解决方法有降低复杂度、使结构扁平化、对于不可见的元素暂时不加载。
懒加载&异步处理
当初始化过程中涉及多个耗时操作,最糟糕的情况是把它们串行起来进行,这会导致每一项操作的延迟被叠加起来,让用户抓狂。
这时应当判断哪些操作是一定要串行进行,哪些是可以异步加载的,从而进行优化。