这篇文章从干货总量方面不如第一篇,而且一连发了两篇类似文档,总感觉没有进步与新意。但是后来琢磨了一下,这篇质量也不差,APP启动时间也是此次项目我新碰到的一个点,估计也有相当多的同学碰到这个问题。之前并没有太在意这个点,网上也已经有比较好的文章来解决这个问题。但是还是跟第一篇的原因类似,官方的文章还是从原理上分析的比较好, 不仅授之以鱼,还授之以渔 。所以还是想翻过来分享给大家,希望多指教,后面会丰富文章的类型,分享更多更好的文章。
启动时间性能
用户期望应用程序响应速度快,加载速度快。 启动时间较慢的应用程序不满足此预期,可能会令用户失望。 这种糟糕的体验可能会导致用户在应用商店上差评你的应用,甚至完全放弃你的应用。
本文档提供了有助于你优化应用程序启动时间的信息。 它首先解释启动过程的内部。 接下来,它讨论如何配置启动性能。 最后,它描述了一些常见的启动时间问题,并提供了一些提示如何解决。
启动内部
应用程序启动可以在三个状态之一发生,每个状态都会影响应用程序对用户可见所需的时间:冷启动,热启动和温启动。 在冷启动,你的应用程序从头开始。 在其他状态下,系统需要将应用程序从后台运行到前台。 我们建议你总是基于冷启动的假设进行优化。 这样做可以提高热启动和温启动的性能。
为了优化你的应用程序以便快速启动,有必要了解系统和应用程序级别上发生的情况,以及这些状态和在这些状态中的交互方式。
冷启动
冷启动指的是应用程序从头开始:系统中没有你的应用程序进程,直到此开始,才创建了你的应用程序进程。 在应用程序自启动以来第一次启动或系统终止应用程序等情况下会发生冷启动。 这种类型的启动在最小化启动时间方面是最大的挑战,因为系统和应用程序比其他启动状态要做更多的工作。
在冷启动的开始,系统有三个任务。这些任务是:
加载和启动应用程序。
在启动后立即显示应用程序的空白开始窗口。
创建 应用程序进程 。
一旦系统创建应用程序进程,应用程序进程将负责下一阶段。 这些阶段是:
创建应用程序对象
创建主Activity
填充视图
放置屏幕
执行初始绘制
一旦应用进程完成了第一次绘制,系统进程就会替换当前显示的背景窗口,将其替换为主Activity。此时,用户可以开始使用应用程序。
图1显示了系统和应用程序进程如何在彼此之间移交工作。
图1.冷应用程序启动的重要部分的可视化表示。
在创建应用程序和创建activity时可能会出现性能问题。
应