Android 性能优化 - 启动优化

本文详细探讨了Android应用的启动类型及其速度测量方法,包括ADB、代码埋点、TraceView、Systrace等。接着,文章介绍了多种启动优化策略,如延迟初始化、防止主线程阻塞、布局优化,以及使用启动页面防止白屏。此外,还讨论了其他优化技术,如BlockCanary检测卡顿、GC优化、类重排和资源文件重排等,以提升应用的启动性能。
摘要由CSDN通过智能技术生成

1、基础

1.1 启动的类型

首先是启动的三种类型:

  1. 冷启动场景:后台完全没有任何进程的情况下,启动最慢;
  2. 温启动场景:按返回键退回主界面再从主界面打开的情形,较快;
  3. 热启动场景:按 Home 键退回到主界面再从主界面打开的情形,最快。

应用启动的过程实际上也就是 Activity 启动的流程,所以具体涉及的源码不是我们这里的重点,你可以查找 Activity 启动流程相关的文章来了解源码。

其实优化应用的启动速度无非也就是在那几个生命周期方法中进行优化,不做太多耗时操作等:Application 的生命周期和 Activity 的生命周期。

1.2 启动速度的测量

当然,我们而已通过自己的感觉判断启动的快慢,但量化还是非常重要的,不然你都无法向 PM 交差不是。所以,我们有必要了解下 Android 中的启动速度是如何测量的。

方式 1:使用 ADB

获取启动速度的第一种方式是使用 ADB,使用下面的指令的时候在启动应用的时候会使用 AMS 进行统计。但是缺点是统计时间不够准确:

adb shell am start -n {包名}/{包名}.{
   活动名}
方式 2:代码埋点

在 Application 的 attachBaseContext() 方法中记录开始时间,第一个 Activity 的 onWindowFocusChanged() 中记录结束时间。缺点是统计不完全,因为在 attachBaseContext() 之前还有许多操作。

方式 3:TraceView

在 AS 中打开 DDMS,或者到 SDK 安装目录的 tools 目录下面使用 <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值