先贴上谷歌官方文档地址,英文好的朋友可以直接去看:https://developer.android.com/topic/performance/vitals/launch-time
应用起动时间
用户希望应用程序能够快速响应并快速加载。 启动时间较慢的应用程序无法达到此预期,并且可能会令用户失望。 这种糟糕的体验可能会导致用户在Play商店中对您的应用评分不佳,甚至完全放弃您的应用。
本文档提供的信息可帮助您优化应用的发布时间。 它首先解释了启动过程的内部结构。 接下来,它将讨论如何分析启动性能。 最后,它描述了一些常见的启动时间问题,并提供了一些如何解决它们的提示。
理解应用的启动原理(官方的标题是:Understand app-start internals,internals单词的翻译是内部,个人理解整个标题应该翻译成:理解应用的
启动原理)
应用程序启动可以在三种状态之一中进行,每种状态都会影响应用程序对用户可见所需的时间:冷启动,热启动或热启动。 在冷启动时,您的应用程序从头开始。 在其他状态下,系统需要将您的正在运行的应用程序从后台运行到前台。 我们建议您始终根据冷启动的假设进行优化。 这样做也可以改善热启动和热启动的性能。
为了优化您的应用程序以实现快速启动,了解系统和应用程序级别发生的情况以及它们如何在这些状态中进行交互非常有用。
冷启动
冷启动是指应用程序从头开始:系统的进程在此开始之前没有创建应用程序的进程。 冷启动发生在诸如自设备启动以来首次启动应用程序或自系统终止应用程序以来。 这种类型的启动在最小化启动时间方面提出了最大的挑战,因为系统和应用程序比其他启动状态有更多的工作要做。
在冷启动开始时,系统有三个任务。 这些任务是:
- 加载并启动应用程序。
- 启动后立即显示应用程序的空白启动窗口。
- 创建应用程序进程。
一旦系统创建了应用进程,应用程序就会负责下一阶段的流程
- 创建应用程序对象。
- 启动主线程。
- 创建要启动的activcity。
- 通过LayoutInflater加载View布局。
- 对view进行测量布局。
- 对View进行第一次绘制。
一旦应用程序进程完成第一次绘制后,系统进程会交换当前显示的背景窗口,将其替换为主要活动。 此时,用户可以开始使用该应用程序。
图1显示了系统和应用程序如何处理彼此之间的工作。
图1:冷应用程序启动的重要部分的直观表示
在创建应用程序和创建活动期间可能会出现性能问题。
Application对象的创建(Application creation)
当您的应用程序启动时,空白的启动窗口将保留在屏幕上,直到系统首次完成绘制应用程序。 此时,系统进程会交换应用程序的启动窗口,允许用户开始与应用程序进行交互。
如果您在自己的应用程序中重载了Application.onCreate&