Android App启动速度

本文详细介绍了Android App的启动类型,包括冷启动、热启动和温启动,并提供了启动时间的本地和线上统计方法。重点讨论了启动优化策略,如Application优化、Activity创建过程优化和主题优化,以及闪屏页的业务优化。此外,还分享了通过开启严苛模式、使用Traceview和抓包工具进行启动耗时排查的方法,以提升App启动速度和用户体验。
摘要由CSDN通过智能技术生成

启动类型

根据官方文档 App startup time https://developer.android.com/topic/performance/vitals/launch-time 描述启动速度分为下面三种类型。

冷启动

经历创建进程、创建 Application,然后启动 MainActivity过程。在完成首帧绘制前, 屏幕会显示一个基于主题的空白背景,首帧绘制完成后,系统会将当前展示的空白背景替换为“MainActivity”的布局。然后用户就可以看到App布局界面了。有以下两点比较重要:

  • 点击Launcher上的应用图标后,首先出现的是系统绘制的window的默认背景,所以启动屏的默认背景是一个需要优化的点.
  • 首帧的绘制时机大概是onWindowFocusChanged方法回调的时候,Activity的onCreate()、onResume() 等生命周期回掉时,view的布局和绘制都还没有开始,此时耗时操作做异步处理很可能造成负优化(线程切换增加耗时,实际上没有延时的效果),最好是在首帧绘制完成的前后异步处理耗时的逻辑。

热启动

后台已有该应用的进程,不需要重新创建Application,这时会从已有的进程来启动Activity。如同冷启动,在这个过程中, 屏幕会显示一个基于主题空白的窗口, 直至Activity渲染完毕。

温启动

温启动的常见场景如下

  • 用户back退出了App,然后又启动, App进程可能还在运行, 但是activity需要重建.
  • 用户退出App后,系统可能由于内存原因将App杀死,进程和activity都需要重启, 但是可以在onCreate中将被动杀死锁保存的状态(saved instance state)恢复.

启动时间统计

本地查看

通过 adb 命令查看
从点击应用的启动图标开始创建出一个新的进程直到我们看到了界面的第一帧,这段时间就是应用的启动时间。测量这段时间可以通过adb shell命令的方式进行测量,这种方法测量的最为精确,命令为:adb shell am start -W [packageName]/[packageName.MainActivity]

adb shell am start -W com.moji.mjweather/com.moji.mjweather.MainActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.moji.mjweather/.MainActivity }
Status: ok
Activity: com.moji.mjweather
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值