App性能优化——冷/热启动

启动方式:

通常来说,在安卓中应用的启动方式分为两种:冷启动和热启动。

1、冷启动:当启动应用时。后台没有该应用的进程,这时系统会 又一次创建一个新的进程分配给该应用,这个启动方式就是冷启动。

2、热启动:当启动应用时,后台已有该应用的进程(例:按 back 键、home 键,应用尽管会退出,可是该应用的进程是依旧会保留 在后台,可进入任务列表查看)。所以在已有进程的情况下。这样 的启动会从已有的进程中来启动应用。这个方式叫热启动。

特点

1、冷启动:冷启动由于系统会又一次创建一个新的进程分配给它。所以会先创 建和初始化 Application 类,再创建和初始化 MainActivity 类(包含一系列的測 量、布局、绘制),最后显示在界面上。

2、热启动:热启动由于会从已有的进程中来启动,所以热启动就不会走 Application 这步了,而是直接走 MainActivity(包含一系列的測量、布局、绘制)。 所以热启动的过程仅仅须要创建和初始化一个 MainActivity 即可了。而不必创建和初始化 Application,由于一个应用从新进程的创建到进程的销毁。Application 仅仅会初始化一次。

上面说的启动是点击 app 的启动图标来启动的。而第二种方式是进入近期使用的列表界面来启动应用,这样的不应该叫启动,应该叫恢复。

应用启动的流程

在安卓系统上,应用在没有进程的情况下,应用的启动都是这样一个流程:当点 击 app 的启动图标时。安卓系统会从 Zygote 进程中 fork 创建出一个新的进程分 配给该应用。之后会依次创建和初始化 Application 类、创建 MainActivity 类、 载入主题样式 Theme 中的 windowBackground 等属性设置给 MainActivity 以及 配置 Activity 层级上的一些属性、再 inflate 布局、当 onCreate/onStart/onResume 方法都走完了后最后才进行 contentView 的 measure/layout/draw 显示在界面 上,所以直到这里,应用的第一次启动才算完毕,这时候我们看到的界面也就是 所说的第一帧。

所以,总结一下,应用的启动流程例如以下:
Application 的构造器方法 ——>attachBaseContext()——>onCreate()——>Activity 的构造 方法——>onCreate()——>配置主题中背景等属性 ——>onStart()——>onResume()——>測量布局绘制显示在界面上。

測量应用启动的时间

冷启动

adb shell am start -W -n [PackageName]/.BrowserActivity

冷启动停止APP

adb shell am force-stop [packageName]

热启动

adb shell am start -W -n [PackageName]/.BrowserActivity

热启动停止APP

adb shell input keyevent 3
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值