Android应用优化之冷启动优化

前言

事件发生在发包上线的前两天,在某某云进行移动测试时,提示冷启动速度低于平均值的问题,之前自己也曾尝试过优化,但是发现效果并不是很明显,作为一个有追求的开发者,趁着有点空闲时间,要好好研究一下冷启动优化问题。

App的启动流程

我们可以了解一下官方文档《App startup time》对App启动的描述。应用启动分为冷启动、热启动、温启动。而冷启动是应用程序从零开始,里面涉及到更复杂的知识。我们这次主要是对应用的冷启动进行分析和优化。应用在冷启动的时候,需要执行下面三个任务:

  • 加载和启动应用程序;
  • App启动之后立即展示出一个空白的启动窗口;
  • 创建App程序的进程;

在这三个任务执行后,系统创建了应用进程,那么应用进程会执行下一步:

  • 创建App对象;
  • 启动Main Thread;
  • 创建启动页的Activity;
  • 加载View;
  • 布置屏幕;
  • 进行初始绘制;

当应用进程完成初始绘制之后,系统进程用启动页的Activity来替换当前显示的背景窗口,这个时刻用户就可以使用App了。下图显示为系统和应用程序的工作流程。

图1

从上图和上述的步骤我们可以知道,应用进程的创建,那么它肯定会执行我们的Application的生命周期,当创建完成App的应用进程之后,主线程会初始化我们第一个页面MainActivity与执行MainActivity的生命周期。我特意加粗了重点,这就是我们可以下手优化的部分。在分析如何优化前,我们可以先了解一下,我们的应用是不是需要对冷启动进行优化。

PS:其实这些都是我们表面看到的东西,如果我们需要完整地去深究,我们要去具体分析Zygote Fork进程、ActivityManagerService源码等,我们就不在该篇中详述,给大家推荐相关书籍,有罗升阳的《Android系统源代码情景分析》,刘望舒的《Android进阶解密》。

启动时间检测

那么启动时间多少才是合适呢?在官方文档中描述到当冷启动在5秒或者更长的时,Android vitals就会认为你的应用需要进行冷启动相关的优化。不过Android vitals是针对Google Play的一款应用质量检测工具,那大家都明白,不过你可以像我一样使用阿里云的移动测试,阿里云提供的数据中,冷启动的行业指标中位数是4875.67ms,大家可以酌情对比一下。好了,下面我们就聊一下如果检测出我们应用的冷启动时间。

Displayed Time

如上图一显示的Displayed Time,在Android 4.4(API级别19)及更高版本中,logcat包含一个名为Displayed的log信息,此值表示启

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值