深入探究Android应用启动起点
本文作者:yanxin1563 原创 liuwenlong 背景 开发者文档中提到,Android应用有三种启动状态,每种状态都会影响应用向用户显示所需的时间:冷启动、温启动或热启动。三种启动状态中,冷启动耗时最久,系统和App有较多初始化的工作。如果启动时间过长,可能会导致用户在应用商店打低分,甚至完全弃用app,所以冷启动速度是各个app非常重要的性能指标之一。 在冷启动速度优化的工作中,打点是非常重要的一环,统计点位该如何选,以及为什么要这么选,有很多细节值得探究,本文主要深入探究Android端app层如何选择进程创建的起点。 三个时机简述 本文中涉及的3个App层进程创建时间的起点:Application <init>,Process.getStartElapsedRealTime,/proc/self/stats starttime。 简单介绍下3个进程创建时间起点: Application <init>:Application构造方法; Process.getStartElapsedRealTime:Framework中记录的进程创建的起点,此接口有版本限制,Android N以下版本无法使用; /proc/self/stats starttime:内核中记录的进程创建的起点。 3个进程创建时间起点时序如下:/proc/self/stats starttime 早于