导读
性能优化一直都是各个APP推进中的重点、难点,爱奇艺 App也不例外。在此之前,爱奇艺App Android 版的启动速度虽然一直处于同类App领先的水平,但优势距离其他同类的APP距离一直很小。面对这一瓶颈,爱奇艺技术产品团队为爱奇艺App的启动优化搭建了专项团队。在各个团队的大力支持下,将启动时间由1.5s优化到了0.5s,实现了巨大跨越,下文将分享爱奇艺App启动的优化实践。
本文长度为2914字,预估阅读时间8分钟。
凡事预则立,不预则废
关于App 的启动优化, 大部分的技术同学第一反应是延迟执行任务,再通过做一些代码实现上的优化来提高代码的执行效率。爱奇艺App 早期的优化策略也是如此:将某些启动阶段不必要执行的任务延迟到首页某个生命周期之后再执行,或是延迟固定时间之后再执行等等。
这一优化策略在前期的确有一些效果,但是后来就收益甚微了。爱奇艺App(Android)经过多年的稳定迭代, 功能不断丰富,代码量也越来越庞大。启动阶段涉及了很多业务的初始化功能,业务之间又有着复杂的依赖关系,轻易变更代码执行时序可能会导致崩溃或者某些业务异常。之前简单的延迟优化策略已经很难再取得收益,一种全新的优化方案已经迫在眉睫。
工欲善其事,必先利其器
有没有一种工具能直接看到当前任务执行的瓶颈呢?做过Android性能优化的同学应该都会比较熟悉Systrace和 TraceView这两款工具。但是这还不够,我们需要一款更为直观、便捷的工具。它能够把启动阶段代码执行的先后顺序、时间间隔、线程情况以及代码位置等信息直观的展示出来,让我们能一眼看出某一阶段的任务调度是否合理,然后再根据实际情况进一步做有针对性的优化。
但到目前为止,我们尚未发现业内有满足此需求的现成工具。然而在一年前,我们团队自主开发了一款Lens开发调试工具,它能够以SDK的形式接入任意的Android 应用程序,可以提供任务分析、网络分析(抓包)、页面分析(视图拾取、视图层级等)、沙盒访问、快捷入口等等功能。于是我们团队经过讨论,决定用Lens来实现任务分析的功能,这样既能完成启动优化,又能进一步完善Lens的功能。经过我们团