目录

应用启动流程

概述

应用启动是指用户通过入口(如桌面图标、快捷方式等)触发系统拉起应用的过程。在应用模型中,一次典型的应用启动会依次经历进程启动、AbilityStage启动、UIAbility启动三个阶段,并在此过程中触发对应的生命周期回调。理解三者的关系与时序,有助于开发者在正确的时机完成初始化、资源申请与界面加载。

进程、AbilityStage与UIAbility生命周期的关系如下图所示。

阶段 触发时机 主要职责
进程启动 应用首个进程创建时 分配系统资源、创建主线程、加载应用运行环境
AbilityStage启动 HAP首次加载、创建第一个应用组件实例前 Module级初始化,如资源预加载、线程创建、启动框架任务执行
UIAbility启动 创建UIAbility实例并展示 实例级初始化、UI加载、前后台资源申请与释放

启动阶段回调的使用建议

[h2]Module级别初始化(AbilityStage.onCreate)

如概述所述,系统会先创建AbilityStage并执行其onCreate()回调。该回调在每个HAP的生命周期中仅触发一次,适合放置Module级别的初始化逻辑。

建议在此回调中:

不建议在此回调中:

[h2]指定实例模式路由(AbilityStage.onAcceptWant)

当UIAbility指定实例模式(specified)启动时,系统会触发AbilityStage的onAcceptWant()回调,由开发者返回实例标识来决定复用已有UIAbility实例还是创建新实例。

建议在此回调中:

不建议在此回调中:

[h2]UIAbility实例初始化(UIAbility.onCreate)

该回调在UIAbility实例的整个生命周期中仅触发一次,开发者可以在该回调中执行仅发生一次的启动逻辑。

建议在此回调中:

不建议在此回调中:

启动入口

应用的启动入口是指用户进入应用的途径(如桌面图标、快捷方式等)。不同入口在触发UIAbility启动时,系统传入的Want参数(如action、uri、parameters)可能不同,开发者可在UIAbility的onCreate()或onNewWant()中据此区分来源并执行相应逻辑。

应用也可被其他应用通过Want或应用链接拉起,或被系统通过意图框架调度启动。这类跨应用启动场景的详细说明请参见应用间跳转。

[h2]应用图标(桌面图标)

应用图标是应用最常见的启动入口,通常显示在系统桌面上。用户点击桌面图标后,系统会根据module.json5配置文件中声明的入口UIAbility(通常为entry类型HAP中startWindowIcon与label所对应的UIAbility)发起启动。

[h2]快捷方式

快捷方式是指长按应用图标弹出的快捷菜单项,允许用户直接跳转到应用的特定功能页面。开发者可以在module.json5配置文件的shortcuts标签中声明静态快捷方式,或通过shortcutManager接口动态发布快捷方式。

[h2]快捷栏启动

在PC/2in1、Tablet等设备上,用户可将应用固定到快捷栏,点击图标即可快速启动。