应用启动& 应用启动优化

一、了解冷热启动

冷启动:当启动应用时,后台没有该应用的进程(常见如:进程被杀、首次启动等),这时系统会重新创建一个新的进程分配给该应用。

热启动:App进程存在,并且Activity对象仍然存在内存中没有被回收。可以重复避免对象初始化,布局解析绘制。

场景就类似你打开微信聊了一会天这时候出去看了下日历在打开微信微信这时候启动就属于热启动。

二、掌握应用启动流程

在冷启动开始时,系统有三个任务。这三个任务是:

1.创建应用进程。

2.加载并启动应用。

3.在启动后立即显示应用的空白启动窗口然后显示Activity。

应用进程就负责后续阶段:

  1. 创建应用对象。
  2. 启动主线程。
  3. 创建MainActivity。
  4. 加载布局。
  5. 布置屏幕。
  6. 首帧绘制。

三、掌握如何查看应用启动耗时

1、查看Logcat

在Android Studio Logcat中过滤关键字“Displayed”,可以看到对应的冷启动耗时日志。

2、adb shell

使用adb shell获取应用的启动时间

// 其中的AppstartActivity全路径可以省略前面的packageName

adb shell am start -W [packageName]/[AppstartActivity全路径]

执行后会得到三个时间:ThisTime、TotalTime和WaitTime,详情如下:

ThisTime

表示最后一个Activity启动耗时。

TotalTime

表示所有Activity启动耗时。

WaitTime

表示AMS启动Activity的总耗时。

一般来说,只需查看得到的TotalTime,即应用的启动时间,其包括 创建进程 + Application初始化 + Activity初始化到界面显示 的过程。

四、掌握应用启动优化分析思路

启动过程中的常见问题

  • 1、点击图标很久都不响应:预览窗口被禁用或设置为透明。
  • 2、首页显示太慢:初始化任务太多。
  • 3、首页显示后无法进行操作:太多延迟初始化任务占用主线程CPU时间片。

1.冷启动优化之阶段把控

整个冷启动流程中至少有两处onCreate,分别是Application和Activity,onCreate中尽量避免做过多的初始化动作,如果必须,那么考虑IntentService

2.冷启动优化之曲线救国(慎用)

将确实是退出的逻辑替换为按Home键,将冷启动做成热启动的假象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值