Skip to content

Application 生命周期 ​

HarmonyOS 应用从启动到销毁的完整生命周期。


1. 应用层级结构 ​

Application(应用)
    ↓
AbilityStage(Ability 阶段)
    ↓
UIAbility(UI 应用组件)
    ↓
ExtensionAbility(扩展组件)

2. Application 生命周期 ​

2.1 Application 的职责 ​

Application 是应用的全局入口,管理应用级的全局数据和状态。

typescript
// entry/src/main/ets/application/Application.ets
import { UIAbility, Want } from '@kit.AbilityKit'

class MyApplication extends UIAbility {
    // 应用创建时调用
    onCreate(want: Want): void {
        console.log('Application onCreate')
        // 初始化全局资源
    }

    // 应用销毁时调用
    onDestroy(): void {
        console.log('Application onDestroy')
        // 清理全局资源
    }

    // 应用进入前台
    onWindowStageCreate(windowStage: window.WindowStage): void {
        console.log('Application onWindowStageCreate')
    }

    // 应用进入后台
    onWindowStageDestroy(): void {
        console.log('Application onWindowStageDestroy')
    }
}

export default new MyApplication()

2.2 Application 生命周期方法 ​

方法触发时机
onCreate(want)应用创建时
onDestroy()应用销毁时
onWindowStageCreate(windowStage)第一个窗口阶段创建时
onWindowStageDestroy()最后一个窗口阶段销毁时

3. AbilityStage 生命周期 ​

3.1 AbilityStage 的职责 ​

AbilityStage 管理同一 HAP 包中所有 Ability 的共享数据。

typescript
// entry/src/main/ets/application/AbilityStage.ets
import { UIAbility } from '@kit.AbilityKit'

class MyAbilityStage extends UIAbility {
    // 模块首次加载时调用
    onCreate(): void {
        console.log('AbilityStage onCreate')
        // 初始化模块级共享数据
    }

    onDestroy(): void {
        console.log('AbilityStage onDestroy')
    }
}

export default new MyAbilityStage()

3.2 AbilityStage vs Application ​

特性AbilityStageApplication
作用域HAP 包内所有 Ability整个应用
创建时机模块首次加载应用启动
共享范围同一 HAP 包全局

4. 生命周期时序 ​

用户点击应用图标
    ↓
Application.onCreate()
    ↓
AbilityStage.onCreate()
    ↓
UIAbility.onCreate()
    ↓
UIAbility.onWindowStageCreate()
    ↓
UIAbility.onForeground()  ← 应用进入前台
    ↓
UIAbility.onBackground()  ← 应用进入后台
    ↓
UIAbility.onWindowStageDestroy()
    ↓
UIAbility.onDestroy()
    ↓
AbilityStage.onDestroy()
    ↓
Application.onDestroy()

5. 面试高频考点 ​

Q1: Application 的生命周期方法? ​

回答:onCreate(创建)、onDestroy(销毁)、onWindowStageCreate(窗口创建)、onWindowStageDestroy(窗口销毁)。

Q2: AbilityStage vs Application 的区别? ​

回答:AbilityStage 管理同一 HAP 包内所有 Ability 的共享数据(模块级),Application 管理整个应用的全局数据(应用级)。


🐱 小猫提示:Application 生命周期记住 "onCreate → onWindowStageCreate → onForeground → onBackground → onWindowStageDestroy → onDestroy"。